├── .gitignore
├── .npmignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── bin
└── react-snapshot.js
├── compositor.json
├── package.json
├── src
├── Crawler.js
├── Server.js
├── Writer.js
├── cli.js
├── index.js
└── snapshot.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | lib
2 | node_modules
3 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geelen/react-snapshot/528fcdb825cc8a999699ccf9c354cab1df1869f7/.npmignore
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 | All notable changes to this project will be documented in this file.
3 |
4 | The format is based on [Keep a Changelog](http://keepachangelog.com/)
5 | and this project adheres to [Semantic Versioning](http://semver.org/).
6 |
7 | ## [1.2.0] - 2017-11-02
8 |
9 | - Upgraded peer dependencies to include React 16 [#71](https://github.com/geelen/react-snapshot/pull/71)
10 | - Added a package.json option to strip certain JS from the bundle [#58](https://github.com/geelen/react-snapshot/pull/58)
11 | - Added `build-dir`, `output-dir`, and `domain` CLI options [#84](https://github.com/geelen/react-snapshot/pull/84)
12 |
13 | ## [1.1.0] - 2017-05-24
14 |
15 | ### Added
16 |
17 | - Read paths from `package.json` if present [#12](https://github.com/geelen/react-snapshot/pull/12). Uses `include` and `exclude` fields to filter by.
18 | - Understand `homepage` field in `package.json` [#21](https://github.com/geelen/react-snapshot/pull/21).
19 | - Understands `proxy` field, at least for simple cases [#26](https://github.com/geelen/react-snapshot/pull/26)
20 |
21 | ### Changed
22 |
23 | - Don't follow `target="_blank"` links.
24 | - Don't follow links to any URL with a file extension (except `.html`).
25 | - If a URL is `/a/b` it'll render into `a/b.html` as before, but if it's `a/b/` it'll output `a/b/index.html`.
26 | - No longer uses a hardcoded port [#27](https://github.com/geelen/react-snapshot/pull/27).
27 |
28 | ### Fixed
29 |
30 | - Don't crash on null links [#20](https://github.com/geelen/react-snapshot/pull/20)
31 | - React Helmet v5 now works [#27](https://github.com/geelen/react-snapshot/pull/27)
32 |
33 | ## [1.0.4] - 2016-09-27
34 |
35 | Initial release.
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Glen Maddern
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 📸 React Snapshot
2 |
3 | ⚠️⚠️⚠️ DEPRECATED: USE https://github.com/stereobooster/react-snap INSTEAD ⚠️⚠️
4 |
5 | A zero-configuration static pre-renderer for React apps. Starting by targeting Create React App (because it's great)
6 |
7 | ## The Premise
8 |
9 | Server-side rendering is a big feature of React, but for most apps it can be more trouble than its worth. Personally, I think the sweet spot is taking static site snapshots of all your publicly-accessible pages & leaving anything requiring authentication as a normal, JS-driven Single Page App.
10 |
11 | This is a project to do that. Automatically, without any configuration, just smart defaults. **Retrospective progressive enhancement.**
12 |
13 | The snapshots still have the normal JS bundle included, so once that downloads the site will function exactly as before (i.e. instantaneous page transitions), but you serve real, functional HTML & CSS as soon as possible. It's good for SEO (yes Google crawls SPAs now but they still reward perf and this perfs like a banshee), it's good if your JS is broken or something render-blocking has a network fail, it's good for accessibility, it's good for Slackbot or Facebook to read your opengraph tags, it's just good.
14 |
15 | ## The How To
16 |
17 | - First, `npm i -D react-snapshot`
18 | - Second, open your package.json and change `"scripts"` from
19 |
20 | ```diff
21 | - "build": "react-scripts build"
22 | + "build": "react-scripts build && react-snapshot"
23 | ```
24 |
25 | - Third, change your usage of `react-dom`:
26 |
27 | ```diff
28 | - import ReactDOM from 'react-dom';
29 | + import { render } from 'react-snapshot';
30 |
31 | - ReactDOM.render(
32 | + render(
33 | ,
34 | document.getElementById('root')
35 | );
36 | ```
37 |
38 | This calls `ReactDOM.render` in development and `ReactDOMServer.renderToString` when prerendering. If I can make this invisible I will but I can't think how at the moment.
39 |
40 | ## Options
41 | You can specify additional paths as entry points for crawling that would otherwise not be found. It's also possible to exclude particular paths from crawling. Simply add a section called `"reactSnapshot"` to your package.json.
42 |
43 | ```
44 | "reactSnapshot": {
45 | "include": [
46 | "/other-path",
47 | "/another/nested-path"
48 | ],
49 | "exclude": [
50 | "/signup",
51 | "/other-path/exclude-me/**"
52 | ],
53 | "snapshotDelay": 300
54 | }
55 | ```
56 |
57 | Note that exclude can be passed a glob, but include cannot.
58 |
59 | The default snapshot delay is 50ms, and this can be changed to suit your app's requirements.
60 |
61 | ## The Demo
62 |
63 | Check out [create-react-app-snapshot.surge.sh](https://create-react-app-snapshot.surge.sh) for a live version or [geelen/create-react-app-snapshot](https://github.com/geelen/create-react-app-snapshot) for how it was built, starting from [create-react-app](https://github.com/facebookincubator/create-react-app)'s awesome baseline. No ejecting necessary, either.
64 |
65 | The [diff from the original create-react-app code](https://github.com/geelen/create-react-app-snapshot/compare/303f774...master) might be enlightening to you as well.
66 |
67 | ## The Implementation
68 |
69 | It's pretty simple in principle:
70 |
71 | - Fire up the home page in a fake browser and snapshot the HTML once the page is rendered
72 | - Follow every relative URL to crawl the whole site
73 | - Repeat.
74 |
75 | There's a few more steps to it, but not much.
76 |
77 | React-snapshot will crawl all links that it finds. You can create "site map" page, which will contain links to all pages.
78 |
79 | - We move `build/index.html` to `build/200.html` at the beginning, because it's a nice convention. Hosts like [surge.sh](https://surge.sh) understand this, serving `200.html` if no snapshot exists for a URL. If you use a different host I'm sure you can make it do the same.
80 | - `pushstate-server` is used to serve the `build` directory & serving `200.html` by default
81 | - The fake browser is JSDOM, set to execute any local scripts (same origin) in order to actually run your React code, but it'll ignore any third-party scripts (analytics or social widgets)
82 | - We start a new JSDOM session for each URL to ensure that each page gets the absolute minimum HTML to render it.
83 |
84 | ## The Caveats
85 |
86 | This is a hacky experiment at the moment. I would really like to see how far we can take this approach so things "just work" without ever adding config. Off the top of my head:
87 |
88 | - [x] ~~Waiting on [pushstate-server#29](https://github.com/scottcorgan/pushstate-server/pull/29). Right now `pushstate-server` serves `200.html` _even if_ a HTML snapshot is present. So once you've run `react-snapshot`, you have to switch to `http-server` or `superstatic` to test if it worked. Or you could just push to [surge.sh](https://surge.sh) each time, which isn't too bad.~~
89 | - [x] ~~Is starting at `/` and crawling sufficient? Might there be unreachable sections of your site?~~
90 | - [x] ~~Should we exclude certain URLs? Maybe parse the `robots.txt` file?~~
91 | - [ ] What if you don't want the `200.html` pushstate fallback? What if you want to remove the bundle (effectively making this a static site generator)?
92 | - [ ] This doesn't pass down any state except what's contained in the markup. That feels ok for simple use-cases (you can always roll your own) but if you have a use-case where you need it and want zero-config raise an issue.
93 | - [x] #2 ~~I'm using a regexp to parse URLs out of the HTML because I wrote this on a flight with no wifi and couldn't NPM install anything. We should use a real parser. You should submit a PR to use a real parser. That would be real swell.~~
94 | - [ ] Should we clone the `build` directory to something like `snapshot` or `dist` instead of modifying it in-place?
95 | - [ ] There's virtually no error checking things so will just explode in interesting ways. So yeah that should be fixed.
96 | - [ ] Is JSDOM gonna hold us back at some point?
97 | - [ ] If the React code is changing what it renders based on size of viewport then things may "pop in" once the JS loads. Anything driven by media queries should just work though. So stick to Media Queries, I guess?
98 | - [ ] Does someone else want to take this idea and run with it? I would be 100% happy to not be the maintainer of this project :)
99 |
100 | ## The Alternatives
101 |
102 | This should work for simple cases. For less simple cases, go with:
103 |
104 | - [Webpack Static Site Generator Plugin](https://github.com/markdalgleish/static-site-generator-webpack-plugin)
105 | - [Gatsby](https://github.com/gatsbyjs/gatsby) or [Phenomic](https://phenomic.io/) if you're doing something bigger or more structured. Phenomic has service worker support & minimal bundles and all kinds of things, Gatsby is getting that stuff too.
106 | - Actually run a server-side React node server because you have more complex stuff to do, like pre-rendering stuff behind a login.
107 |
108 | ## License
109 |
110 | MIT
111 |
--------------------------------------------------------------------------------
/bin/react-snapshot.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | require('../lib/cli')()
3 |
--------------------------------------------------------------------------------
/compositor.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "geelen/react-snapshot",
3 | "version": "0.1.4",
4 | "libraries": {
5 | "xv": "^1.1.25"
6 | },
7 | "title": "React Snapshot",
8 | "branch": "master",
9 | "style": {
10 | "name": "Material",
11 | "componentSet": {
12 | "nav": "nav/DarkAbsoluteNav",
13 | "header": "header/GradientHeader",
14 | "article": "article/BasicArticle",
15 | "footer": "footer/BasicFooter"
16 | },
17 | "fontFamily": "Roboto, sans-serif",
18 | "heading": {
19 | "fontWeight": 500,
20 | "letterSpacing": "-0.01em"
21 | },
22 | "colors": {
23 | "text": "#212121",
24 | "background": "#fff",
25 | "primary": "#2196f3",
26 | "secondary": "#1565c0",
27 | "highlight": "#ff4081",
28 | "border": "#e0e0e0",
29 | "muted": "#f5f5f5"
30 | },
31 | "layout": {
32 | "centered": true,
33 | "bannerHeight": "80vh",
34 | "maxWidth": 896
35 | }
36 | },
37 | "content": [
38 | {
39 | "component": "nav",
40 | "links": [
41 | {
42 | "href": "https://github.com/geelen/react-snapshot",
43 | "text": "GitHub"
44 | },
45 | {
46 | "href": "https://npmjs.com/package/react-snapshot",
47 | "text": "npm"
48 | }
49 | ]
50 | },
51 | {
52 | "component": "header",
53 | "heading": "react-snapshot",
54 | "subhead": "A zero-configuration static pre-renderer for React apps",
55 | "children": [
56 | {
57 | "component": "ui/TweetButton",
58 | "text": "react-snapshot: A zero-configuration static pre-renderer for React apps",
59 | "url": ""
60 | },
61 | {
62 | "component": "ui/GithubButton",
63 | "user": "geelen",
64 | "repo": "react-snapshot"
65 | }
66 | ],
67 | "text": "v1.0.4"
68 | },
69 | {
70 | "component": "article",
71 | "metadata": {
72 | "source": "github.readme"
73 | },
74 | "html": "
📸 React Snapshot
\nA zero-configuration static pre-renderer for React apps. Starting by targeting Create React App (because it's great)
\nThe Premise
\nServer-side rendering is a big feature of React, but for most apps it can be more trouble than its worth. Personally, I think the sweet spot is taking static site snapshots of all your publicly-accessible pages & leaving anything requiring authentication as a normal, JS-driven Single Page App.
\nThis is a project to do that. Automatically, without any configuration, just smart defaults. Retrospective progressive enhancement.
\nThe snapshots still have the normal JS bundle included, so once that downloads the site will function exactly as before (i.e. instantaneous page transitions), but you serve real, functional HTML & CSS as soon as possible. It's good for SEO (yes Google crawls SPAs now but they still reward perf and this perfs like a banshee), it's good if your JS is broken or something render-blocking has a network fail, it's good for accessibility, it's good for Slackbot or Facebook to read your opengraph tags, it's just good.
\nThe How To
\n\n- First,
npm i -D react-snapshot
\n- Second, open your package.json and change
"scripts"
from \n
\n- "build": "react-scripts build"\n+ "build": "react-scripts build && react-snapshot"
\n- Third, change your usage of
react-dom
: \n
\n- import ReactDOM from 'react-dom';\n+ import { render } from 'react-snapshot';\n\n- ReactDOM.render(\n+ render(\n <App/>,\n document.getElementById('root')\n );
This calls ReactDOM.render
in development and ReactDOMServer.renderToString
when prerendering. If I can make this invisible I will but I can't think how at the moment.
\nOptions
\nYou can specify additional paths as entry points for crawling that would otherwise not be found. It's also possible to exclude particular paths from crawling. Simply add a section called "reactSnapshot"
to your package.json.
\n "reactSnapshot": {\n "include": [\n "/other-path",\n "/another/nested-path"\n ],\n "exclude": [\n "/signup",\n "/other-path/exclude-me/**"\n ],\n "snapshotDelay": 300\n }
Note that exclude can be passed a glob, but include cannot.
\nThe default snapshot delay is 50ms, and this can be changed to suit your app's requirements.
\nThe Demo
\nCheck out create-react-app-snapshot.surge.sh for a live version or geelen/create-react-app-snapshot for how it was built, starting from create-react-app's awesome baseline. No ejecting necessary, either.
\nThe diff from the original create-react-app code might be enlightening to you as well.
\nThe Implementation
\nIt's pretty simple in principle:
\n\n- Fire up the home page in a fake browser and snapshot the HTML once the page is rendered
\n- Follow every relative URL to crawl the whole site
\n- Repeat.
\n
\nThere's a few more steps to it, but not much.
\nReact-snapshot will crawl all links that it finds. You can create "site map" page, which will contain links to all pages.
\n\n- We move
build/index.html
to build/200.html
at the beginning, because it's a nice convention. Hosts like surge.sh understand this, serving 200.html
if no snapshot exists for a URL. If you use a different host I'm sure you can make it do the same. \npushstate-server
is used to serve the build
directory & serving 200.html
by default \n- The fake browser is JSDOM, set to execute any local scripts (same origin) in order to actually run your React code, but it'll ignore any third-party scripts (analytics or social widgets)
\n- We start a new JSDOM session for each URL to ensure that each page gets the absolute minimum HTML to render it.
\n
\nThe Caveats
\nThis is a hacky experiment at the moment. I would really like to see how far we can take this approach so things "just work" without ever adding config. Off the top of my head:
\n\n- [x] Waiting on pushstate-server#29. Right now
pushstate-server
serves 200.html
even if a HTML snapshot is present. So once you've run react-snapshot
, you have to switch to http-server
or superstatic
to test if it worked. Or you could just push to surge.sh each time, which isn't too bad. \n- [x] Is starting at
/
and crawling sufficient? Might there be unreachable sections of your site? \n- [x] Should we exclude certain URLs? Maybe parse the
robots.txt
file? \n- [ ] What if you don't want the
200.html
pushstate fallback? What if you want to remove the bundle (effectively making this a static site generator)? \n- [ ] This doesn't pass down any state except what's contained in the markup. That feels ok for simple use-cases (you can always roll your own) but if you have a use-case where you need it and want zero-config raise an issue.
\n- [x] #2 I'm using a regexp to parse URLs out of the HTML because I wrote this on a flight with no wifi and couldn't NPM install anything. We should use a real parser. You should submit a PR to use a real parser. That would be real swell.
\n- [ ] Should we clone the
build
directory to something like snapshot
or dist
instead of modifying it in-place? \n- [ ] There's virtually no error checking things so will just explode in interesting ways. So yeah that should be fixed.
\n- [ ] Is JSDOM gonna hold us back at some point?
\n- [ ] If the React code is changing what it renders based on size of viewport then things may "pop in" once the JS loads. Anything driven by media queries should just work though. So stick to Media Queries, I guess?
\n- [ ] Does someone else want to take this idea and run with it? I would be 100% happy to not be the maintainer of this project :)
\n
\nThe Alternatives
\nThis should work for simple cases. For less simple cases, go with:
\n\n- Webpack Static Site Generator Plugin
\n- Gatsby or Phenomic if you're doing something bigger or more structured. Phenomic has service worker support & minimal bundles and all kinds of things, Gatsby is getting that stuff too.
\n- Actually run a server-side React node server because you have more complex stuff to do, like pre-rendering stuff behind a login.
\n
\nLicense
\nMIT
\n"
75 | },
76 | {
77 | "component": "footer",
78 | "links": [
79 | {
80 | "href": "https://github.com/geelen/react-snapshot",
81 | "text": "GitHub"
82 | },
83 | {
84 | "href": "https://github.com/geelen",
85 | "text": "geelen"
86 | }
87 | ]
88 | }
89 | ]
90 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-snapshot",
3 | "version": "1.3.0",
4 | "description": "",
5 | "main": "lib/index.js",
6 | "repository": "geelen/react-snapshot",
7 | "bin": {
8 | "react-snapshot": "./bin/react-snapshot.js"
9 | },
10 | "scripts": {
11 | "build": "babel --out-dir lib src",
12 | "build:watch": "npm run build -- --watch",
13 | "prepublish": "rm -rf lib/* && npm run build"
14 | },
15 | "dependencies": {
16 | "connect-history-api-fallback": "^1.3.0",
17 | "express": "^4.15.2",
18 | "glob-to-regexp": "^0.3.0",
19 | "http-proxy-middleware": "^0.17.4",
20 | "jsdom": "^9.4.5",
21 | "mkdirp": "^0.5.1",
22 | "safe-commander": "^2.11.1"
23 | },
24 | "devDependencies": {
25 | "babel-cli": "^6.14.0",
26 | "babel-core": "^6.13.2",
27 | "babel-plugin-add-module-exports": "^0.2.1",
28 | "babel-preset-es2015": "^6.13.2",
29 | "babel-preset-es2016": "^6.11.3",
30 | "react": "^15.3.0",
31 | "react-dom": "^15.3.0"
32 | },
33 | "peerDependencies": {
34 | "react": "^15.3.0 || ^16.0.0",
35 | "react-dom": "^15.3.0 || ^16.0.0"
36 | },
37 | "babel": {
38 | "presets": [
39 | "es2015",
40 | "es2016"
41 | ],
42 | "plugins": [
43 | "add-module-exports"
44 | ]
45 | },
46 | "keywords": [
47 | "react",
48 | "create-react-app",
49 | "snapshot",
50 | "static-site-generator",
51 | "jsdom"
52 | ],
53 | "author": "Glen Maddern",
54 | "license": "ISC",
55 | "homepage": "https://github.com/geelen/react-snapshot"
56 | }
57 |
--------------------------------------------------------------------------------
/src/Crawler.js:
--------------------------------------------------------------------------------
1 | /* Loads a URL then starts looking for links.
2 | Emits a full page whenever a new link is found. */
3 | import url from 'url'
4 | import path from 'path'
5 | import jsdom from 'jsdom'
6 | import glob from 'glob-to-regexp'
7 | import snapshot from './snapshot'
8 |
9 | export default class Crawler {
10 | constructor(baseUrl, snapshotDelay, options) {
11 | this.baseUrl = baseUrl
12 | const { protocol, host } = url.parse(baseUrl)
13 | this.protocol = protocol
14 | this.host = host
15 | this.paths = [...options.include]
16 | this.exclude = options.exclude.map((g) => glob(g, { extended: true, globstar: true}))
17 | this.stripJS = options.stripJS
18 | this.processed = {}
19 | this.snapshotDelay = snapshotDelay
20 | }
21 |
22 | crawl(handler) {
23 | this.handler = handler
24 | console.log(`🕷 Starting crawling ${this.baseUrl}`)
25 | return this.snap()
26 | .then(() => console.log(`🕸 Finished crawling.`))
27 | }
28 |
29 | snap() {
30 | let urlPath = this.paths.shift()
31 | if (!urlPath) return Promise.resolve()
32 | urlPath = url.resolve('/', urlPath) // Resolve removes trailing slashes
33 | if (this.processed[urlPath]) {
34 | return this.snap()
35 | } else {
36 | this.processed[urlPath] = true
37 | }
38 | return snapshot(this.protocol, this.host, urlPath, this.snapshotDelay).then(window => {
39 | if (this.stripJS) {
40 | const strip = new RegExp(this.stripJS)
41 | Array.from(window.document.querySelectorAll('script')).forEach(script => {
42 | if (strip.exec(url.parse(script.src).path)) script.remove()
43 | })
44 | }
45 | if (Boolean(window.react_snapshot_state)) {
46 | const stateJSON = JSON.stringify(window.react_snapshot_state)
47 | const script = window.document.createElement('script')
48 | script.innerHTML = `window.react_snapshot_state = JSON.parse('${stateJSON}');`
49 | window.document.head.appendChild(script)
50 | }
51 | const html = jsdom.serializeDocument(window.document)
52 | this.extractNewLinks(window, urlPath)
53 | this.handler({ urlPath, html })
54 | window.close() // Release resources used by jsdom
55 | return this.snap()
56 | }, err => {
57 | console.log(`🔥 ${err}`)
58 | })
59 | }
60 |
61 | extractNewLinks(window, currentPath) {
62 | const document = window.document
63 | const tagAttributeMap = {
64 | 'a': 'href',
65 | 'iframe': 'src'
66 | }
67 |
68 | Object.keys(tagAttributeMap).forEach(tagName => {
69 | const urlAttribute = tagAttributeMap[tagName]
70 | Array.from(document.querySelectorAll(`${tagName}[${urlAttribute}]`)).forEach(element => {
71 | if (element.getAttribute('target') === '_blank') return
72 | const href = url.parse(element.getAttribute(urlAttribute))
73 | if (href.protocol || href.host || href.path === null) return;
74 | const relativePath = url.resolve(currentPath, href.path)
75 | if (path.extname(relativePath) !== '.html' && path.extname(relativePath) !== '') return;
76 | if (this.processed[relativePath]) return;
77 | if (this.exclude.filter((regex) => regex.test(relativePath)).length > 0) return
78 | this.paths.push(relativePath)
79 | })
80 | })
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/src/Server.js:
--------------------------------------------------------------------------------
1 | /* Spin up a simple express server */
2 | import express from 'express'
3 | import httpProxyMiddleware from 'http-proxy-middleware'
4 | import historyApiFallback from 'connect-history-api-fallback'
5 |
6 | export default class Server {
7 | constructor(baseDir, publicPath, port, proxy) {
8 | const app = express()
9 |
10 | app.get('*', (req, res, next) => {
11 | // This makes sure the sockets close down so that
12 | // we can gracefully shutdown the server
13 | res.set('Connection', 'close');
14 | next()
15 | })
16 |
17 | // Yes I just copied most of this from react-scripts ¯\_(ツ)_/¯
18 | app.use(publicPath,
19 | historyApiFallback({
20 | index: '/200.html',
21 | disableDotRule: true,
22 | htmlAcceptHeaders: ['text/html'],
23 | }),
24 | express.static(baseDir, { index: '200.html' })
25 | )
26 |
27 | if (proxy) {
28 | if (typeof proxy !== "string") throw new Error("Only string proxies are implemented currently.")
29 | app.use(httpProxyMiddleware({
30 | target: proxy,
31 | onProxyReq: proxyReq => {
32 | if (proxyReq.getHeader('origin')) proxyReq.setHeader('origin', proxy)
33 | },
34 | changeOrigin: true,
35 | xfwd: true,
36 | }))
37 | }
38 |
39 | this.start = this.start.bind(this, app, port)
40 | }
41 |
42 | start(app, port) {
43 | return new Promise((resolve, reject) => {
44 | this.instance = app.listen(port, (err) => {
45 | if (err) {
46 | return reject(err)
47 | }
48 |
49 | resolve()
50 | })
51 | })
52 | }
53 |
54 | port() {
55 | return this.instance.address().port
56 | }
57 |
58 | stop() {
59 | this.instance.close()
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/Writer.js:
--------------------------------------------------------------------------------
1 | /* Simple wrapper around fs so I can concentrate on what's going on */
2 | import fs from 'fs'
3 | import path from 'path'
4 | import { sync as mkDirPSync } from 'mkdirp'
5 |
6 | export default class Writer {
7 | constructor(baseDir, outputDir) {
8 | this.baseDir = baseDir
9 | if (outputDir !== baseDir) {
10 | mkDirPSync(outputDir)
11 | }
12 | this.outputDir = outputDir
13 | }
14 |
15 | move(from, to) {
16 | /* Only do this if we still have an index.html
17 | (i.e. this is the first run post build) */
18 | const fromPath = path.resolve(this.baseDir, from);
19 | if (fs.existsSync(fromPath)) {
20 | /* This _must_ be in the BUILD directory, not the OUTPUT directory, since
21 | * that's how our Server is configured. */
22 | fs.renameSync(fromPath, path.resolve(this.baseDir, to))
23 | }
24 | }
25 |
26 | write(filename, content) {
27 | const newPath = path.join(this.outputDir, filename)
28 | const dirName = path.dirname(newPath)
29 | mkDirPSync(dirName)
30 | fs.writeFileSync(newPath, content)
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/cli.js:
--------------------------------------------------------------------------------
1 | import path from 'path'
2 | import fs from 'fs'
3 | import url from 'url'
4 | import Server from './Server'
5 | import Crawler from './Crawler'
6 | import Writer from './Writer'
7 | import program from 'safe-commander'
8 |
9 | export default () => {
10 | program
11 | .version(require('../package.json').version)
12 | .option('--build-dir ', `Specify where the JS app lives. Defaults to 'build'`)
13 | .option('--domain ', `The local domain to use for scraping. Defaults to 'localhost'`)
14 | .option('--output-dir ', `Where to write the snapshots. Defaults to in-place (i.e. same as build-dir)`)
15 | .parse(process.argv)
16 |
17 | const {
18 | buildDir = 'build',
19 | domain = 'localhost',
20 | outputDir = buildDir,
21 | } = program.optsObj
22 |
23 | const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json')))
24 | const basename = ((p) => p.endsWith('/') ? p : p + '/')(pkg.homepage ? url.parse(pkg.homepage).pathname : '')
25 |
26 | const options = Object.assign({
27 | include: [],
28 | exclude: [],
29 | snapshotDelay: 50,
30 | }, pkg['react-snapshot'] || pkg.reactSnapshot || {})
31 |
32 | options.exclude = options.exclude.map((p) => path.join(basename, p).replace(/\\/g, '/'))
33 | options.include = options.include.map((p) => path.join(basename, p).replace(/\\/g, '/'))
34 | options.include.unshift(basename)
35 |
36 | const buildDirPath = path.resolve(`./${buildDir}`)
37 | const outputDirPath = path.resolve(`./${outputDir}`)
38 | if (!fs.existsSync(buildDir)) throw new Error(`No build directory exists at: ${buildDirPath}`)
39 | const writer = new Writer(buildDirPath, outputDirPath)
40 | writer.move('index.html', '200.html')
41 |
42 | const server = new Server(buildDirPath, basename, 0, pkg.proxy)
43 | server.start().then(() => {
44 | const crawler = new Crawler(`http://${domain}:${server.port()}${basename}`, options.snapshotDelay, options)
45 | return crawler.crawl(({ urlPath, html }) => {
46 | if (!urlPath.startsWith(basename)) {
47 | console.log(`❗ Refusing to crawl ${urlPath} because it is outside of the ${basename} sub-folder`)
48 | return
49 | }
50 | urlPath = urlPath.replace(basename, '/')
51 | let filename = urlPath
52 | if (urlPath.endsWith('/')) {
53 | filename = `${urlPath}index.html`
54 | } else if (path.extname(urlPath) == '') {
55 | filename = `${urlPath}.html`
56 | }
57 | console.log(`✏️ Saving ${urlPath} as ${filename}`)
58 | writer.write(filename, html)
59 | })
60 |
61 | }).then(() => server.stop(), err => console.log(`🔥 ${err}`))
62 | }
63 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import ReactDOM from 'react-dom';
2 | import ReactDOMServer from 'react-dom/server';
3 |
4 | export const render = (rootComponent, domElement) => {
5 | if (navigator.userAgent.match(/Node\.js/i) && window && window.reactSnapshotRender) {
6 | domElement.innerHTML = ReactDOMServer.renderToString(rootComponent)
7 | window.reactSnapshotRender()
8 | } else {
9 | ReactDOM.render(rootComponent, domElement)
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/snapshot.js:
--------------------------------------------------------------------------------
1 | /* Wraps a jsdom call and returns the full page */
2 |
3 | import jsdom from 'jsdom'
4 |
5 | export default (protocol, host, path, delay) => {
6 | return new Promise((resolve, reject) => {
7 | let reactSnapshotRenderCalled = false
8 | const url = `${protocol}//${host}${path}`
9 | jsdom.env({
10 | url,
11 | headers: { Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" },
12 | resourceLoader(resource, callback) {
13 | if (resource.url.host === host) {
14 | resource.defaultFetch(callback);
15 | } else {
16 | callback()
17 | }
18 | },
19 | features: {
20 | FetchExternalResources: ["script"],
21 | ProcessExternalResources: ["script"],
22 | SkipExternalResources: false
23 | },
24 | virtualConsole: jsdom.createVirtualConsole().sendTo(console),
25 | created: (err, window) => {
26 | if (err) return reject(err)
27 | if (!window) return reject(`Looks like no page exists at ${url}`)
28 | window.reactSnapshotRender = () => {
29 | reactSnapshotRenderCalled = true
30 | setTimeout(() => {
31 | resolve(window)
32 | }, delay)
33 | }
34 | },
35 | done: (err, window) => {
36 | if (!reactSnapshotRenderCalled) {
37 | reject("'render' from react-snapshot was never called. Did you replace the call to ReactDOM.render()?")
38 | }
39 | }
40 | })
41 | })
42 | }
43 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | abab@^1.0.3:
6 | version "1.0.3"
7 | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
8 |
9 | abbrev@1:
10 | version "1.1.0"
11 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
12 |
13 | accepts@~1.3.3:
14 | version "1.3.3"
15 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
16 | dependencies:
17 | mime-types "~2.1.11"
18 | negotiator "0.6.1"
19 |
20 | acorn-globals@^3.1.0:
21 | version "3.1.0"
22 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf"
23 | dependencies:
24 | acorn "^4.0.4"
25 |
26 | acorn@^4.0.4:
27 | version "4.0.11"
28 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
29 |
30 | ajv@^4.9.1:
31 | version "4.11.7"
32 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
33 | dependencies:
34 | co "^4.6.0"
35 | json-stable-stringify "^1.0.1"
36 |
37 | amdefine@>=0.0.4:
38 | version "1.0.1"
39 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
40 |
41 | ansi-regex@^2.0.0:
42 | version "2.1.1"
43 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
44 |
45 | ansi-styles@^2.2.1:
46 | version "2.2.1"
47 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
48 |
49 | anymatch@^1.3.0:
50 | version "1.3.0"
51 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
52 | dependencies:
53 | arrify "^1.0.0"
54 | micromatch "^2.1.5"
55 |
56 | aproba@^1.0.3:
57 | version "1.1.1"
58 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
59 |
60 | are-we-there-yet@~1.1.2:
61 | version "1.1.4"
62 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
63 | dependencies:
64 | delegates "^1.0.0"
65 | readable-stream "^2.0.6"
66 |
67 | arr-diff@^2.0.0:
68 | version "2.0.0"
69 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
70 | dependencies:
71 | arr-flatten "^1.0.1"
72 |
73 | arr-flatten@^1.0.1:
74 | version "1.0.3"
75 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
76 |
77 | array-equal@^1.0.0:
78 | version "1.0.0"
79 | resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
80 |
81 | array-flatten@1.1.1:
82 | version "1.1.1"
83 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
84 |
85 | array-unique@^0.2.1:
86 | version "0.2.1"
87 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
88 |
89 | arrify@^1.0.0:
90 | version "1.0.1"
91 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
92 |
93 | asap@~2.0.3:
94 | version "2.0.5"
95 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
96 |
97 | asn1@~0.2.3:
98 | version "0.2.3"
99 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
100 |
101 | assert-plus@1.0.0, assert-plus@^1.0.0:
102 | version "1.0.0"
103 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
104 |
105 | assert-plus@^0.2.0:
106 | version "0.2.0"
107 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
108 |
109 | async-each@^1.0.0:
110 | version "1.0.1"
111 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
112 |
113 | asynckit@^0.4.0:
114 | version "0.4.0"
115 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
116 |
117 | aws-sign2@~0.6.0:
118 | version "0.6.0"
119 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
120 |
121 | aws4@^1.2.1:
122 | version "1.6.0"
123 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
124 |
125 | babel-cli@^6.14.0:
126 | version "6.24.1"
127 | resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283"
128 | dependencies:
129 | babel-core "^6.24.1"
130 | babel-polyfill "^6.23.0"
131 | babel-register "^6.24.1"
132 | babel-runtime "^6.22.0"
133 | commander "^2.8.1"
134 | convert-source-map "^1.1.0"
135 | fs-readdir-recursive "^1.0.0"
136 | glob "^7.0.0"
137 | lodash "^4.2.0"
138 | output-file-sync "^1.1.0"
139 | path-is-absolute "^1.0.0"
140 | slash "^1.0.0"
141 | source-map "^0.5.0"
142 | v8flags "^2.0.10"
143 | optionalDependencies:
144 | chokidar "^1.6.1"
145 |
146 | babel-code-frame@^6.22.0:
147 | version "6.22.0"
148 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
149 | dependencies:
150 | chalk "^1.1.0"
151 | esutils "^2.0.2"
152 | js-tokens "^3.0.0"
153 |
154 | babel-core@^6.13.2, babel-core@^6.24.1:
155 | version "6.24.1"
156 | resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83"
157 | dependencies:
158 | babel-code-frame "^6.22.0"
159 | babel-generator "^6.24.1"
160 | babel-helpers "^6.24.1"
161 | babel-messages "^6.23.0"
162 | babel-register "^6.24.1"
163 | babel-runtime "^6.22.0"
164 | babel-template "^6.24.1"
165 | babel-traverse "^6.24.1"
166 | babel-types "^6.24.1"
167 | babylon "^6.11.0"
168 | convert-source-map "^1.1.0"
169 | debug "^2.1.1"
170 | json5 "^0.5.0"
171 | lodash "^4.2.0"
172 | minimatch "^3.0.2"
173 | path-is-absolute "^1.0.0"
174 | private "^0.1.6"
175 | slash "^1.0.0"
176 | source-map "^0.5.0"
177 |
178 | babel-generator@^6.24.1:
179 | version "6.24.1"
180 | resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497"
181 | dependencies:
182 | babel-messages "^6.23.0"
183 | babel-runtime "^6.22.0"
184 | babel-types "^6.24.1"
185 | detect-indent "^4.0.0"
186 | jsesc "^1.3.0"
187 | lodash "^4.2.0"
188 | source-map "^0.5.0"
189 | trim-right "^1.0.1"
190 |
191 | babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
192 | version "6.24.1"
193 | resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
194 | dependencies:
195 | babel-helper-explode-assignable-expression "^6.24.1"
196 | babel-runtime "^6.22.0"
197 | babel-types "^6.24.1"
198 |
199 | babel-helper-call-delegate@^6.24.1:
200 | version "6.24.1"
201 | resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
202 | dependencies:
203 | babel-helper-hoist-variables "^6.24.1"
204 | babel-runtime "^6.22.0"
205 | babel-traverse "^6.24.1"
206 | babel-types "^6.24.1"
207 |
208 | babel-helper-define-map@^6.24.1:
209 | version "6.24.1"
210 | resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080"
211 | dependencies:
212 | babel-helper-function-name "^6.24.1"
213 | babel-runtime "^6.22.0"
214 | babel-types "^6.24.1"
215 | lodash "^4.2.0"
216 |
217 | babel-helper-explode-assignable-expression@^6.24.1:
218 | version "6.24.1"
219 | resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
220 | dependencies:
221 | babel-runtime "^6.22.0"
222 | babel-traverse "^6.24.1"
223 | babel-types "^6.24.1"
224 |
225 | babel-helper-function-name@^6.24.1:
226 | version "6.24.1"
227 | resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
228 | dependencies:
229 | babel-helper-get-function-arity "^6.24.1"
230 | babel-runtime "^6.22.0"
231 | babel-template "^6.24.1"
232 | babel-traverse "^6.24.1"
233 | babel-types "^6.24.1"
234 |
235 | babel-helper-get-function-arity@^6.24.1:
236 | version "6.24.1"
237 | resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
238 | dependencies:
239 | babel-runtime "^6.22.0"
240 | babel-types "^6.24.1"
241 |
242 | babel-helper-hoist-variables@^6.24.1:
243 | version "6.24.1"
244 | resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
245 | dependencies:
246 | babel-runtime "^6.22.0"
247 | babel-types "^6.24.1"
248 |
249 | babel-helper-optimise-call-expression@^6.24.1:
250 | version "6.24.1"
251 | resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
252 | dependencies:
253 | babel-runtime "^6.22.0"
254 | babel-types "^6.24.1"
255 |
256 | babel-helper-regex@^6.24.1:
257 | version "6.24.1"
258 | resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8"
259 | dependencies:
260 | babel-runtime "^6.22.0"
261 | babel-types "^6.24.1"
262 | lodash "^4.2.0"
263 |
264 | babel-helper-replace-supers@^6.24.1:
265 | version "6.24.1"
266 | resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
267 | dependencies:
268 | babel-helper-optimise-call-expression "^6.24.1"
269 | babel-messages "^6.23.0"
270 | babel-runtime "^6.22.0"
271 | babel-template "^6.24.1"
272 | babel-traverse "^6.24.1"
273 | babel-types "^6.24.1"
274 |
275 | babel-helpers@^6.24.1:
276 | version "6.24.1"
277 | resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
278 | dependencies:
279 | babel-runtime "^6.22.0"
280 | babel-template "^6.24.1"
281 |
282 | babel-messages@^6.23.0:
283 | version "6.23.0"
284 | resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
285 | dependencies:
286 | babel-runtime "^6.22.0"
287 |
288 | babel-plugin-add-module-exports@^0.2.1:
289 | version "0.2.1"
290 | resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25"
291 |
292 | babel-plugin-check-es2015-constants@^6.22.0:
293 | version "6.22.0"
294 | resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
295 | dependencies:
296 | babel-runtime "^6.22.0"
297 |
298 | babel-plugin-syntax-exponentiation-operator@^6.8.0:
299 | version "6.13.0"
300 | resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
301 |
302 | babel-plugin-transform-es2015-arrow-functions@^6.22.0:
303 | version "6.22.0"
304 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
305 | dependencies:
306 | babel-runtime "^6.22.0"
307 |
308 | babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
309 | version "6.22.0"
310 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
311 | dependencies:
312 | babel-runtime "^6.22.0"
313 |
314 | babel-plugin-transform-es2015-block-scoping@^6.24.1:
315 | version "6.24.1"
316 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576"
317 | dependencies:
318 | babel-runtime "^6.22.0"
319 | babel-template "^6.24.1"
320 | babel-traverse "^6.24.1"
321 | babel-types "^6.24.1"
322 | lodash "^4.2.0"
323 |
324 | babel-plugin-transform-es2015-classes@^6.24.1:
325 | version "6.24.1"
326 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
327 | dependencies:
328 | babel-helper-define-map "^6.24.1"
329 | babel-helper-function-name "^6.24.1"
330 | babel-helper-optimise-call-expression "^6.24.1"
331 | babel-helper-replace-supers "^6.24.1"
332 | babel-messages "^6.23.0"
333 | babel-runtime "^6.22.0"
334 | babel-template "^6.24.1"
335 | babel-traverse "^6.24.1"
336 | babel-types "^6.24.1"
337 |
338 | babel-plugin-transform-es2015-computed-properties@^6.24.1:
339 | version "6.24.1"
340 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
341 | dependencies:
342 | babel-runtime "^6.22.0"
343 | babel-template "^6.24.1"
344 |
345 | babel-plugin-transform-es2015-destructuring@^6.22.0:
346 | version "6.23.0"
347 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
348 | dependencies:
349 | babel-runtime "^6.22.0"
350 |
351 | babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
352 | version "6.24.1"
353 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
354 | dependencies:
355 | babel-runtime "^6.22.0"
356 | babel-types "^6.24.1"
357 |
358 | babel-plugin-transform-es2015-for-of@^6.22.0:
359 | version "6.23.0"
360 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
361 | dependencies:
362 | babel-runtime "^6.22.0"
363 |
364 | babel-plugin-transform-es2015-function-name@^6.24.1:
365 | version "6.24.1"
366 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
367 | dependencies:
368 | babel-helper-function-name "^6.24.1"
369 | babel-runtime "^6.22.0"
370 | babel-types "^6.24.1"
371 |
372 | babel-plugin-transform-es2015-literals@^6.22.0:
373 | version "6.22.0"
374 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
375 | dependencies:
376 | babel-runtime "^6.22.0"
377 |
378 | babel-plugin-transform-es2015-modules-amd@^6.24.1:
379 | version "6.24.1"
380 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
381 | dependencies:
382 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
383 | babel-runtime "^6.22.0"
384 | babel-template "^6.24.1"
385 |
386 | babel-plugin-transform-es2015-modules-commonjs@^6.24.1:
387 | version "6.24.1"
388 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe"
389 | dependencies:
390 | babel-plugin-transform-strict-mode "^6.24.1"
391 | babel-runtime "^6.22.0"
392 | babel-template "^6.24.1"
393 | babel-types "^6.24.1"
394 |
395 | babel-plugin-transform-es2015-modules-systemjs@^6.24.1:
396 | version "6.24.1"
397 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
398 | dependencies:
399 | babel-helper-hoist-variables "^6.24.1"
400 | babel-runtime "^6.22.0"
401 | babel-template "^6.24.1"
402 |
403 | babel-plugin-transform-es2015-modules-umd@^6.24.1:
404 | version "6.24.1"
405 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
406 | dependencies:
407 | babel-plugin-transform-es2015-modules-amd "^6.24.1"
408 | babel-runtime "^6.22.0"
409 | babel-template "^6.24.1"
410 |
411 | babel-plugin-transform-es2015-object-super@^6.24.1:
412 | version "6.24.1"
413 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
414 | dependencies:
415 | babel-helper-replace-supers "^6.24.1"
416 | babel-runtime "^6.22.0"
417 |
418 | babel-plugin-transform-es2015-parameters@^6.24.1:
419 | version "6.24.1"
420 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
421 | dependencies:
422 | babel-helper-call-delegate "^6.24.1"
423 | babel-helper-get-function-arity "^6.24.1"
424 | babel-runtime "^6.22.0"
425 | babel-template "^6.24.1"
426 | babel-traverse "^6.24.1"
427 | babel-types "^6.24.1"
428 |
429 | babel-plugin-transform-es2015-shorthand-properties@^6.24.1:
430 | version "6.24.1"
431 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
432 | dependencies:
433 | babel-runtime "^6.22.0"
434 | babel-types "^6.24.1"
435 |
436 | babel-plugin-transform-es2015-spread@^6.22.0:
437 | version "6.22.0"
438 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
439 | dependencies:
440 | babel-runtime "^6.22.0"
441 |
442 | babel-plugin-transform-es2015-sticky-regex@^6.24.1:
443 | version "6.24.1"
444 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
445 | dependencies:
446 | babel-helper-regex "^6.24.1"
447 | babel-runtime "^6.22.0"
448 | babel-types "^6.24.1"
449 |
450 | babel-plugin-transform-es2015-template-literals@^6.22.0:
451 | version "6.22.0"
452 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
453 | dependencies:
454 | babel-runtime "^6.22.0"
455 |
456 | babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
457 | version "6.23.0"
458 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
459 | dependencies:
460 | babel-runtime "^6.22.0"
461 |
462 | babel-plugin-transform-es2015-unicode-regex@^6.24.1:
463 | version "6.24.1"
464 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
465 | dependencies:
466 | babel-helper-regex "^6.24.1"
467 | babel-runtime "^6.22.0"
468 | regexpu-core "^2.0.0"
469 |
470 | babel-plugin-transform-exponentiation-operator@^6.24.1:
471 | version "6.24.1"
472 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
473 | dependencies:
474 | babel-helper-builder-binary-assignment-operator-visitor "^6.24.1"
475 | babel-plugin-syntax-exponentiation-operator "^6.8.0"
476 | babel-runtime "^6.22.0"
477 |
478 | babel-plugin-transform-regenerator@^6.24.1:
479 | version "6.24.1"
480 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418"
481 | dependencies:
482 | regenerator-transform "0.9.11"
483 |
484 | babel-plugin-transform-strict-mode@^6.24.1:
485 | version "6.24.1"
486 | resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
487 | dependencies:
488 | babel-runtime "^6.22.0"
489 | babel-types "^6.24.1"
490 |
491 | babel-polyfill@^6.23.0:
492 | version "6.23.0"
493 | resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
494 | dependencies:
495 | babel-runtime "^6.22.0"
496 | core-js "^2.4.0"
497 | regenerator-runtime "^0.10.0"
498 |
499 | babel-preset-es2015@^6.13.2:
500 | version "6.24.1"
501 | resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
502 | dependencies:
503 | babel-plugin-check-es2015-constants "^6.22.0"
504 | babel-plugin-transform-es2015-arrow-functions "^6.22.0"
505 | babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
506 | babel-plugin-transform-es2015-block-scoping "^6.24.1"
507 | babel-plugin-transform-es2015-classes "^6.24.1"
508 | babel-plugin-transform-es2015-computed-properties "^6.24.1"
509 | babel-plugin-transform-es2015-destructuring "^6.22.0"
510 | babel-plugin-transform-es2015-duplicate-keys "^6.24.1"
511 | babel-plugin-transform-es2015-for-of "^6.22.0"
512 | babel-plugin-transform-es2015-function-name "^6.24.1"
513 | babel-plugin-transform-es2015-literals "^6.22.0"
514 | babel-plugin-transform-es2015-modules-amd "^6.24.1"
515 | babel-plugin-transform-es2015-modules-commonjs "^6.24.1"
516 | babel-plugin-transform-es2015-modules-systemjs "^6.24.1"
517 | babel-plugin-transform-es2015-modules-umd "^6.24.1"
518 | babel-plugin-transform-es2015-object-super "^6.24.1"
519 | babel-plugin-transform-es2015-parameters "^6.24.1"
520 | babel-plugin-transform-es2015-shorthand-properties "^6.24.1"
521 | babel-plugin-transform-es2015-spread "^6.22.0"
522 | babel-plugin-transform-es2015-sticky-regex "^6.24.1"
523 | babel-plugin-transform-es2015-template-literals "^6.22.0"
524 | babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
525 | babel-plugin-transform-es2015-unicode-regex "^6.24.1"
526 | babel-plugin-transform-regenerator "^6.24.1"
527 |
528 | babel-preset-es2016@^6.11.3:
529 | version "6.24.1"
530 | resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b"
531 | dependencies:
532 | babel-plugin-transform-exponentiation-operator "^6.24.1"
533 |
534 | babel-register@^6.24.1:
535 | version "6.24.1"
536 | resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f"
537 | dependencies:
538 | babel-core "^6.24.1"
539 | babel-runtime "^6.22.0"
540 | core-js "^2.4.0"
541 | home-or-tmp "^2.0.0"
542 | lodash "^4.2.0"
543 | mkdirp "^0.5.1"
544 | source-map-support "^0.4.2"
545 |
546 | babel-runtime@^6.18.0, babel-runtime@^6.22.0:
547 | version "6.23.0"
548 | resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
549 | dependencies:
550 | core-js "^2.4.0"
551 | regenerator-runtime "^0.10.0"
552 |
553 | babel-template@^6.24.1:
554 | version "6.24.1"
555 | resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333"
556 | dependencies:
557 | babel-runtime "^6.22.0"
558 | babel-traverse "^6.24.1"
559 | babel-types "^6.24.1"
560 | babylon "^6.11.0"
561 | lodash "^4.2.0"
562 |
563 | babel-traverse@^6.24.1:
564 | version "6.24.1"
565 | resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695"
566 | dependencies:
567 | babel-code-frame "^6.22.0"
568 | babel-messages "^6.23.0"
569 | babel-runtime "^6.22.0"
570 | babel-types "^6.24.1"
571 | babylon "^6.15.0"
572 | debug "^2.2.0"
573 | globals "^9.0.0"
574 | invariant "^2.2.0"
575 | lodash "^4.2.0"
576 |
577 | babel-types@^6.19.0, babel-types@^6.24.1:
578 | version "6.24.1"
579 | resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
580 | dependencies:
581 | babel-runtime "^6.22.0"
582 | esutils "^2.0.2"
583 | lodash "^4.2.0"
584 | to-fast-properties "^1.0.1"
585 |
586 | babylon@^6.11.0, babylon@^6.15.0:
587 | version "6.17.0"
588 | resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932"
589 |
590 | balanced-match@^0.4.1:
591 | version "0.4.2"
592 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
593 |
594 | bcrypt-pbkdf@^1.0.0:
595 | version "1.0.1"
596 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
597 | dependencies:
598 | tweetnacl "^0.14.3"
599 |
600 | binary-extensions@^1.0.0:
601 | version "1.8.0"
602 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
603 |
604 | block-stream@*:
605 | version "0.0.9"
606 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
607 | dependencies:
608 | inherits "~2.0.0"
609 |
610 | boom@2.x.x:
611 | version "2.10.1"
612 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
613 | dependencies:
614 | hoek "2.x.x"
615 |
616 | brace-expansion@^1.0.0:
617 | version "1.1.7"
618 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
619 | dependencies:
620 | balanced-match "^0.4.1"
621 | concat-map "0.0.1"
622 |
623 | braces@^1.8.2:
624 | version "1.8.5"
625 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
626 | dependencies:
627 | expand-range "^1.8.1"
628 | preserve "^0.2.0"
629 | repeat-element "^1.1.2"
630 |
631 | buffer-shims@~1.0.0:
632 | version "1.0.0"
633 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
634 |
635 | caseless@~0.12.0:
636 | version "0.12.0"
637 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
638 |
639 | chalk@^1.1.0:
640 | version "1.1.3"
641 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
642 | dependencies:
643 | ansi-styles "^2.2.1"
644 | escape-string-regexp "^1.0.2"
645 | has-ansi "^2.0.0"
646 | strip-ansi "^3.0.0"
647 | supports-color "^2.0.0"
648 |
649 | chokidar@^1.6.1:
650 | version "1.6.1"
651 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
652 | dependencies:
653 | anymatch "^1.3.0"
654 | async-each "^1.0.0"
655 | glob-parent "^2.0.0"
656 | inherits "^2.0.1"
657 | is-binary-path "^1.0.0"
658 | is-glob "^2.0.0"
659 | path-is-absolute "^1.0.0"
660 | readdirp "^2.0.0"
661 | optionalDependencies:
662 | fsevents "^1.0.0"
663 |
664 | co@^4.6.0:
665 | version "4.6.0"
666 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
667 |
668 | code-point-at@^1.0.0:
669 | version "1.1.0"
670 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
671 |
672 | combined-stream@^1.0.5, combined-stream@~1.0.5:
673 | version "1.0.5"
674 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
675 | dependencies:
676 | delayed-stream "~1.0.0"
677 |
678 | commander@^2.11.0:
679 | version "2.11.0"
680 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
681 |
682 | commander@^2.8.1:
683 | version "2.9.0"
684 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
685 | dependencies:
686 | graceful-readlink ">= 1.0.0"
687 |
688 | concat-map@0.0.1:
689 | version "0.0.1"
690 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
691 |
692 | connect-history-api-fallback@^1.3.0:
693 | version "1.3.0"
694 | resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169"
695 |
696 | console-control-strings@^1.0.0, console-control-strings@~1.1.0:
697 | version "1.1.0"
698 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
699 |
700 | content-disposition@0.5.2:
701 | version "0.5.2"
702 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
703 |
704 | content-type-parser@^1.0.1:
705 | version "1.0.1"
706 | resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94"
707 |
708 | content-type@~1.0.2:
709 | version "1.0.2"
710 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
711 |
712 | convert-source-map@^1.1.0:
713 | version "1.5.0"
714 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
715 |
716 | cookie-signature@1.0.6:
717 | version "1.0.6"
718 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
719 |
720 | cookie@0.3.1:
721 | version "0.3.1"
722 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
723 |
724 | core-js@^1.0.0:
725 | version "1.2.7"
726 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
727 |
728 | core-js@^2.4.0:
729 | version "2.4.1"
730 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
731 |
732 | core-util-is@~1.0.0:
733 | version "1.0.2"
734 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
735 |
736 | cryptiles@2.x.x:
737 | version "2.0.5"
738 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
739 | dependencies:
740 | boom "2.x.x"
741 |
742 | cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
743 | version "0.3.2"
744 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
745 |
746 | "cssstyle@>= 0.2.37 < 0.3.0":
747 | version "0.2.37"
748 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
749 | dependencies:
750 | cssom "0.3.x"
751 |
752 | dashdash@^1.12.0:
753 | version "1.14.1"
754 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
755 | dependencies:
756 | assert-plus "^1.0.0"
757 |
758 | debug@2.6.1, debug@^2.1.1:
759 | version "2.6.1"
760 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
761 | dependencies:
762 | ms "0.7.2"
763 |
764 | debug@2.6.4, debug@^2.2.0:
765 | version "2.6.4"
766 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0"
767 | dependencies:
768 | ms "0.7.3"
769 |
770 | deep-extend@~0.4.0:
771 | version "0.4.1"
772 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
773 |
774 | deep-is@~0.1.3:
775 | version "0.1.3"
776 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
777 |
778 | delayed-stream@~1.0.0:
779 | version "1.0.0"
780 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
781 |
782 | delegates@^1.0.0:
783 | version "1.0.0"
784 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
785 |
786 | depd@1.1.0, depd@~1.1.0:
787 | version "1.1.0"
788 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
789 |
790 | destroy@~1.0.4:
791 | version "1.0.4"
792 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
793 |
794 | detect-indent@^4.0.0:
795 | version "4.0.0"
796 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
797 | dependencies:
798 | repeating "^2.0.0"
799 |
800 | ecc-jsbn@~0.1.1:
801 | version "0.1.1"
802 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
803 | dependencies:
804 | jsbn "~0.1.0"
805 |
806 | ee-first@1.1.1:
807 | version "1.1.1"
808 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
809 |
810 | encodeurl@~1.0.1:
811 | version "1.0.1"
812 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
813 |
814 | encoding@^0.1.11:
815 | version "0.1.12"
816 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
817 | dependencies:
818 | iconv-lite "~0.4.13"
819 |
820 | escape-html@~1.0.3:
821 | version "1.0.3"
822 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
823 |
824 | escape-string-regexp@^1.0.2:
825 | version "1.0.5"
826 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
827 |
828 | escodegen@^1.6.1:
829 | version "1.8.1"
830 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
831 | dependencies:
832 | esprima "^2.7.1"
833 | estraverse "^1.9.1"
834 | esutils "^2.0.2"
835 | optionator "^0.8.1"
836 | optionalDependencies:
837 | source-map "~0.2.0"
838 |
839 | esprima@^2.7.1:
840 | version "2.7.3"
841 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
842 |
843 | estraverse@^1.9.1:
844 | version "1.9.3"
845 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
846 |
847 | esutils@^2.0.2:
848 | version "2.0.2"
849 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
850 |
851 | etag@~1.8.0:
852 | version "1.8.0"
853 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
854 |
855 | eventemitter3@1.x.x:
856 | version "1.2.0"
857 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
858 |
859 | expand-brackets@^0.1.4:
860 | version "0.1.5"
861 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
862 | dependencies:
863 | is-posix-bracket "^0.1.0"
864 |
865 | expand-range@^1.8.1:
866 | version "1.8.2"
867 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
868 | dependencies:
869 | fill-range "^2.1.0"
870 |
871 | express@^4.15.2:
872 | version "4.15.2"
873 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35"
874 | dependencies:
875 | accepts "~1.3.3"
876 | array-flatten "1.1.1"
877 | content-disposition "0.5.2"
878 | content-type "~1.0.2"
879 | cookie "0.3.1"
880 | cookie-signature "1.0.6"
881 | debug "2.6.1"
882 | depd "~1.1.0"
883 | encodeurl "~1.0.1"
884 | escape-html "~1.0.3"
885 | etag "~1.8.0"
886 | finalhandler "~1.0.0"
887 | fresh "0.5.0"
888 | merge-descriptors "1.0.1"
889 | methods "~1.1.2"
890 | on-finished "~2.3.0"
891 | parseurl "~1.3.1"
892 | path-to-regexp "0.1.7"
893 | proxy-addr "~1.1.3"
894 | qs "6.4.0"
895 | range-parser "~1.2.0"
896 | send "0.15.1"
897 | serve-static "1.12.1"
898 | setprototypeof "1.0.3"
899 | statuses "~1.3.1"
900 | type-is "~1.6.14"
901 | utils-merge "1.0.0"
902 | vary "~1.1.0"
903 |
904 | extend@~3.0.0:
905 | version "3.0.0"
906 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
907 |
908 | extglob@^0.3.1:
909 | version "0.3.2"
910 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
911 | dependencies:
912 | is-extglob "^1.0.0"
913 |
914 | extsprintf@1.0.2:
915 | version "1.0.2"
916 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
917 |
918 | fast-levenshtein@~2.0.4:
919 | version "2.0.6"
920 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
921 |
922 | fbjs@^0.8.9:
923 | version "0.8.12"
924 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
925 | dependencies:
926 | core-js "^1.0.0"
927 | isomorphic-fetch "^2.1.1"
928 | loose-envify "^1.0.0"
929 | object-assign "^4.1.0"
930 | promise "^7.1.1"
931 | setimmediate "^1.0.5"
932 | ua-parser-js "^0.7.9"
933 |
934 | filename-regex@^2.0.0:
935 | version "2.0.0"
936 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
937 |
938 | fill-range@^2.1.0:
939 | version "2.2.3"
940 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
941 | dependencies:
942 | is-number "^2.1.0"
943 | isobject "^2.0.0"
944 | randomatic "^1.1.3"
945 | repeat-element "^1.1.2"
946 | repeat-string "^1.5.2"
947 |
948 | finalhandler@~1.0.0:
949 | version "1.0.2"
950 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.2.tgz#d0e36f9dbc557f2de14423df6261889e9d60c93a"
951 | dependencies:
952 | debug "2.6.4"
953 | encodeurl "~1.0.1"
954 | escape-html "~1.0.3"
955 | on-finished "~2.3.0"
956 | parseurl "~1.3.1"
957 | statuses "~1.3.1"
958 | unpipe "~1.0.0"
959 |
960 | for-in@^1.0.1:
961 | version "1.0.2"
962 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
963 |
964 | for-own@^0.1.4:
965 | version "0.1.5"
966 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
967 | dependencies:
968 | for-in "^1.0.1"
969 |
970 | forever-agent@~0.6.1:
971 | version "0.6.1"
972 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
973 |
974 | form-data@~2.1.1:
975 | version "2.1.4"
976 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
977 | dependencies:
978 | asynckit "^0.4.0"
979 | combined-stream "^1.0.5"
980 | mime-types "^2.1.12"
981 |
982 | forwarded@~0.1.0:
983 | version "0.1.0"
984 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
985 |
986 | fresh@0.5.0:
987 | version "0.5.0"
988 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e"
989 |
990 | fs-readdir-recursive@^1.0.0:
991 | version "1.0.0"
992 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
993 |
994 | fs.realpath@^1.0.0:
995 | version "1.0.0"
996 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
997 |
998 | fsevents@^1.0.0:
999 | version "1.1.1"
1000 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff"
1001 | dependencies:
1002 | nan "^2.3.0"
1003 | node-pre-gyp "^0.6.29"
1004 |
1005 | fstream-ignore@^1.0.5:
1006 | version "1.0.5"
1007 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
1008 | dependencies:
1009 | fstream "^1.0.0"
1010 | inherits "2"
1011 | minimatch "^3.0.0"
1012 |
1013 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
1014 | version "1.0.11"
1015 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
1016 | dependencies:
1017 | graceful-fs "^4.1.2"
1018 | inherits "~2.0.0"
1019 | mkdirp ">=0.5 0"
1020 | rimraf "2"
1021 |
1022 | gauge@~2.7.1:
1023 | version "2.7.4"
1024 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
1025 | dependencies:
1026 | aproba "^1.0.3"
1027 | console-control-strings "^1.0.0"
1028 | has-unicode "^2.0.0"
1029 | object-assign "^4.1.0"
1030 | signal-exit "^3.0.0"
1031 | string-width "^1.0.1"
1032 | strip-ansi "^3.0.1"
1033 | wide-align "^1.1.0"
1034 |
1035 | getpass@^0.1.1:
1036 | version "0.1.7"
1037 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
1038 | dependencies:
1039 | assert-plus "^1.0.0"
1040 |
1041 | glob-base@^0.3.0:
1042 | version "0.3.0"
1043 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
1044 | dependencies:
1045 | glob-parent "^2.0.0"
1046 | is-glob "^2.0.0"
1047 |
1048 | glob-parent@^2.0.0:
1049 | version "2.0.0"
1050 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
1051 | dependencies:
1052 | is-glob "^2.0.0"
1053 |
1054 | glob-to-regexp@^0.3.0:
1055 | version "0.3.0"
1056 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
1057 |
1058 | glob@^7.0.0, glob@^7.0.5:
1059 | version "7.1.1"
1060 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
1061 | dependencies:
1062 | fs.realpath "^1.0.0"
1063 | inflight "^1.0.4"
1064 | inherits "2"
1065 | minimatch "^3.0.2"
1066 | once "^1.3.0"
1067 | path-is-absolute "^1.0.0"
1068 |
1069 | globals@^9.0.0:
1070 | version "9.17.0"
1071 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
1072 |
1073 | graceful-fs@^4.1.2, graceful-fs@^4.1.4:
1074 | version "4.1.11"
1075 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
1076 |
1077 | "graceful-readlink@>= 1.0.0":
1078 | version "1.0.1"
1079 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
1080 |
1081 | har-schema@^1.0.5:
1082 | version "1.0.5"
1083 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
1084 |
1085 | har-validator@~4.2.1:
1086 | version "4.2.1"
1087 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
1088 | dependencies:
1089 | ajv "^4.9.1"
1090 | har-schema "^1.0.5"
1091 |
1092 | has-ansi@^2.0.0:
1093 | version "2.0.0"
1094 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
1095 | dependencies:
1096 | ansi-regex "^2.0.0"
1097 |
1098 | has-unicode@^2.0.0:
1099 | version "2.0.1"
1100 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
1101 |
1102 | hawk@~3.1.3:
1103 | version "3.1.3"
1104 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
1105 | dependencies:
1106 | boom "2.x.x"
1107 | cryptiles "2.x.x"
1108 | hoek "2.x.x"
1109 | sntp "1.x.x"
1110 |
1111 | hoek@2.x.x:
1112 | version "2.16.3"
1113 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
1114 |
1115 | home-or-tmp@^2.0.0:
1116 | version "2.0.0"
1117 | resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
1118 | dependencies:
1119 | os-homedir "^1.0.0"
1120 | os-tmpdir "^1.0.1"
1121 |
1122 | html-encoding-sniffer@^1.0.1:
1123 | version "1.0.1"
1124 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da"
1125 | dependencies:
1126 | whatwg-encoding "^1.0.1"
1127 |
1128 | http-errors@~1.6.1:
1129 | version "1.6.1"
1130 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257"
1131 | dependencies:
1132 | depd "1.1.0"
1133 | inherits "2.0.3"
1134 | setprototypeof "1.0.3"
1135 | statuses ">= 1.3.1 < 2"
1136 |
1137 | http-proxy-middleware@^0.17.4:
1138 | version "0.17.4"
1139 | resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
1140 | dependencies:
1141 | http-proxy "^1.16.2"
1142 | is-glob "^3.1.0"
1143 | lodash "^4.17.2"
1144 | micromatch "^2.3.11"
1145 |
1146 | http-proxy@^1.16.2:
1147 | version "1.16.2"
1148 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742"
1149 | dependencies:
1150 | eventemitter3 "1.x.x"
1151 | requires-port "1.x.x"
1152 |
1153 | http-signature@~1.1.0:
1154 | version "1.1.1"
1155 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
1156 | dependencies:
1157 | assert-plus "^0.2.0"
1158 | jsprim "^1.2.2"
1159 | sshpk "^1.7.0"
1160 |
1161 | iconv-lite@0.4.13, iconv-lite@~0.4.13:
1162 | version "0.4.13"
1163 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
1164 |
1165 | inflight@^1.0.4:
1166 | version "1.0.6"
1167 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1168 | dependencies:
1169 | once "^1.3.0"
1170 | wrappy "1"
1171 |
1172 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
1173 | version "2.0.3"
1174 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1175 |
1176 | ini@~1.3.0:
1177 | version "1.3.4"
1178 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
1179 |
1180 | invariant@^2.2.0:
1181 | version "2.2.2"
1182 | resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
1183 | dependencies:
1184 | loose-envify "^1.0.0"
1185 |
1186 | ipaddr.js@1.3.0:
1187 | version "1.3.0"
1188 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
1189 |
1190 | is-binary-path@^1.0.0:
1191 | version "1.0.1"
1192 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
1193 | dependencies:
1194 | binary-extensions "^1.0.0"
1195 |
1196 | is-buffer@^1.1.5:
1197 | version "1.1.5"
1198 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
1199 |
1200 | is-dotfile@^1.0.0:
1201 | version "1.0.2"
1202 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
1203 |
1204 | is-equal-shallow@^0.1.3:
1205 | version "0.1.3"
1206 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
1207 | dependencies:
1208 | is-primitive "^2.0.0"
1209 |
1210 | is-extendable@^0.1.1:
1211 | version "0.1.1"
1212 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
1213 |
1214 | is-extglob@^1.0.0:
1215 | version "1.0.0"
1216 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
1217 |
1218 | is-extglob@^2.1.0:
1219 | version "2.1.1"
1220 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1221 |
1222 | is-finite@^1.0.0:
1223 | version "1.0.2"
1224 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
1225 | dependencies:
1226 | number-is-nan "^1.0.0"
1227 |
1228 | is-fullwidth-code-point@^1.0.0:
1229 | version "1.0.0"
1230 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
1231 | dependencies:
1232 | number-is-nan "^1.0.0"
1233 |
1234 | is-glob@^2.0.0, is-glob@^2.0.1:
1235 | version "2.0.1"
1236 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
1237 | dependencies:
1238 | is-extglob "^1.0.0"
1239 |
1240 | is-glob@^3.1.0:
1241 | version "3.1.0"
1242 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
1243 | dependencies:
1244 | is-extglob "^2.1.0"
1245 |
1246 | is-number@^2.0.2, is-number@^2.1.0:
1247 | version "2.1.0"
1248 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
1249 | dependencies:
1250 | kind-of "^3.0.2"
1251 |
1252 | is-posix-bracket@^0.1.0:
1253 | version "0.1.1"
1254 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
1255 |
1256 | is-primitive@^2.0.0:
1257 | version "2.0.0"
1258 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
1259 |
1260 | is-stream@^1.0.1:
1261 | version "1.1.0"
1262 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
1263 |
1264 | is-typedarray@~1.0.0:
1265 | version "1.0.0"
1266 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1267 |
1268 | isarray@1.0.0, isarray@~1.0.0:
1269 | version "1.0.0"
1270 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1271 |
1272 | isobject@^2.0.0:
1273 | version "2.1.0"
1274 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
1275 | dependencies:
1276 | isarray "1.0.0"
1277 |
1278 | isomorphic-fetch@^2.1.1:
1279 | version "2.2.1"
1280 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
1281 | dependencies:
1282 | node-fetch "^1.0.1"
1283 | whatwg-fetch ">=0.10.0"
1284 |
1285 | isstream@~0.1.2:
1286 | version "0.1.2"
1287 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
1288 |
1289 | jodid25519@^1.0.0:
1290 | version "1.0.2"
1291 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
1292 | dependencies:
1293 | jsbn "~0.1.0"
1294 |
1295 | js-tokens@^3.0.0:
1296 | version "3.0.1"
1297 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
1298 |
1299 | jsbn@~0.1.0:
1300 | version "0.1.1"
1301 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
1302 |
1303 | jsdom@^9.4.5:
1304 | version "9.12.0"
1305 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
1306 | dependencies:
1307 | abab "^1.0.3"
1308 | acorn "^4.0.4"
1309 | acorn-globals "^3.1.0"
1310 | array-equal "^1.0.0"
1311 | content-type-parser "^1.0.1"
1312 | cssom ">= 0.3.2 < 0.4.0"
1313 | cssstyle ">= 0.2.37 < 0.3.0"
1314 | escodegen "^1.6.1"
1315 | html-encoding-sniffer "^1.0.1"
1316 | nwmatcher ">= 1.3.9 < 2.0.0"
1317 | parse5 "^1.5.1"
1318 | request "^2.79.0"
1319 | sax "^1.2.1"
1320 | symbol-tree "^3.2.1"
1321 | tough-cookie "^2.3.2"
1322 | webidl-conversions "^4.0.0"
1323 | whatwg-encoding "^1.0.1"
1324 | whatwg-url "^4.3.0"
1325 | xml-name-validator "^2.0.1"
1326 |
1327 | jsesc@^1.3.0:
1328 | version "1.3.0"
1329 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
1330 |
1331 | jsesc@~0.5.0:
1332 | version "0.5.0"
1333 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
1334 |
1335 | json-schema@0.2.3:
1336 | version "0.2.3"
1337 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
1338 |
1339 | json-stable-stringify@^1.0.1:
1340 | version "1.0.1"
1341 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
1342 | dependencies:
1343 | jsonify "~0.0.0"
1344 |
1345 | json-stringify-safe@~5.0.1:
1346 | version "5.0.1"
1347 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
1348 |
1349 | json5@^0.5.0:
1350 | version "0.5.1"
1351 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
1352 |
1353 | jsonify@~0.0.0:
1354 | version "0.0.0"
1355 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
1356 |
1357 | jsprim@^1.2.2:
1358 | version "1.4.0"
1359 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918"
1360 | dependencies:
1361 | assert-plus "1.0.0"
1362 | extsprintf "1.0.2"
1363 | json-schema "0.2.3"
1364 | verror "1.3.6"
1365 |
1366 | kind-of@^3.0.2:
1367 | version "3.2.0"
1368 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07"
1369 | dependencies:
1370 | is-buffer "^1.1.5"
1371 |
1372 | levn@~0.3.0:
1373 | version "0.3.0"
1374 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
1375 | dependencies:
1376 | prelude-ls "~1.1.2"
1377 | type-check "~0.3.2"
1378 |
1379 | lodash@^4.17.2, lodash@^4.2.0:
1380 | version "4.17.4"
1381 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
1382 |
1383 | loose-envify@^1.0.0, loose-envify@^1.1.0:
1384 | version "1.3.1"
1385 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
1386 | dependencies:
1387 | js-tokens "^3.0.0"
1388 |
1389 | media-typer@0.3.0:
1390 | version "0.3.0"
1391 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1392 |
1393 | merge-descriptors@1.0.1:
1394 | version "1.0.1"
1395 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1396 |
1397 | methods@~1.1.2:
1398 | version "1.1.2"
1399 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1400 |
1401 | micromatch@^2.1.5, micromatch@^2.3.11:
1402 | version "2.3.11"
1403 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
1404 | dependencies:
1405 | arr-diff "^2.0.0"
1406 | array-unique "^0.2.1"
1407 | braces "^1.8.2"
1408 | expand-brackets "^0.1.4"
1409 | extglob "^0.3.1"
1410 | filename-regex "^2.0.0"
1411 | is-extglob "^1.0.0"
1412 | is-glob "^2.0.1"
1413 | kind-of "^3.0.2"
1414 | normalize-path "^2.0.1"
1415 | object.omit "^2.0.0"
1416 | parse-glob "^3.0.4"
1417 | regex-cache "^0.4.2"
1418 |
1419 | mime-db@~1.27.0:
1420 | version "1.27.0"
1421 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
1422 |
1423 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
1424 | version "2.1.15"
1425 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
1426 | dependencies:
1427 | mime-db "~1.27.0"
1428 |
1429 | mime@1.3.4:
1430 | version "1.3.4"
1431 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
1432 |
1433 | minimatch@^3.0.0, minimatch@^3.0.2:
1434 | version "3.0.3"
1435 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
1436 | dependencies:
1437 | brace-expansion "^1.0.0"
1438 |
1439 | minimist@0.0.8:
1440 | version "0.0.8"
1441 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
1442 |
1443 | minimist@^1.2.0:
1444 | version "1.2.0"
1445 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
1446 |
1447 | "mkdirp@>=0.5 0", mkdirp@^0.5.1:
1448 | version "0.5.1"
1449 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
1450 | dependencies:
1451 | minimist "0.0.8"
1452 |
1453 | ms@0.7.2:
1454 | version "0.7.2"
1455 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
1456 |
1457 | ms@0.7.3:
1458 | version "0.7.3"
1459 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
1460 |
1461 | nan@^2.3.0:
1462 | version "2.6.2"
1463 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
1464 |
1465 | negotiator@0.6.1:
1466 | version "0.6.1"
1467 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
1468 |
1469 | node-fetch@^1.0.1:
1470 | version "1.6.3"
1471 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04"
1472 | dependencies:
1473 | encoding "^0.1.11"
1474 | is-stream "^1.0.1"
1475 |
1476 | node-pre-gyp@^0.6.29:
1477 | version "0.6.34"
1478 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7"
1479 | dependencies:
1480 | mkdirp "^0.5.1"
1481 | nopt "^4.0.1"
1482 | npmlog "^4.0.2"
1483 | rc "^1.1.7"
1484 | request "^2.81.0"
1485 | rimraf "^2.6.1"
1486 | semver "^5.3.0"
1487 | tar "^2.2.1"
1488 | tar-pack "^3.4.0"
1489 |
1490 | nopt@^4.0.1:
1491 | version "4.0.1"
1492 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
1493 | dependencies:
1494 | abbrev "1"
1495 | osenv "^0.1.4"
1496 |
1497 | normalize-path@^2.0.1:
1498 | version "2.1.1"
1499 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
1500 | dependencies:
1501 | remove-trailing-separator "^1.0.1"
1502 |
1503 | npmlog@^4.0.2:
1504 | version "4.0.2"
1505 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
1506 | dependencies:
1507 | are-we-there-yet "~1.1.2"
1508 | console-control-strings "~1.1.0"
1509 | gauge "~2.7.1"
1510 | set-blocking "~2.0.0"
1511 |
1512 | number-is-nan@^1.0.0:
1513 | version "1.0.1"
1514 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
1515 |
1516 | "nwmatcher@>= 1.3.9 < 2.0.0":
1517 | version "1.3.9"
1518 | resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a"
1519 |
1520 | oauth-sign@~0.8.1:
1521 | version "0.8.2"
1522 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
1523 |
1524 | object-assign@^4.1.0:
1525 | version "4.1.1"
1526 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1527 |
1528 | object.omit@^2.0.0:
1529 | version "2.0.1"
1530 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
1531 | dependencies:
1532 | for-own "^0.1.4"
1533 | is-extendable "^0.1.1"
1534 |
1535 | on-finished@~2.3.0:
1536 | version "2.3.0"
1537 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1538 | dependencies:
1539 | ee-first "1.1.1"
1540 |
1541 | once@^1.3.0, once@^1.3.3:
1542 | version "1.4.0"
1543 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1544 | dependencies:
1545 | wrappy "1"
1546 |
1547 | optionator@^0.8.1:
1548 | version "0.8.2"
1549 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
1550 | dependencies:
1551 | deep-is "~0.1.3"
1552 | fast-levenshtein "~2.0.4"
1553 | levn "~0.3.0"
1554 | prelude-ls "~1.1.2"
1555 | type-check "~0.3.2"
1556 | wordwrap "~1.0.0"
1557 |
1558 | os-homedir@^1.0.0:
1559 | version "1.0.2"
1560 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
1561 |
1562 | os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
1563 | version "1.0.2"
1564 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
1565 |
1566 | osenv@^0.1.4:
1567 | version "0.1.4"
1568 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
1569 | dependencies:
1570 | os-homedir "^1.0.0"
1571 | os-tmpdir "^1.0.0"
1572 |
1573 | output-file-sync@^1.1.0:
1574 | version "1.1.2"
1575 | resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
1576 | dependencies:
1577 | graceful-fs "^4.1.4"
1578 | mkdirp "^0.5.1"
1579 | object-assign "^4.1.0"
1580 |
1581 | parse-glob@^3.0.4:
1582 | version "3.0.4"
1583 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
1584 | dependencies:
1585 | glob-base "^0.3.0"
1586 | is-dotfile "^1.0.0"
1587 | is-extglob "^1.0.0"
1588 | is-glob "^2.0.0"
1589 |
1590 | parse5@^1.5.1:
1591 | version "1.5.1"
1592 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
1593 |
1594 | parseurl@~1.3.1:
1595 | version "1.3.1"
1596 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
1597 |
1598 | path-is-absolute@^1.0.0:
1599 | version "1.0.1"
1600 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1601 |
1602 | path-to-regexp@0.1.7:
1603 | version "0.1.7"
1604 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1605 |
1606 | performance-now@^0.2.0:
1607 | version "0.2.0"
1608 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
1609 |
1610 | prelude-ls@~1.1.2:
1611 | version "1.1.2"
1612 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1613 |
1614 | preserve@^0.2.0:
1615 | version "0.2.0"
1616 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
1617 |
1618 | private@^0.1.6:
1619 | version "0.1.7"
1620 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
1621 |
1622 | process-nextick-args@~1.0.6:
1623 | version "1.0.7"
1624 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
1625 |
1626 | promise@^7.1.1:
1627 | version "7.1.1"
1628 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
1629 | dependencies:
1630 | asap "~2.0.3"
1631 |
1632 | prop-types@^15.5.7, prop-types@~15.5.7:
1633 | version "15.5.8"
1634 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394"
1635 | dependencies:
1636 | fbjs "^0.8.9"
1637 |
1638 | proxy-addr@~1.1.3:
1639 | version "1.1.4"
1640 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3"
1641 | dependencies:
1642 | forwarded "~0.1.0"
1643 | ipaddr.js "1.3.0"
1644 |
1645 | punycode@^1.4.1:
1646 | version "1.4.1"
1647 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
1648 |
1649 | qs@6.4.0, qs@~6.4.0:
1650 | version "6.4.0"
1651 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
1652 |
1653 | randomatic@^1.1.3:
1654 | version "1.1.6"
1655 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
1656 | dependencies:
1657 | is-number "^2.0.2"
1658 | kind-of "^3.0.2"
1659 |
1660 | range-parser@~1.2.0:
1661 | version "1.2.0"
1662 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
1663 |
1664 | rc@^1.1.7:
1665 | version "1.2.1"
1666 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
1667 | dependencies:
1668 | deep-extend "~0.4.0"
1669 | ini "~1.3.0"
1670 | minimist "^1.2.0"
1671 | strip-json-comments "~2.0.1"
1672 |
1673 | react-dom@^15.3.0:
1674 | version "15.5.4"
1675 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da"
1676 | dependencies:
1677 | fbjs "^0.8.9"
1678 | loose-envify "^1.1.0"
1679 | object-assign "^4.1.0"
1680 | prop-types "~15.5.7"
1681 |
1682 | react@^15.3.0:
1683 | version "15.5.4"
1684 | resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047"
1685 | dependencies:
1686 | fbjs "^0.8.9"
1687 | loose-envify "^1.1.0"
1688 | object-assign "^4.1.0"
1689 | prop-types "^15.5.7"
1690 |
1691 | readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4:
1692 | version "2.2.9"
1693 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
1694 | dependencies:
1695 | buffer-shims "~1.0.0"
1696 | core-util-is "~1.0.0"
1697 | inherits "~2.0.1"
1698 | isarray "~1.0.0"
1699 | process-nextick-args "~1.0.6"
1700 | string_decoder "~1.0.0"
1701 | util-deprecate "~1.0.1"
1702 |
1703 | readdirp@^2.0.0:
1704 | version "2.1.0"
1705 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
1706 | dependencies:
1707 | graceful-fs "^4.1.2"
1708 | minimatch "^3.0.2"
1709 | readable-stream "^2.0.2"
1710 | set-immediate-shim "^1.0.1"
1711 |
1712 | regenerate@^1.2.1:
1713 | version "1.3.2"
1714 | resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
1715 |
1716 | regenerator-runtime@^0.10.0:
1717 | version "0.10.4"
1718 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.4.tgz#74cb6598d3ba2eb18694e968a40e2b3b4df9cf93"
1719 |
1720 | regenerator-transform@0.9.11:
1721 | version "0.9.11"
1722 | resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283"
1723 | dependencies:
1724 | babel-runtime "^6.18.0"
1725 | babel-types "^6.19.0"
1726 | private "^0.1.6"
1727 |
1728 | regex-cache@^0.4.2:
1729 | version "0.4.3"
1730 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
1731 | dependencies:
1732 | is-equal-shallow "^0.1.3"
1733 | is-primitive "^2.0.0"
1734 |
1735 | regexpu-core@^2.0.0:
1736 | version "2.0.0"
1737 | resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
1738 | dependencies:
1739 | regenerate "^1.2.1"
1740 | regjsgen "^0.2.0"
1741 | regjsparser "^0.1.4"
1742 |
1743 | regjsgen@^0.2.0:
1744 | version "0.2.0"
1745 | resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
1746 |
1747 | regjsparser@^0.1.4:
1748 | version "0.1.5"
1749 | resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
1750 | dependencies:
1751 | jsesc "~0.5.0"
1752 |
1753 | remove-trailing-separator@^1.0.1:
1754 | version "1.0.1"
1755 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4"
1756 |
1757 | repeat-element@^1.1.2:
1758 | version "1.1.2"
1759 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
1760 |
1761 | repeat-string@^1.5.2:
1762 | version "1.6.1"
1763 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
1764 |
1765 | repeating@^2.0.0:
1766 | version "2.0.1"
1767 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
1768 | dependencies:
1769 | is-finite "^1.0.0"
1770 |
1771 | request@^2.79.0, request@^2.81.0:
1772 | version "2.81.0"
1773 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
1774 | dependencies:
1775 | aws-sign2 "~0.6.0"
1776 | aws4 "^1.2.1"
1777 | caseless "~0.12.0"
1778 | combined-stream "~1.0.5"
1779 | extend "~3.0.0"
1780 | forever-agent "~0.6.1"
1781 | form-data "~2.1.1"
1782 | har-validator "~4.2.1"
1783 | hawk "~3.1.3"
1784 | http-signature "~1.1.0"
1785 | is-typedarray "~1.0.0"
1786 | isstream "~0.1.2"
1787 | json-stringify-safe "~5.0.1"
1788 | mime-types "~2.1.7"
1789 | oauth-sign "~0.8.1"
1790 | performance-now "^0.2.0"
1791 | qs "~6.4.0"
1792 | safe-buffer "^5.0.1"
1793 | stringstream "~0.0.4"
1794 | tough-cookie "~2.3.0"
1795 | tunnel-agent "^0.6.0"
1796 | uuid "^3.0.0"
1797 |
1798 | requires-port@1.x.x:
1799 | version "1.0.0"
1800 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
1801 |
1802 | rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
1803 | version "2.6.1"
1804 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
1805 | dependencies:
1806 | glob "^7.0.5"
1807 |
1808 | safe-buffer@^5.0.1:
1809 | version "5.0.1"
1810 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
1811 |
1812 | safe-commander@^2.11.1:
1813 | version "2.11.1"
1814 | resolved "https://registry.yarnpkg.com/safe-commander/-/safe-commander-2.11.1.tgz#d23389bfd5d35c8f0a8bbcfd85ea71792b5380a3"
1815 | dependencies:
1816 | commander "^2.11.0"
1817 |
1818 | sax@^1.2.1:
1819 | version "1.2.2"
1820 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828"
1821 |
1822 | semver@^5.3.0:
1823 | version "5.3.0"
1824 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
1825 |
1826 | send@0.15.1:
1827 | version "0.15.1"
1828 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f"
1829 | dependencies:
1830 | debug "2.6.1"
1831 | depd "~1.1.0"
1832 | destroy "~1.0.4"
1833 | encodeurl "~1.0.1"
1834 | escape-html "~1.0.3"
1835 | etag "~1.8.0"
1836 | fresh "0.5.0"
1837 | http-errors "~1.6.1"
1838 | mime "1.3.4"
1839 | ms "0.7.2"
1840 | on-finished "~2.3.0"
1841 | range-parser "~1.2.0"
1842 | statuses "~1.3.1"
1843 |
1844 | serve-static@1.12.1:
1845 | version "1.12.1"
1846 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039"
1847 | dependencies:
1848 | encodeurl "~1.0.1"
1849 | escape-html "~1.0.3"
1850 | parseurl "~1.3.1"
1851 | send "0.15.1"
1852 |
1853 | set-blocking@~2.0.0:
1854 | version "2.0.0"
1855 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
1856 |
1857 | set-immediate-shim@^1.0.1:
1858 | version "1.0.1"
1859 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
1860 |
1861 | setimmediate@^1.0.5:
1862 | version "1.0.5"
1863 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
1864 |
1865 | setprototypeof@1.0.3:
1866 | version "1.0.3"
1867 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
1868 |
1869 | signal-exit@^3.0.0:
1870 | version "3.0.2"
1871 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
1872 |
1873 | slash@^1.0.0:
1874 | version "1.0.0"
1875 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
1876 |
1877 | sntp@1.x.x:
1878 | version "1.0.9"
1879 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
1880 | dependencies:
1881 | hoek "2.x.x"
1882 |
1883 | source-map-support@^0.4.2:
1884 | version "0.4.14"
1885 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef"
1886 | dependencies:
1887 | source-map "^0.5.6"
1888 |
1889 | source-map@^0.5.0, source-map@^0.5.6:
1890 | version "0.5.6"
1891 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
1892 |
1893 | source-map@~0.2.0:
1894 | version "0.2.0"
1895 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
1896 | dependencies:
1897 | amdefine ">=0.0.4"
1898 |
1899 | sshpk@^1.7.0:
1900 | version "1.13.0"
1901 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c"
1902 | dependencies:
1903 | asn1 "~0.2.3"
1904 | assert-plus "^1.0.0"
1905 | dashdash "^1.12.0"
1906 | getpass "^0.1.1"
1907 | optionalDependencies:
1908 | bcrypt-pbkdf "^1.0.0"
1909 | ecc-jsbn "~0.1.1"
1910 | jodid25519 "^1.0.0"
1911 | jsbn "~0.1.0"
1912 | tweetnacl "~0.14.0"
1913 |
1914 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1:
1915 | version "1.3.1"
1916 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e"
1917 |
1918 | string-width@^1.0.1:
1919 | version "1.0.2"
1920 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
1921 | dependencies:
1922 | code-point-at "^1.0.0"
1923 | is-fullwidth-code-point "^1.0.0"
1924 | strip-ansi "^3.0.0"
1925 |
1926 | string_decoder@~1.0.0:
1927 | version "1.0.0"
1928 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667"
1929 | dependencies:
1930 | buffer-shims "~1.0.0"
1931 |
1932 | stringstream@~0.0.4:
1933 | version "0.0.5"
1934 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
1935 |
1936 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
1937 | version "3.0.1"
1938 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
1939 | dependencies:
1940 | ansi-regex "^2.0.0"
1941 |
1942 | strip-json-comments@~2.0.1:
1943 | version "2.0.1"
1944 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1945 |
1946 | supports-color@^2.0.0:
1947 | version "2.0.0"
1948 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
1949 |
1950 | symbol-tree@^3.2.1:
1951 | version "3.2.2"
1952 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
1953 |
1954 | tar-pack@^3.4.0:
1955 | version "3.4.0"
1956 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
1957 | dependencies:
1958 | debug "^2.2.0"
1959 | fstream "^1.0.10"
1960 | fstream-ignore "^1.0.5"
1961 | once "^1.3.3"
1962 | readable-stream "^2.1.4"
1963 | rimraf "^2.5.1"
1964 | tar "^2.2.1"
1965 | uid-number "^0.0.6"
1966 |
1967 | tar@^2.2.1:
1968 | version "2.2.1"
1969 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
1970 | dependencies:
1971 | block-stream "*"
1972 | fstream "^1.0.2"
1973 | inherits "2"
1974 |
1975 | to-fast-properties@^1.0.1:
1976 | version "1.0.2"
1977 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
1978 |
1979 | tough-cookie@^2.3.2, tough-cookie@~2.3.0:
1980 | version "2.3.2"
1981 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
1982 | dependencies:
1983 | punycode "^1.4.1"
1984 |
1985 | tr46@~0.0.3:
1986 | version "0.0.3"
1987 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
1988 |
1989 | trim-right@^1.0.1:
1990 | version "1.0.1"
1991 | resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
1992 |
1993 | tunnel-agent@^0.6.0:
1994 | version "0.6.0"
1995 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
1996 | dependencies:
1997 | safe-buffer "^5.0.1"
1998 |
1999 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
2000 | version "0.14.5"
2001 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
2002 |
2003 | type-check@~0.3.2:
2004 | version "0.3.2"
2005 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
2006 | dependencies:
2007 | prelude-ls "~1.1.2"
2008 |
2009 | type-is@~1.6.14:
2010 | version "1.6.15"
2011 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
2012 | dependencies:
2013 | media-typer "0.3.0"
2014 | mime-types "~2.1.15"
2015 |
2016 | ua-parser-js@^0.7.9:
2017 | version "0.7.12"
2018 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
2019 |
2020 | uid-number@^0.0.6:
2021 | version "0.0.6"
2022 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
2023 |
2024 | unpipe@~1.0.0:
2025 | version "1.0.0"
2026 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2027 |
2028 | user-home@^1.1.1:
2029 | version "1.1.1"
2030 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
2031 |
2032 | util-deprecate@~1.0.1:
2033 | version "1.0.2"
2034 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2035 |
2036 | utils-merge@1.0.0:
2037 | version "1.0.0"
2038 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
2039 |
2040 | uuid@^3.0.0:
2041 | version "3.0.1"
2042 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
2043 |
2044 | v8flags@^2.0.10:
2045 | version "2.1.1"
2046 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
2047 | dependencies:
2048 | user-home "^1.1.1"
2049 |
2050 | vary@~1.1.0:
2051 | version "1.1.1"
2052 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37"
2053 |
2054 | verror@1.3.6:
2055 | version "1.3.6"
2056 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
2057 | dependencies:
2058 | extsprintf "1.0.2"
2059 |
2060 | webidl-conversions@^3.0.0:
2061 | version "3.0.1"
2062 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
2063 |
2064 | webidl-conversions@^4.0.0:
2065 | version "4.0.1"
2066 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0"
2067 |
2068 | whatwg-encoding@^1.0.1:
2069 | version "1.0.1"
2070 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4"
2071 | dependencies:
2072 | iconv-lite "0.4.13"
2073 |
2074 | whatwg-fetch@>=0.10.0:
2075 | version "2.0.3"
2076 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
2077 |
2078 | whatwg-url@^4.3.0:
2079 | version "4.7.1"
2080 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.7.1.tgz#df4dc2e3f25a63b1fa5b32ed6d6c139577d690de"
2081 | dependencies:
2082 | tr46 "~0.0.3"
2083 | webidl-conversions "^3.0.0"
2084 |
2085 | wide-align@^1.1.0:
2086 | version "1.1.0"
2087 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
2088 | dependencies:
2089 | string-width "^1.0.1"
2090 |
2091 | wordwrap@~1.0.0:
2092 | version "1.0.0"
2093 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
2094 |
2095 | wrappy@1:
2096 | version "1.0.2"
2097 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2098 |
2099 | xml-name-validator@^2.0.1:
2100 | version "2.0.1"
2101 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
2102 |
--------------------------------------------------------------------------------