@samitouri / QOS-React / commits / 8482cbe22d

Automated fixture tests (#14370)

* Renamed snapshot test from test.js to snapshot-test.js * Automate fixtures tests

Brian Vaughn committed Dec 2, 2018 at 11:25 UTC 8482cbe22d1a421b73db602e1f470c632b09f693
13 files changed +695 -17
fixtures/tracing/index.html
+12 -1
@@ -46,7 +46,7 @@
46 </p>
47 <h3>
48 Tests
49 - <button onClick="runAllTests()">Run all tests</button>
49 + <button id="run-test-button" onClick="runAllTests()">Run all tests</button>
50 </h3>
51 <ol>
52 <li id="checkSchedulerAPI" data-value="...">
@@ -62,6 +62,17 @@
62 <strong>Test end-to-end integration</strong>
63 </li>
64 </ol>
65 +
66 + <script>
67 + if (window.location.search.includes('puppeteer=true')) {
68 + // Colocated calls to performance.now() often yield differen values in Puppeteer.
69 + // This causes the Scheduler API test to fail.
70 + // For the purposes of our automated release scripts,
71 + // Coerce tests to use Date.now() instead to reduce the chances of a false positive.
72 + window.performance = {now: Date.now};
73 + }
74 + </script>
75 +
76 <!-- Load the tracing API before react to test that it's lazily evaluated -->
77 <script src="../../build/node_modules/scheduler/umd/scheduler.development.js"></script>
78 <script src="../../build/node_modules/scheduler/umd/scheduler-tracing.development.js"></script>
scripts/release/package.json
+2
@@ -17,6 +17,8 @@
17 "log-update": "^2.1.0",
18 "progress-estimator": "^0.2.1",
19 "prompt-promise": "^1.0.3",
20 + "puppeteer": "^1.11.0",
21 + "pushstate-server": "^3.0.1",
22 "request-promise-json": "^1.0.4",
23 "semver": "^5.4.1"
24 }
scripts/release/prepare-canary-commands/parse-params.js
+6
@@ -11,6 +11,12 @@ const paramDefinitions = [
11 description:
12 'Circle CI build identifier (e.g. https://circleci.com/gh/facebook/react/<build>)',
13 },
14 + {
15 + name: 'skipTests',
16 + type: Boolean,
17 + description: 'Skip automated fixture tests.',
18 + defaultValue: false,
19 + },
20 ];
21
22 module.exports = () => {
scripts/release/prepare-canary.js
+8
@@ -10,6 +10,8 @@ const downloadBuildArtifacts = require('./prepare-canary-commands/download-build
10 const getLatestMasterBuildNumber = require('./prepare-canary-commands/get-latest-master-build-number');
11 const parseParams = require('./prepare-canary-commands/parse-params');
12 const printPrereleaseSummary = require('./shared-commands/print-prerelease-summary');
13 +const testPackagingFixture = require('./shared-commands/test-packaging-fixture');
14 +const testSchedulerFixture = require('./shared-commands/test-scheduler-fixture');
15
16 const run = async () => {
17 try {
@@ -23,6 +25,12 @@ const run = async () => {
25
26 await checkEnvironmentVariables(params);
27 await downloadBuildArtifacts(params);
28 +
29 + if (!params.skipTests) {
30 + await testPackagingFixture(params);
31 + await testSchedulerFixture(params);
32 + }
33 +
34 await printPrereleaseSummary(params);
35 } catch (error) {
36 handleError(error);
scripts/release/prepare-stable-commands/parse-params.js
+6
@@ -13,6 +13,12 @@ const paramDefinitions = [
13 'Skip NPM and use the build already present in "build/node_modules".',
14 defaultValue: false,
15 },
16 + {
17 + name: 'skipTests',
18 + type: Boolean,
19 + description: 'Skip automated fixture tests.',
20 + defaultValue: false,
21 + },
22 {
23 name: 'version',
24 type: String,
scripts/release/prepare-stable-commands/update-stable-version-numbers.js
+2
@@ -170,6 +170,8 @@ const run = async ({cwd, packages, version}, versionsMap) => {
170 theme`A full diff is available at {path ${relative(cwd, diffPath)}}.`
171 );
172 await confirm('Do the changes above look correct?');
173 +
174 + clear();
175 };
176
177 // Run this directly because logPromise would interfere with printing package dependencies.
scripts/release/prepare-stable.js
+8
@@ -10,6 +10,8 @@ const confirmStableVersionNumbers = require('./prepare-stable-commands/confirm-s
10 const guessStableVersionNumbers = require('./prepare-stable-commands/guess-stable-version-numbers');
11 const parseParams = require('./prepare-stable-commands/parse-params');
12 const printPrereleaseSummary = require('./shared-commands/print-prerelease-summary');
13 +const testPackagingFixture = require('./shared-commands/test-packaging-fixture');
14 +const testSchedulerFixture = require('./shared-commands/test-scheduler-fixture');
15 const updateStableVersionNumbers = require('./prepare-stable-commands/update-stable-version-numbers');
16
17 const run = async () => {
@@ -27,6 +29,12 @@ const run = async () => {
29 await guessStableVersionNumbers(params, versionsMap);
30 await confirmStableVersionNumbers(params, versionsMap);
31 await updateStableVersionNumbers(params, versionsMap);
32 +
33 + if (!params.skipTests) {
34 + await testPackagingFixture(params);
35 + await testSchedulerFixture(params);
36 + }
37 +
38 await printPrereleaseSummary(params);
39 } catch (error) {
40 handleError(error);
scripts/release/shared-commands/print-prerelease-summary.js
+1 -8
@@ -22,14 +22,7 @@ module.exports = ({cwd}) => {
22
23 {header Before publishing, please smoke test the packages!}
24
25 - 1. Open {path ./fixtures/packaging/babel-standalone/dev.html} in the browser.
26 - 2. It should say {quote "Hello world!"}
27 - 3. Next go to {path ./fixtures/packaging} and run {command node build-all.js}
28 - 4. Go to the repo root and {command npx pushstate-server . 9000}
29 - 5. Open {link http://localhost:9000/fixtures/packaging}
30 - 6. Verify every iframe shows {quote "Hello world!"}
31 -
32 - After completing the above steps, you can publish this release by running:
25 + Once you have finished smoke testing, you can publish this release by running:
26 {path ${publishPath}}
27 `
28 .replace(/\n +/g, '\n')
scripts/release/shared-commands/test-packaging-fixture.js new
+74
@@ -0,0 +1,74 @@
1 +#!/usr/bin/env node
2 +
3 +'use strict';
4 +
5 +const {exec} = require('child-process-promise');
6 +const {join} = require('path');
7 +const puppeteer = require('puppeteer');
8 +const server = require('pushstate-server');
9 +const theme = require('../theme');
10 +const {logPromise} = require('../utils');
11 +
12 +const validate = async () => {
13 + const browser = await puppeteer.launch();
14 + const page = await browser.newPage();
15 +
16 + await page.goto('http://localhost:9000/fixtures/packaging');
17 +
18 + try {
19 + return await page.evaluate(() => {
20 + const iframes = document.querySelectorAll('iframe');
21 +
22 + if (iframes.length === 0) {
23 + return 'No iframes were found.';
24 + }
25 +
26 + for (let i = 0; i < iframes.length; i++) {
27 + const iframe = iframes[i];
28 + // Don't include the <script> Babel tag
29 + const container = iframe.contentDocument.body.getElementsByTagName(
30 + 'div'
31 + )[0];
32 + if (container.textContent !== 'Hello World!') {
33 + return `Unexpected fixture content, "${container.textContent}"`;
34 + }
35 + }
36 +
37 + return null;
38 + });
39 + } finally {
40 + await browser.close();
41 + }
42 +};
43 +
44 +const run = async ({cwd}) => {
45 + await logPromise(
46 + exec('node build-all.js', {cwd: join(cwd, 'fixtures/packaging')}),
47 + 'Generating "packaging" fixture',
48 + 20000 // This takes roughly 20 seconds
49 + );
50 +
51 + let errorMessage;
52 + let response;
53 +
54 + try {
55 + response = server.start({
56 + port: 9000,
57 + directory: cwd,
58 + });
59 +
60 + errorMessage = await logPromise(
61 + validate(),
62 + 'Verifying "packaging" fixture'
63 + );
64 + } finally {
65 + response.close();
66 + }
67 +
68 + if (errorMessage) {
69 + console.error(theme.error(errorMessage));
70 + process.exit(1);
71 + }
72 +};
73 +
74 +module.exports = run;
scripts/release/shared-commands/test-scheduler-fixture.js new
+54
@@ -0,0 +1,54 @@
1 +#!/usr/bin/env node
2 +
3 +'use strict';
4 +
5 +const {join} = require('path');
6 +const puppeteer = require('puppeteer');
7 +const theme = require('../theme');
8 +const {logPromise} = require('../utils');
9 +
10 +const validate = async ({cwd}) => {
11 + const browser = await puppeteer.launch();
12 + const page = await browser.newPage();
13 +
14 + await page.goto(
15 + 'file://' + join(cwd, 'fixtures/tracing/index.html?puppeteer=true')
16 + );
17 +
18 + try {
19 + return await page.evaluate(() => {
20 + const button = document.getElementById('run-test-button');
21 + button.click();
22 +
23 + const items = document.querySelectorAll('[data-value]');
24 +
25 + if (items.length === 0) {
26 + return 'No results were found.';
27 + }
28 +
29 + for (let i = 0; i < items.length; i++) {
30 + const item = items[i];
31 + if (item.getAttribute('data-value') !== 'All checks pass') {
32 + return `Unexpected result, "${item.getAttribute('data-value')}"`;
33 + }
34 + }
35 +
36 + return null;
37 + });
38 + } finally {
39 + await browser.close();
40 + }
41 +};
42 +
43 +const run = async ({cwd}) => {
44 + const errorMessage = await logPromise(
45 + validate({cwd}),
46 + 'Verifying "scheduler" fixture'
47 + );
48 + if (errorMessage) {
49 + console.error(theme.error(errorMessage));
50 + process.exit(1);
51 + }
52 +};
53 +
54 +module.exports = run;
scripts/release/snapshot-test.js renamed
+11 -5
@@ -61,19 +61,25 @@ const run = async () => {
61 await promise;
62
63 const beforeContents = readFileSync(
64 - join(cwd, 'scripts/release/test.snapshot'),
64 + join(cwd, 'scripts/release/snapshot-test.snapshot'),
65 'utf-8'
66 );
67 - await exec('cp build/temp.diff scripts/release/test.snapshot', {cwd});
67 + await exec('cp build/temp.diff scripts/release/snapshot-test.snapshot', {
68 + cwd,
69 + });
70 const afterContents = readFileSync(
69 - join(cwd, 'scripts/release/test.snapshot'),
71 + join(cwd, 'scripts/release/snapshot-test.snapshot'),
72 'utf-8'
73 );
74
75 if (beforeContents === afterContents) {
76 console.log(theme.header`Snapshot test passed.`);
77 } else {
76 - printDiff('scripts/release/test.snapshot', beforeContents, afterContents);
78 + printDiff(
79 + 'scripts/release/snapshot-test.snapshot',
80 + beforeContents,
81 + afterContents
82 + );
83 console.log();
84 console.error(theme.error('Snapshot test failed!'));
85 console.log();
@@ -81,7 +87,7 @@ const run = async () => {
87 'If this failure was expected, please update the contents of the snapshot file:'
88 );
89 console.log(
84 - theme` {command git add} {path scripts/release/test.snapshot}`
90 + theme` {command git add} {path scripts/release/snapshot-test.snapshot}`
91 );
92 console.log(
93 theme` {command git commit -m "Updating release script snapshot file."}`
scripts/release/snapshot-test.snapshot renamed
scripts/release/yarn.lock
+511 -3
@@ -2,6 +2,21 @@
2 # yarn lockfile v1
3
4
5 +accepts@^1.2.5, accepts@~1.3.3:
6 + version "1.3.5"
7 + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
8 + integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
9 + dependencies:
10 + mime-types "~2.1.18"
11 + negotiator "0.6.1"
12 +
13 +agent-base@^4.1.0:
14 + version "4.2.1"
15 + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
16 + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
17 + dependencies:
18 + es6-promisify "^5.0.0"
19 +
20 ajv@^5.1.0:
21 version "5.2.3"
22 resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2"
@@ -63,6 +78,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
78 version "1.0.0"
79 resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
80
81 +async-limiter@~1.0.0:
82 + version "1.0.0"
83 + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
84 + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
85 +
86 asynckit@^0.4.0:
87 version "0.4.0"
88 resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -106,6 +126,16 @@ brace-expansion@^1.1.7:
126 balanced-match "^1.0.0"
127 concat-map "0.0.1"
128
129 +buffer-from@^1.0.0:
130 + version "1.1.1"
131 + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
132 + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
133 +
134 +bytes@2.5.0:
135 + version "2.5.0"
136 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a"
137 + integrity sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo=
138 +
139 caseless@~0.12.0:
140 version "0.12.0"
141 resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -192,12 +222,61 @@ command-line-usage@^4.0.1:
222 table-layout "^0.4.1"
223 typical "^2.6.1"
224
225 +compressible@~2.0.10:
226 + version "2.0.15"
227 + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212"
228 + integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==
229 + dependencies:
230 + mime-db ">= 1.36.0 < 2"
231 +
232 +compression@1.7.0:
233 + version "1.7.0"
234 + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.0.tgz#030c9f198f1643a057d776a738e922da4373012d"
235 + integrity sha1-AwyfGY8WQ6BX13anOOki2kNzAS0=
236 + dependencies:
237 + accepts "~1.3.3"
238 + bytes "2.5.0"
239 + compressible "~2.0.10"
240 + debug "2.6.8"
241 + on-headers "~1.0.1"
242 + safe-buffer "5.1.1"
243 + vary "~1.1.1"
244 +
245 concat-map@0.0.1:
246 version "0.0.1"
247 resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
248 integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
249
200 -core-util-is@1.0.2:
250 +concat-stream@1.6.2:
251 + version "1.6.2"
252 + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
253 + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
254 + dependencies:
255 + buffer-from "^1.0.0"
256 + inherits "^2.0.3"
257 + readable-stream "^2.2.2"
258 + typedarray "^0.0.6"
259 +
260 +connect-static-file@1.2.0:
261 + version "1.2.0"
262 + resolved "https://registry.yarnpkg.com/connect-static-file/-/connect-static-file-1.2.0.tgz#ad7c2ce423acf0808b15a18ad3268035098e3747"
263 + integrity sha1-rXws5COs8ICLFaGK0yaANQmON0c=
264 + dependencies:
265 + accepts "^1.2.5"
266 + mime "^1.3.4"
267 + send "^0.15.3"
268 +
269 +connect@3.6.2:
270 + version "3.6.2"
271 + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.2.tgz#694e8d20681bfe490282c8ab886be98f09f42fe7"
272 + integrity sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=
273 + dependencies:
274 + debug "2.6.7"
275 + finalhandler "1.0.3"
276 + parseurl "~1.3.1"
277 + utils-merge "1.0.0"
278 +
279 +core-util-is@1.0.2, core-util-is@~1.0.0:
280 version "1.0.2"
281 resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
282
@@ -220,6 +299,27 @@ dashdash@^1.12.0:
299 dependencies:
300 assert-plus "^1.0.0"
301
302 +debug@2.6.7:
303 + version "2.6.7"
304 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
305 + integrity sha1-krrR9tBbu2u6Isyoi80OyJTChh4=
306 + dependencies:
307 + ms "2.0.0"
308 +
309 +debug@2.6.8:
310 + version "2.6.8"
311 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
312 + integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=
313 + dependencies:
314 + ms "2.0.0"
315 +
316 +debug@2.6.9:
317 + version "2.6.9"
318 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
319 + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
320 + dependencies:
321 + ms "2.0.0"
322 +
323 debug@^3.1.0:
324 version "3.2.6"
325 resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -227,6 +327,13 @@ debug@^3.1.0:
327 dependencies:
328 ms "^2.1.1"
329
330 +debug@^4.1.0:
331 + version "4.1.0"
332 + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
333 + integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==
334 + dependencies:
335 + ms "^2.1.1"
336 +
337 deep-extend@~0.5.0:
338 version "0.5.0"
339 resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.0.tgz#6ef4a09b05f98b0e358d6d93d4ca3caec6672803"
@@ -235,6 +342,16 @@ delayed-stream@~1.0.0:
342 version "1.0.0"
343 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
344
345 +depd@~1.1.0, depd@~1.1.1, depd@~1.1.2:
346 + version "1.1.2"
347 + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
348 + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
349 +
350 +destroy@~1.0.4:
351 + version "1.0.4"
352 + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
353 + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
354 +
355 diff@^3.5.0:
356 version "3.5.0"
357 resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
@@ -246,14 +363,56 @@ ecc-jsbn@~0.1.1:
363 dependencies:
364 jsbn "~0.1.0"
365
366 +ee-first@1.1.1:
367 + version "1.1.1"
368 + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
369 + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
370 +
371 +encodeurl@~1.0.1:
372 + version "1.0.2"
373 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
374 + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
375 +
376 +es6-promise@^4.0.3:
377 + version "4.2.5"
378 + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
379 + integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==
380 +
381 +es6-promisify@^5.0.0:
382 + version "5.0.0"
383 + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
384 + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
385 + dependencies:
386 + es6-promise "^4.0.3"
387 +
388 +escape-html@~1.0.3:
389 + version "1.0.3"
390 + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
391 + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
392 +
393 escape-string-regexp@^1.0.5:
394 version "1.0.5"
395 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
396
397 +etag@~1.8.0, etag@~1.8.1:
398 + version "1.8.1"
399 + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
400 + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
401 +
402 extend@~3.0.1:
403 version "3.0.1"
404 resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
405
406 +extract-zip@^1.6.6:
407 + version "1.6.7"
408 + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
409 + integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=
410 + dependencies:
411 + concat-stream "1.6.2"
412 + debug "2.6.9"
413 + mkdirp "0.5.1"
414 + yauzl "2.4.1"
415 +
416 extsprintf@1.3.0, extsprintf@^1.2.0:
417 version "1.3.0"
418 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -262,6 +421,26 @@ fast-deep-equal@^1.0.0:
421 version "1.0.0"
422 resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
423
424 +fd-slicer@~1.0.1:
425 + version "1.0.1"
426 + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
427 + integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=
428 + dependencies:
429 + pend "~1.2.0"
430 +
431 +finalhandler@1.0.3:
432 + version "1.0.3"
433 + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89"
434 + integrity sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=
435 + dependencies:
436 + debug "2.6.7"
437 + encodeurl "~1.0.1"
438 + escape-html "~1.0.3"
439 + on-finished "~2.3.0"
440 + parseurl "~1.3.1"
441 + statuses "~1.3.1"
442 + unpipe "~1.0.0"
443 +
444 find-replace@^1.0.3:
445 version "1.0.3"
446 resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0"
@@ -290,6 +469,16 @@ form-data@~2.3.1:
469 combined-stream "^1.0.5"
470 mime-types "^2.1.12"
471
472 +fresh@0.5.0:
473 + version "0.5.0"
474 + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e"
475 + integrity sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=
476 +
477 +fresh@0.5.2:
478 + version "0.5.2"
479 + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
480 + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
481 +
482 fs-extra@^4.0.2:
483 version "4.0.2"
484 resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
@@ -298,12 +487,29 @@ fs-extra@^4.0.2:
487 jsonfile "^4.0.0"
488 universalify "^0.1.0"
489
490 +fs.realpath@^1.0.0:
491 + version "1.0.0"
492 + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
493 + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
494 +
495 getpass@^0.1.1:
496 version "0.1.7"
497 resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
498 dependencies:
499 assert-plus "^1.0.0"
500
501 +glob@^7.0.5:
502 + version "7.1.3"
503 + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
504 + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
505 + dependencies:
506 + fs.realpath "^1.0.0"
507 + inflight "^1.0.4"
508 + inherits "2"
509 + minimatch "^3.0.4"
510 + once "^1.3.0"
511 + path-is-absolute "^1.0.0"
512 +
513 graceful-fs@^4.1.2, graceful-fs@^4.1.6:
514 version "4.1.11"
515 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@@ -346,6 +552,16 @@ hoek@4.x.x:
552 version "4.2.0"
553 resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
554
555 +http-errors@~1.6.1, http-errors@~1.6.2:
556 + version "1.6.3"
557 + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
558 + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
559 + dependencies:
560 + depd "~1.1.2"
561 + inherits "2.0.3"
562 + setprototypeof "1.1.0"
563 + statuses ">= 1.4.0 < 2"
564 +
565 http-signature@~1.2.0:
566 version "1.2.0"
567 resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
@@ -354,11 +570,32 @@ http-signature@~1.2.0:
570 jsprim "^1.2.2"
571 sshpk "^1.7.0"
572
573 +https-proxy-agent@^2.2.1:
574 + version "2.2.1"
575 + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0"
576 + integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==
577 + dependencies:
578 + agent-base "^4.1.0"
579 + debug "^3.1.0"
580 +
581 humanize-duration@^3.15.3:
582 version "3.15.3"
583 resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.15.3.tgz#600a939bd9d9a16b696e907b3fc08d1a4f15e8c9"
584 integrity sha512-BMz6w8p3NVa6QP9wDtqUkXfwgBqDaZ5z/np0EYdoWrLqL849Onp6JWMXMhbHtuvO9jUThLN5H1ThRQ8dUWnYkA==
585
586 +inflight@^1.0.4:
587 + version "1.0.6"
588 + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
589 + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
590 + dependencies:
591 + once "^1.3.0"
592 + wrappy "1"
593 +
594 +inherits@2, inherits@2.0.3, inherits@^2.0.3, inherits@~2.0.3:
595 + version "2.0.3"
596 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
597 + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
598 +
599 is-fullwidth-code-point@^2.0.0:
600 version "2.0.0"
601 resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -367,6 +604,11 @@ is-typedarray@~1.0.0:
604 version "1.0.0"
605 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
606
607 +isarray@~1.0.0:
608 + version "1.0.0"
609 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
610 + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
611 +
612 isexe@^2.0.0:
613 version "2.0.0"
614 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -448,6 +690,11 @@ lru-cache@^4.0.1:
690 pseudomap "^1.0.2"
691 yallist "^2.1.2"
692
693 +"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0:
694 + version "1.37.0"
695 + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
696 + integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
697 +
698 mime-db@~1.30.0:
699 version "1.30.0"
700 resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
@@ -458,17 +705,56 @@ mime-types@^2.1.12, mime-types@~2.1.17:
705 dependencies:
706 mime-db "~1.30.0"
707
708 +mime-types@~2.1.18:
709 + version "2.1.21"
710 + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
711 + integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
712 + dependencies:
713 + mime-db "~1.37.0"
714 +
715 +mime@1.3.4:
716 + version "1.3.4"
717 + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
718 + integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=
719 +
720 +mime@^1.3.4:
721 + version "1.6.0"
722 + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
723 + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
724 +
725 +mime@^2.0.3:
726 + version "2.4.0"
727 + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
728 + integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
729 +
730 mimic-fn@^1.0.0:
731 version "1.1.0"
732 resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
733
465 -minimatch@~3.0.4:
734 +minimatch@^3.0.4, minimatch@~3.0.4:
735 version "3.0.4"
736 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
737 integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
738 dependencies:
739 brace-expansion "^1.1.7"
740
741 +minimist@0.0.8:
742 + version "0.0.8"
743 + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
744 + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
745 +
746 +mkdirp@0.5.1:
747 + version "0.5.1"
748 + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
749 + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
750 + dependencies:
751 + minimist "0.0.8"
752 +
753 +ms@2.0.0:
754 + version "2.0.0"
755 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
756 + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
757 +
758 ms@^2.1.1:
759 version "2.1.1"
760 resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
@@ -484,6 +770,11 @@ native-or-bluebird@^1.1.2:
770 version "1.2.0"
771 resolved "https://registry.yarnpkg.com/native-or-bluebird/-/native-or-bluebird-1.2.0.tgz#39c47bfd7825d1fb9ffad32210ae25daadf101c9"
772
773 +negotiator@0.6.1:
774 + version "0.6.1"
775 + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
776 + integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
777 +
778 node-version@^1.0.0:
779 version "1.1.0"
780 resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.0.tgz#f437d7ba407e65e2c4eaef8887b1718ba523d4f0"
@@ -492,16 +783,55 @@ oauth-sign@~0.8.2:
783 version "0.8.2"
784 resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
785
786 +on-finished@~2.3.0:
787 + version "2.3.0"
788 + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
789 + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
790 + dependencies:
791 + ee-first "1.1.1"
792 +
793 +on-headers@~1.0.1:
794 + version "1.0.1"
795 + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
796 + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=
797 +
798 +once@^1.3.0:
799 + version "1.4.0"
800 + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
801 + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
802 + dependencies:
803 + wrappy "1"
804 +
805 onetime@^2.0.0:
806 version "2.0.1"
807 resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
808 dependencies:
809 mimic-fn "^1.0.0"
810
811 +parseurl@~1.3.1:
812 + version "1.3.2"
813 + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
814 + integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
815 +
816 +path-is-absolute@^1.0.0:
817 + version "1.0.1"
818 + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
819 + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
820 +
821 +pend@~1.2.0:
822 + version "1.2.0"
823 + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
824 + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
825 +
826 performance-now@^2.1.0:
827 version "2.1.0"
828 resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
829
830 +process-nextick-args@~2.0.0:
831 + version "2.0.0"
832 + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
833 + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
834 +
835 progress-estimator@^0.2.1:
836 version "0.2.1"
837 resolved "https://registry.yarnpkg.com/progress-estimator/-/progress-estimator-0.2.1.tgz#deae08447fd858a0bf6a1067c4fbac1b4dad3cb0"
@@ -512,6 +842,11 @@ progress-estimator@^0.2.1:
842 humanize-duration "^3.15.3"
843 log-update "^2.3.0"
844
845 +progress@^2.0.1:
846 + version "2.0.1"
847 + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31"
848 + integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==
849 +
850 promise-polyfill@^6.0.1:
851 version "6.0.2"
852 resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.0.2.tgz#d9c86d3dc4dc2df9016e88946defd69b49b41162"
@@ -523,6 +858,11 @@ prompt-promise@^1.0.3:
858 keypress "~0.2.1"
859 native-or-another "~2.0.0"
860
861 +proxy-from-env@^1.0.0:
862 + version "1.0.0"
863 + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
864 + integrity sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=
865 +
866 pseudomap@^1.0.2:
867 version "1.0.2"
868 resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
@@ -531,6 +871,30 @@ punycode@^1.4.1:
871 version "1.4.1"
872 resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
873
874 +puppeteer@^1.11.0:
875 + version "1.11.0"
876 + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770"
877 + integrity sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==
878 + dependencies:
879 + debug "^4.1.0"
880 + extract-zip "^1.6.6"
881 + https-proxy-agent "^2.2.1"
882 + mime "^2.0.3"
883 + progress "^2.0.1"
884 + proxy-from-env "^1.0.0"
885 + rimraf "^2.6.1"
886 + ws "^6.1.0"
887 +
888 +pushstate-server@^3.0.1:
889 + version "3.0.1"
890 + resolved "https://registry.yarnpkg.com/pushstate-server/-/pushstate-server-3.0.1.tgz#b108b867c9c069192e2fe5b47efdf6c76de7d6ad"
891 + integrity sha1-sQi4Z8nAaRkuL+W0fv32x23n1q0=
892 + dependencies:
893 + compression "1.7.0"
894 + connect "3.6.2"
895 + connect-static-file "1.2.0"
896 + serve-static "1.12.3"
897 +
898 q@^1.1.2:
899 version "1.5.0"
900 resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
@@ -539,6 +903,24 @@ qs@~6.5.1:
903 version "6.5.1"
904 resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
905
906 +range-parser@~1.2.0:
907 + version "1.2.0"
908 + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
909 + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
910 +
911 +readable-stream@^2.2.2:
912 + version "2.3.6"
913 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
914 + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
915 + dependencies:
916 + core-util-is "~1.0.0"
917 + inherits "~2.0.3"
918 + isarray "~1.0.0"
919 + process-nextick-args "~2.0.0"
920 + safe-buffer "~5.1.1"
921 + string_decoder "~1.1.1"
922 + util-deprecate "~1.0.1"
923 +
924 reduce-flatten@^1.0.1:
925 version "1.0.1"
926 resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327"
@@ -584,14 +966,79 @@ restore-cursor@^2.0.0:
966 onetime "^2.0.0"
967 signal-exit "^3.0.2"
968
587 -safe-buffer@^5.0.1, safe-buffer@^5.1.1:
969 +rimraf@^2.6.1:
970 + version "2.6.2"
971 + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
972 + integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
973 + dependencies:
974 + glob "^7.0.5"
975 +
976 +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1:
977 version "5.1.1"
978 resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
979
980 +safe-buffer@~5.1.0, safe-buffer@~5.1.1:
981 + version "5.1.2"
982 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
983 + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
984 +
985 semver@^5.4.1:
986 version "5.4.1"
987 resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
988
989 +send@0.15.3:
990 + version "0.15.3"
991 + resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309"
992 + integrity sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=
993 + dependencies:
994 + debug "2.6.7"
995 + depd "~1.1.0"
996 + destroy "~1.0.4"
997 + encodeurl "~1.0.1"
998 + escape-html "~1.0.3"
999 + etag "~1.8.0"
1000 + fresh "0.5.0"
1001 + http-errors "~1.6.1"
1002 + mime "1.3.4"
1003 + ms "2.0.0"
1004 + on-finished "~2.3.0"
1005 + range-parser "~1.2.0"
1006 + statuses "~1.3.1"
1007 +
1008 +send@^0.15.3:
1009 + version "0.15.6"
1010 + resolved "https://registry.yarnpkg.com/send/-/send-0.15.6.tgz#20f23a9c925b762ab82705fe2f9db252ace47e34"
1011 + integrity sha1-IPI6nJJbdiq4JwX+L52yUqzkfjQ=
1012 + dependencies:
1013 + debug "2.6.9"
1014 + depd "~1.1.1"
1015 + destroy "~1.0.4"
1016 + encodeurl "~1.0.1"
1017 + escape-html "~1.0.3"
1018 + etag "~1.8.1"
1019 + fresh "0.5.2"
1020 + http-errors "~1.6.2"
1021 + mime "1.3.4"
1022 + ms "2.0.0"
1023 + on-finished "~2.3.0"
1024 + range-parser "~1.2.0"
1025 + statuses "~1.3.1"
1026 +
1027 +serve-static@1.12.3:
1028 + version "1.12.3"
1029 + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.3.tgz#9f4ba19e2f3030c547f8af99107838ec38d5b1e2"
1030 + integrity sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=
1031 + dependencies:
1032 + encodeurl "~1.0.1"
1033 + escape-html "~1.0.3"
1034 + parseurl "~1.3.1"
1035 + send "0.15.3"
1036 +
1037 +setprototypeof@1.1.0:
1038 + version "1.1.0"
1039 + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
1040 + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
1041 +
1042 signal-exit@^3.0.2:
1043 version "3.0.2"
1044 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
@@ -616,6 +1063,16 @@ sshpk@^1.7.0:
1063 jsbn "~0.1.0"
1064 tweetnacl "~0.14.0"
1065
1066 +"statuses@>= 1.4.0 < 2":
1067 + version "1.5.0"
1068 + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
1069 + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
1070 +
1071 +statuses@~1.3.1:
1072 + version "1.3.1"
1073 + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
1074 + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=
1075 +
1076 string-width@^2.1.1:
1077 version "2.1.1"
1078 resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
@@ -623,6 +1080,13 @@ string-width@^2.1.1:
1080 is-fullwidth-code-point "^2.0.0"
1081 strip-ansi "^4.0.0"
1082
1083 +string_decoder@~1.1.1:
1084 + version "1.1.1"
1085 + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
1086 + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
1087 + dependencies:
1088 + safe-buffer "~5.1.0"
1089 +
1090 stringstream@~0.0.5:
1091 version "0.0.5"
1092 resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
@@ -679,6 +1143,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
1143 version "0.14.5"
1144 resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
1145
1146 +typedarray@^0.0.6:
1147 + version "0.0.6"
1148 + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
1149 + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
1150 +
1151 typical@^2.6.0, typical@^2.6.1:
1152 version "2.6.1"
1153 resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d"
@@ -687,10 +1156,30 @@ universalify@^0.1.0:
1156 version "0.1.1"
1157 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
1158
1159 +unpipe@~1.0.0:
1160 + version "1.0.0"
1161 + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1162 + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
1163 +
1164 +util-deprecate@~1.0.1:
1165 + version "1.0.2"
1166 + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1167 + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
1168 +
1169 +utils-merge@1.0.0:
1170 + version "1.0.0"
1171 + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
1172 + integrity sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=
1173 +
1174 uuid@^3.1.0:
1175 version "3.1.0"
1176 resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
1177
1178 +vary@~1.1.1:
1179 + version "1.1.2"
1180 + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1181 + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
1182 +
1183 verror@1.10.0:
1184 version "1.10.0"
1185 resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
@@ -719,6 +1208,25 @@ wrap-ansi@^3.0.1:
1208 string-width "^2.1.1"
1209 strip-ansi "^4.0.0"
1210
1211 +wrappy@1:
1212 + version "1.0.2"
1213 + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1214 + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1215 +
1216 +ws@^6.1.0:
1217 + version "6.1.2"
1218 + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8"
1219 + integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==
1220 + dependencies:
1221 + async-limiter "~1.0.0"
1222 +
1223 yallist@^2.1.2:
1224 version "2.1.2"
1225 resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
1226 +
1227 +yauzl@2.4.1:
1228 + version "2.4.1"
1229 + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
1230 + integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=
1231 + dependencies:
1232 + fd-slicer "~1.0.1"