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"