├── example
├── docs.html
├── index.html
├── static
│ ├── sw.js
│ ├── assets
│ │ ├── logic.js
│ │ └── css
│ │ │ └── styles.css
│ └── resources
│ │ └── editor.js
├── build
│ └── generated.html
├── api
│ ├── demo.js
│ └── login.js
├── editor.js
├── run
└── now.json
├── package.json
├── LICENSE
├── .gitignore
├── README.md
├── index.js
└── yarn.lock
/example/docs.html:
--------------------------------------------------------------------------------
1 |
docs
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 | index
--------------------------------------------------------------------------------
/example/static/sw.js:
--------------------------------------------------------------------------------
1 | // service worker here
--------------------------------------------------------------------------------
/example/static/assets/logic.js:
--------------------------------------------------------------------------------
1 | function logic(){}
--------------------------------------------------------------------------------
/example/build/generated.html:
--------------------------------------------------------------------------------
1 | generated
2 |
--------------------------------------------------------------------------------
/example/static/resources/editor.js:
--------------------------------------------------------------------------------
1 | function editor(){}
--------------------------------------------------------------------------------
/example/static/assets/css/styles.css:
--------------------------------------------------------------------------------
1 | body { width: 100%; }
--------------------------------------------------------------------------------
/example/api/demo.js:
--------------------------------------------------------------------------------
1 | module.exports = function (req, res) {
2 | res.end('demo');
3 | }
--------------------------------------------------------------------------------
/example/api/login.js:
--------------------------------------------------------------------------------
1 | module.exports = function (req, res) {
2 | res.setHeader('Content-Type', 'application/json');
3 | res.end('{"foo":"bar"}');
4 | }
--------------------------------------------------------------------------------
/example/editor.js:
--------------------------------------------------------------------------------
1 | const { parse } = require('url');
2 |
3 | module.exports = function (req, res) {
4 | const { query } = parse(req.url, true);
5 |
6 | res.end('id=' + query.id);
7 | }
--------------------------------------------------------------------------------
/example/run:
--------------------------------------------------------------------------------
1 | # curl -i http://localhost:8004/api/login
2 | # curl -i http://localhost:8004/api/demo
3 | # curl -i http://localhost:8004/static/assets/css/styles.css
4 | # curl -i http://localhost:8004/static/assets/logic.js
5 | # curl -i http://localhost:8004/static/sw.js
6 | # curl -i http://localhost:8004/e/resources/editor.js
7 | # curl -i http://localhost:8004/docs
8 | # curl -i http://localhost:8004/webapp/generated.html
9 | # curl -i http://localhost:8004
10 | curl -i http://localhost:8004/not-found
11 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "now-lambda-runner",
3 | "version": "4.0.0",
4 | "bin": {
5 | "now-lambda": "./index.js"
6 | },
7 | "description": "A tool for testing now lambdas locally",
8 | "main": "index.js",
9 | "scripts": {},
10 | "repository": {
11 | "type": "git",
12 | "url": "git+https://github.com/krasimir/now-lambda-runner.git"
13 | },
14 | "keywords": [
15 | "now",
16 | "lambda",
17 | "tester",
18 | "runner"
19 | ],
20 | "author": "Krasimir Tsonev",
21 | "license": "MIT",
22 | "bugs": {
23 | "url": "https://github.com/krasimir/now-lambda-runner/issues"
24 | },
25 | "homepage": "https://github.com/krasimir/now-lambda-runner#readme",
26 | "dependencies": {
27 | "cors": "2.8.5",
28 | "extglob": "3.0.0",
29 | "mime-types": "2.1.21",
30 | "named-regexp-groups": "^1.0.3",
31 | "yargs": "12.0.5"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/example/now.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "builds": [
4 | { "src": "static/assets/**/*.*", "use": "@now/static" },
5 | { "src": "static/assets/*.*", "use": "@now/static" },
6 | { "src": "static/*.*", "use": "@now/static" },
7 | { "src": "api/*.js", "use": "@now/node" },
8 | { "src": "*.js", "use": "@now/node" },
9 | { "src": "*.html", "use": "@now/static" },
10 | { "src": "package.json", "use": "@now/static-build", "config": { "distDir": "build" } }
11 | ],
12 | "routes": [
13 | { "src": "/api/login", "dest": "/api/login.js"},
14 | { "src": "/api/demo", "dest": "/api/demo.js", "methods": ["GET"] },
15 | { "src": "/static/assets/(.*)", "dest": "/static/assets/$1"},
16 | { "src": "/static/(.*)", "dest": "/static/$1"},
17 | { "src": "/e/resources/(?[^/]*)", "dest": "/static/resources/$resource"},
18 | { "src": "/e/(.*)?", "dest": "/editor.js?id=$1"},
19 | { "src": "/docs", "dest": "/docs.html"},
20 | { "src": "/webapp/(.*)", "dest": "/build/$1"},
21 | { "src": "/(.*)", "dest": "/index.html"}
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Krasimir Tsonev
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.
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | # next.js build output
61 | .next
62 | .vscode
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # !!! Deprecated
2 |
3 | Use `now dev` instead.
4 |
5 | Here is a introductory [blog post](https://zeit.co/blog/now-dev). [Now docs](https://zeit.co/now).
6 |
7 | ## now-lambda-runner
8 |
9 | A tool for locally testing [now](https://zeit.co/now) lambdas.
10 |
11 | ## Installation
12 |
13 | Install the tool via
14 |
15 | ```
16 | > npm install -g now-lambda-runner
17 | ```
18 |
19 | ## Usage
20 |
21 | Let's say that we have the following `now.json` file:
22 |
23 | ```json
24 | {
25 | "version": 2,
26 | "builds": [
27 | { "src": "static/assets/**/*.*", "use": "@now/static" },
28 | { "src": "static/assets/*.*", "use": "@now/static" },
29 | { "src": "static/*.*", "use": "@now/static" },
30 | { "src": "api/*.js", "use": "@now/node" },
31 | { "src": "*.js", "use": "@now/node" },
32 | { "src": "*.html", "use": "@now/static" }
33 | ],
34 | "routes": [
35 | { "src": "/api/login", "dest": "/api/login.js" },
36 | { "src": "/api/demo", "dest": "/api/demo.js" },
37 | { "src": "/static/assets/(.*)", "dest": "/static/assets/$1"},
38 | { "src": "/static/(.*)", "dest": "/static/$1"},
39 | { "src": "/e/resources/(?[^/]*)", "dest": "/static/resources/$resource"},
40 | { "src": "/e/(.*)?", "dest": "/editor.js?id=$1"},
41 | { "src": "/docs", "dest": "/docs.html"},
42 | { "src": "/(.*)", "dest": "/index.html"}
43 | ]
44 | }
45 | ```
46 |
47 | We have to go to the folder containing that `now.json` file and run
48 |
49 | ```
50 | > now-lambda
51 | ```
52 |
53 | The result is as follows:
54 |
55 | ```
56 | -----------------------------------
57 | Routes:
58 | http://localhost:8004/api/login
59 | http://localhost:8004/api/demo
60 | http://localhost:8004/static/assets/(.*)
61 | http://localhost:8004/static/(.*)
62 | http://localhost:8004/e/resources/(?[^/]*)
63 | http://localhost:8004/e/(.*)?
64 | http://localhost:8004/docs
65 | http://localhost:8004/(.*)
66 | -----------------------------------
67 | ```
68 |
69 | And if we run the following curl request:
70 |
71 | ```
72 | curl -i http://localhost:8004/e/foobar
73 | ```
74 |
75 | we get `editor.js` lambda executed. The server reports:
76 |
77 | ```
78 | => /e/foobar === /e/(.*)?
79 | @now/node("/editor.js?id=foobar")
80 | ```
81 |
82 | Here's is a list of the things that happen when `now-lambda` process your `now.json` file:
83 |
84 | * It spins up a [node](https://nodejs.org/api/http.html) server locally on your machine
85 | * It starts reading the `routes` field in the `now.json` file and defines route handlers for each of the routes.
86 | * When a route matches it reads the `builds` field to figure out if it has to server statically the file or it must run the lambda.
87 | * The module only understands `@now/static`, `@now/node` and `@now/static-build` (partly). If there is another builder used the file is considered a static resource and it gets served directly.
88 |
89 | `now-lambda` does not:
90 | * Use the real now builders
91 | * Does not connect to now's servers
92 |
93 | ## CLI arguments
94 |
95 | * `--config` - path to `now.json` file
96 | * `--port` - by default the local server listens on port 8004. You can change it via this argument.
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | const SEPARATOR = '-----------------------------------';
4 |
5 | const fs = require('fs');
6 | const path = require('path');
7 | const yargs = require('yargs');
8 | const NamedRegExp = require('named-regexp-groups');
9 | const cors = require('cors');
10 | const extglob = require('extglob');
11 | const mime = require('mime-types')
12 |
13 | const argv = yargs
14 | .options({
15 | config: {
16 | type: 'string',
17 | default: 'now.json',
18 | desc: 'The path to now.json if it is missing in the current directory'
19 | },
20 | port: {
21 | type: 'number',
22 | default: 8004,
23 | desc: 'The port where the runner is listening for your requests'
24 | }
25 | })
26 | .help()
27 | .argv;
28 |
29 | function error(msg) {
30 | console.log('\x1b[31m', msg);
31 | process.exit(1);
32 | }
33 | function removeQuery(url) {
34 | return url.split('?').shift();
35 | }
36 |
37 | const nowConfPath = path.normalize(process.cwd() + '/' + argv.config);
38 | const nowProjectDir = path.dirname(nowConfPath);
39 |
40 | if (fs.existsSync(nowConfPath)) {
41 | const nowConf = require(nowConfPath);
42 | const handlers = [];
43 | const addHandler = method => (regexp, lambda) => handlers.push({ regexp: regexp, lambda: lambda, method: method });
44 | const app = {
45 | all: addHandler('all'),
46 | get: addHandler('get'),
47 | post: addHandler('post'),
48 | put: addHandler('put'),
49 | delete: addHandler('delete'),
50 | patch: addHandler('patch'),
51 | head: addHandler('head'),
52 | options: addHandler('options')
53 | };
54 | const http = require('http');
55 | const server = http.createServer((req, res) => {
56 | for (let i = 0; i < handlers.length; i++) {
57 | const h = handlers[i];
58 |
59 | if ((h.method === 'all' || h.method === req.method.toLowerCase()) && req.url.match(h.regexp)) {
60 | cors()(req, res, () => h.lambda(req, res));
61 | return;
62 | }
63 | }
64 |
65 | res.statusCode = 404;
66 | res.setHeader('Content-Type', 'text/plain');
67 | res.end('The provided path does not match.\n');
68 | });
69 | const log = [SEPARATOR, 'Routes:'];
70 | const matchBuilder = (dest, build) => {
71 | if (build.src === 'package.json' && build.config && build.config.distDir) {
72 | const distPath = path.normalize([build.config.distDir, dest].join('/'))
73 | const exist = fs.existsSync(distPath)
74 | if (exist) {
75 | return exist
76 | }
77 | }
78 | return extglob.isMatch(dest, '?(/)' + build.src)
79 | }
80 | const getBuilder = dest => nowConf.builds.find(build => matchBuilder(dest, build));
81 | const sendFile = (res, filePath) => {
82 | const stat = fs.statSync(filePath);
83 | res.writeHead(200, {
84 | 'Content-Type': mime.lookup(filePath),
85 | 'Content-Length': stat.size
86 | });
87 |
88 | var readStream = fs.createReadStream(filePath);
89 | readStream.pipe(res);
90 | }
91 |
92 | nowConf.routes.forEach(route => {
93 | const re = new NamedRegExp('^' + route.src);
94 |
95 | const callback = (req, res) => {
96 | var logMessage = [`=> ${req.method} - ${req.url} === ${route.src}`];
97 | const urlParts = req.url.split('?');
98 | const onlyPath = urlParts[0];
99 | const getParams = urlParts[1];
100 | const match = onlyPath.match(re);
101 | var dest = route.dest;
102 |
103 | for (let i = 1; i < match.length; i++) {
104 | dest = dest.replace(new RegExp('\\$' + i, 'g'), match[i]);
105 | }
106 | if (match.groups) {
107 | Object.keys(match.groups).forEach(key => {
108 | dest = dest.replace(new RegExp('\\$' + key, 'g'), match.groups[key]);
109 | });
110 | }
111 | const builder = getBuilder(removeQuery(dest));
112 | const pathArray = [nowProjectDir]
113 | if (builder && builder.config && builder.config.distDir) {
114 | pathArray.push(builder.config.distDir)
115 | }
116 | pathArray.push(removeQuery(dest))
117 | const handlerFilepath = path.normalize(pathArray.join('/'));
118 |
119 | logMessage.push(' ' + (builder ? builder.use + '("' + dest + '")' : 'no builder found'));
120 |
121 | if (builder && builder.use === '@now/static') {
122 | console.log(logMessage.join('\n'));
123 | sendFile(res, handlerFilepath);
124 | } else if (builder && builder.use === '@now/node') {
125 | console.log(logMessage.join('\n'));
126 | req.url = dest + (getParams ? '?' + getParams : '');
127 |
128 | // works for NODE_OPTIONS='-r esm'
129 | const objOrModule = require(handlerFilepath)
130 | const obj = objOrModule.default ? objOrModule.default : objOrModule;
131 | obj(req, res)
132 |
133 | delete require.cache[require.resolve(handlerFilepath)];
134 | } else if (fs.existsSync(handlerFilepath)) {
135 | console.log(logMessage.join('\n'));
136 | sendFile(res, handlerFilepath);
137 | } else {
138 | res.statusCode = 404;
139 | res.end(handlerFilepath + ' can not be found.');
140 | }
141 | };
142 |
143 | if (route.methods) {
144 | for (const method of route.methods) {
145 | log.push(` ${method} - http://localhost:${argv.port}${route.src}`);
146 | app[method.toLowerCase()](re.regex, callback);
147 | }
148 | } else {
149 | log.push(` ALL - http://localhost:${argv.port}${route.src}`);
150 | app.all(re.regex, callback);
151 | }
152 | });
153 |
154 | log.push(SEPARATOR);
155 |
156 | server.listen(argv.port, 'localhost', () => {
157 | console.log(log.join('\n'));
158 | });
159 | } else {
160 | error('now.json can not be found in ' + nowConfPath);
161 | }
162 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | ansi-regex@^2.0.0:
6 | version "2.1.1"
7 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
8 |
9 | ansi-regex@^3.0.0:
10 | version "3.0.0"
11 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
12 |
13 | array-unique@^0.3.2:
14 | version "0.3.2"
15 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
16 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
17 |
18 | assign-symbols@^1.0.0:
19 | version "1.0.0"
20 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
21 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
22 |
23 | atob@^2.1.1:
24 | version "2.1.2"
25 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
26 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
27 |
28 | camelcase@^5.0.0:
29 | version "5.0.0"
30 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
31 |
32 | cliui@^4.0.0:
33 | version "4.1.0"
34 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
35 | dependencies:
36 | string-width "^2.1.1"
37 | strip-ansi "^4.0.0"
38 | wrap-ansi "^2.0.0"
39 |
40 | code-point-at@^1.0.0:
41 | version "1.1.0"
42 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
43 |
44 | component-emitter@^1.2.1:
45 | version "1.2.1"
46 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
47 | integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
48 |
49 | cors@2.8.5:
50 | version "2.8.5"
51 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
52 | dependencies:
53 | object-assign "^4"
54 | vary "^1"
55 |
56 | cross-spawn@^6.0.0:
57 | version "6.0.5"
58 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
59 | dependencies:
60 | nice-try "^1.0.4"
61 | path-key "^2.0.1"
62 | semver "^5.5.0"
63 | shebang-command "^1.2.0"
64 | which "^1.2.9"
65 |
66 | decamelize@^1.2.0:
67 | version "1.2.0"
68 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
69 |
70 | decode-uri-component@^0.2.0:
71 | version "0.2.0"
72 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
73 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
74 |
75 | define-property@^0.2.5:
76 | version "0.2.5"
77 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
78 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
79 | dependencies:
80 | is-descriptor "^0.1.0"
81 |
82 | define-property@^2.0.2:
83 | version "2.0.2"
84 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
85 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
86 | dependencies:
87 | is-descriptor "^1.0.2"
88 | isobject "^3.0.1"
89 |
90 | execa@^0.10.0:
91 | version "0.10.0"
92 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
93 | dependencies:
94 | cross-spawn "^6.0.0"
95 | get-stream "^3.0.0"
96 | is-stream "^1.1.0"
97 | npm-run-path "^2.0.0"
98 | p-finally "^1.0.0"
99 | signal-exit "^3.0.0"
100 | strip-eof "^1.0.0"
101 |
102 | expand-brackets@^4.0.0:
103 | version "4.0.0"
104 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-4.0.0.tgz#b61a0fea7fc4e33c94110c2965837d56bfa4568d"
105 | integrity sha512-TGRazgOxrwafQdSPISIXScDPew3h6mIvXBE72cbgZgweqRila6892tk+fYT6UBkHvSNUooC5rP2zRF/x1ay+Ww==
106 | dependencies:
107 | posix-character-classes "^1.0.0"
108 | regex-not "^1.0.0"
109 | snapdragon "^0.12.0"
110 | to-regex "^3.0.1"
111 |
112 | extend-shallow@^3.0.2:
113 | version "3.0.2"
114 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
115 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
116 | dependencies:
117 | assign-symbols "^1.0.0"
118 | is-extendable "^1.0.1"
119 |
120 | extglob@3.0.0:
121 | version "3.0.0"
122 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-3.0.0.tgz#d244c597a5d4a7813c3ed28cc3fd5a5233137026"
123 | integrity sha512-tbNnRL4IMn8VdTyDTZWgT2EpI7nYcQbDncFpltVSsyairady2OttEjUowI5gHyc1/gbOI2RaqcJvUPaAU42z2g==
124 | dependencies:
125 | array-unique "^0.3.2"
126 | define-property "^2.0.2"
127 | expand-brackets "^4.0.0"
128 | fragment-cache "^0.2.1"
129 | regex-not "^1.0.0"
130 | snapdragon "^0.12.0"
131 | snapdragon-capture "^0.2.0"
132 | to-regex "^3.0.1"
133 |
134 | find-up@^3.0.0:
135 | version "3.0.0"
136 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
137 | dependencies:
138 | locate-path "^3.0.0"
139 |
140 | fragment-cache@^0.2.1:
141 | version "0.2.1"
142 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
143 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
144 | dependencies:
145 | map-cache "^0.2.2"
146 |
147 | get-caller-file@^1.0.1:
148 | version "1.0.3"
149 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
150 |
151 | get-stream@^3.0.0:
152 | version "3.0.0"
153 | resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
154 |
155 | get-value@^2.0.6:
156 | version "2.0.6"
157 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
158 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
159 |
160 | invert-kv@^2.0.0:
161 | version "2.0.0"
162 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
163 |
164 | is-accessor-descriptor@^0.1.6:
165 | version "0.1.6"
166 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
167 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
168 | dependencies:
169 | kind-of "^3.0.2"
170 |
171 | is-accessor-descriptor@^1.0.0:
172 | version "1.0.0"
173 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
174 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
175 | dependencies:
176 | kind-of "^6.0.0"
177 |
178 | is-buffer@^1.1.5:
179 | version "1.1.6"
180 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
181 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
182 |
183 | is-data-descriptor@^0.1.4:
184 | version "0.1.4"
185 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
186 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
187 | dependencies:
188 | kind-of "^3.0.2"
189 |
190 | is-data-descriptor@^1.0.0:
191 | version "1.0.0"
192 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
193 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
194 | dependencies:
195 | kind-of "^6.0.0"
196 |
197 | is-descriptor@^0.1.0:
198 | version "0.1.6"
199 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
200 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
201 | dependencies:
202 | is-accessor-descriptor "^0.1.6"
203 | is-data-descriptor "^0.1.4"
204 | kind-of "^5.0.0"
205 |
206 | is-descriptor@^1.0.2:
207 | version "1.0.2"
208 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
209 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
210 | dependencies:
211 | is-accessor-descriptor "^1.0.0"
212 | is-data-descriptor "^1.0.0"
213 | kind-of "^6.0.2"
214 |
215 | is-extendable@^1.0.1:
216 | version "1.0.1"
217 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
218 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
219 | dependencies:
220 | is-plain-object "^2.0.4"
221 |
222 | is-fullwidth-code-point@^1.0.0:
223 | version "1.0.0"
224 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
225 | dependencies:
226 | number-is-nan "^1.0.0"
227 |
228 | is-fullwidth-code-point@^2.0.0:
229 | version "2.0.0"
230 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
231 |
232 | is-plain-object@^2.0.4:
233 | version "2.0.4"
234 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
235 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
236 | dependencies:
237 | isobject "^3.0.1"
238 |
239 | is-stream@^1.1.0:
240 | version "1.1.0"
241 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
242 |
243 | isexe@^2.0.0:
244 | version "2.0.0"
245 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
246 |
247 | isobject@^3.0.0, isobject@^3.0.1:
248 | version "3.0.1"
249 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
250 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
251 |
252 | kind-of@^3.0.2, kind-of@^3.1.0:
253 | version "3.2.2"
254 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
255 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
256 | dependencies:
257 | is-buffer "^1.1.5"
258 |
259 | kind-of@^5.0.0:
260 | version "5.1.0"
261 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
262 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
263 |
264 | kind-of@^6.0.0, kind-of@^6.0.2:
265 | version "6.0.2"
266 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
267 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
268 |
269 | lazy-cache@^2.0.2:
270 | version "2.0.2"
271 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
272 | integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=
273 | dependencies:
274 | set-getter "^0.1.0"
275 |
276 | lcid@^2.0.0:
277 | version "2.0.0"
278 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
279 | dependencies:
280 | invert-kv "^2.0.0"
281 |
282 | locate-path@^3.0.0:
283 | version "3.0.0"
284 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
285 | dependencies:
286 | p-locate "^3.0.0"
287 | path-exists "^3.0.0"
288 |
289 | map-age-cleaner@^0.1.1:
290 | version "0.1.3"
291 | resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
292 | dependencies:
293 | p-defer "^1.0.0"
294 |
295 | map-cache@^0.2.2:
296 | version "0.2.2"
297 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
298 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
299 |
300 | mem@^4.0.0:
301 | version "4.0.0"
302 | resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf"
303 | dependencies:
304 | map-age-cleaner "^0.1.1"
305 | mimic-fn "^1.0.0"
306 | p-is-promise "^1.1.0"
307 |
308 | mime-db@~1.37.0:
309 | version "1.37.0"
310 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
311 |
312 | mime-types@2.1.21:
313 | version "2.1.21"
314 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
315 | integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
316 | dependencies:
317 | mime-db "~1.37.0"
318 |
319 | mimic-fn@^1.0.0:
320 | version "1.2.0"
321 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
322 |
323 | named-regexp-groups@^1.0.3:
324 | version "1.0.3"
325 | resolved "https://registry.yarnpkg.com/named-regexp-groups/-/named-regexp-groups-1.0.3.tgz#06cf506b840535868a87606f5ece47dd2e4f6a9a"
326 |
327 | nice-try@^1.0.4:
328 | version "1.0.5"
329 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
330 |
331 | npm-run-path@^2.0.0:
332 | version "2.0.2"
333 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
334 | dependencies:
335 | path-key "^2.0.0"
336 |
337 | number-is-nan@^1.0.0:
338 | version "1.0.1"
339 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
340 |
341 | object-assign@^4:
342 | version "4.1.1"
343 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
344 |
345 | os-locale@^3.0.0:
346 | version "3.0.1"
347 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620"
348 | dependencies:
349 | execa "^0.10.0"
350 | lcid "^2.0.0"
351 | mem "^4.0.0"
352 |
353 | p-defer@^1.0.0:
354 | version "1.0.0"
355 | resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
356 |
357 | p-finally@^1.0.0:
358 | version "1.0.0"
359 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
360 |
361 | p-is-promise@^1.1.0:
362 | version "1.1.0"
363 | resolved "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
364 |
365 | p-limit@^2.0.0:
366 | version "2.0.0"
367 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec"
368 | dependencies:
369 | p-try "^2.0.0"
370 |
371 | p-locate@^3.0.0:
372 | version "3.0.0"
373 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
374 | dependencies:
375 | p-limit "^2.0.0"
376 |
377 | p-try@^2.0.0:
378 | version "2.0.0"
379 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
380 |
381 | path-exists@^3.0.0:
382 | version "3.0.0"
383 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
384 |
385 | path-key@^2.0.0, path-key@^2.0.1:
386 | version "2.0.1"
387 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
388 |
389 | posix-character-classes@^1.0.0:
390 | version "1.0.0"
391 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-1.0.0.tgz#86917ab2d252f7ea78e157bf009b9b6ea35c6cad"
392 | integrity sha1-hpF6stJS9+p44Ve/AJubbqNcbK0=
393 |
394 | regex-not@^1.0.0, regex-not@^1.0.2:
395 | version "1.0.2"
396 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
397 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
398 | dependencies:
399 | extend-shallow "^3.0.2"
400 | safe-regex "^1.1.0"
401 |
402 | require-directory@^2.1.1:
403 | version "2.1.1"
404 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
405 |
406 | require-main-filename@^1.0.1:
407 | version "1.0.1"
408 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
409 |
410 | resolve-url@^0.2.1:
411 | version "0.2.1"
412 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
413 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
414 |
415 | ret@~0.1.10:
416 | version "0.1.15"
417 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
418 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
419 |
420 | safe-regex@^1.1.0:
421 | version "1.1.0"
422 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
423 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
424 | dependencies:
425 | ret "~0.1.10"
426 |
427 | semver@^5.5.0:
428 | version "5.6.0"
429 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
430 |
431 | set-blocking@^2.0.0:
432 | version "2.0.0"
433 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
434 |
435 | set-getter@^0.1.0:
436 | version "0.1.0"
437 | resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
438 | integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=
439 | dependencies:
440 | to-object-path "^0.3.0"
441 |
442 | shebang-command@^1.2.0:
443 | version "1.2.0"
444 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
445 | dependencies:
446 | shebang-regex "^1.0.0"
447 |
448 | shebang-regex@^1.0.0:
449 | version "1.0.0"
450 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
451 |
452 | signal-exit@^3.0.0:
453 | version "3.0.2"
454 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
455 |
456 | snapdragon-capture@^0.2.0:
457 | version "0.2.0"
458 | resolved "https://registry.yarnpkg.com/snapdragon-capture/-/snapdragon-capture-0.2.0.tgz#21616023884a3b0192c8d347f238af49eaa1ea67"
459 | integrity sha1-IWFgI4hKOwGSyNNH8jivSeqh6mc=
460 |
461 | snapdragon-node@^1.0.6:
462 | version "1.0.6"
463 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-1.0.6.tgz#2448d5ef6fea7f5e8fd5326a0a114854da271356"
464 | integrity sha1-JEjV72/qf16P1TJqChFIVNonE1Y=
465 | dependencies:
466 | define-property "^0.2.5"
467 | isobject "^3.0.0"
468 | lazy-cache "^2.0.2"
469 | snapdragon-util "^1.0.3"
470 |
471 | snapdragon-util@^1.0.3:
472 | version "1.0.6"
473 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-1.0.6.tgz#8b3d2d6dec8930c90e054ba052e562ca1b3a621e"
474 | integrity sha1-iz0tbeyJMMkOBUugUuViyhs6Yh4=
475 | dependencies:
476 | define-property "^0.2.5"
477 | kind-of "^3.1.0"
478 | lazy-cache "^2.0.2"
479 | snapdragon-node "^1.0.6"
480 |
481 | snapdragon-util@^4.0.0:
482 | version "4.0.0"
483 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-4.0.0.tgz#49c858a089174abe7b8d186a367424823167446a"
484 | integrity sha512-EthB2f44R7/fdbUrGmlOIJ15k5nkC3/LvWaD6u7wu9fo4Eabk7qq1MTkSGoTWWm1hxb2lxG/r9H3KKhhNOGkgw==
485 | dependencies:
486 | kind-of "^6.0.0"
487 |
488 | snapdragon@^0.12.0:
489 | version "0.12.0"
490 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.12.0.tgz#ad7e56891a87eb38012386159bee99a0430e6e06"
491 | integrity sha512-E7epxLolFdELn4LzTfDOImU0gZDk5Y071Pou8+3rEP7980ZbDbBje3xDQAqP5lnPItU1W7QEoqNSJvHtvK8DcQ==
492 | dependencies:
493 | component-emitter "^1.2.1"
494 | define-property "^2.0.2"
495 | extend-shallow "^3.0.2"
496 | get-value "^2.0.6"
497 | isobject "^3.0.0"
498 | map-cache "^0.2.2"
499 | snapdragon-node "^1.0.6"
500 | snapdragon-util "^4.0.0"
501 | source-map "^0.5.6"
502 | source-map-resolve "^0.5.0"
503 | use "^3.1.0"
504 |
505 | source-map-resolve@^0.5.0:
506 | version "0.5.2"
507 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
508 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
509 | dependencies:
510 | atob "^2.1.1"
511 | decode-uri-component "^0.2.0"
512 | resolve-url "^0.2.1"
513 | source-map-url "^0.4.0"
514 | urix "^0.1.0"
515 |
516 | source-map-url@^0.4.0:
517 | version "0.4.0"
518 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
519 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
520 |
521 | source-map@^0.5.6:
522 | version "0.5.7"
523 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
524 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
525 |
526 | string-width@^1.0.1:
527 | version "1.0.2"
528 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
529 | dependencies:
530 | code-point-at "^1.0.0"
531 | is-fullwidth-code-point "^1.0.0"
532 | strip-ansi "^3.0.0"
533 |
534 | string-width@^2.0.0, string-width@^2.1.1:
535 | version "2.1.1"
536 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
537 | dependencies:
538 | is-fullwidth-code-point "^2.0.0"
539 | strip-ansi "^4.0.0"
540 |
541 | strip-ansi@^3.0.0, strip-ansi@^3.0.1:
542 | version "3.0.1"
543 | resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
544 | dependencies:
545 | ansi-regex "^2.0.0"
546 |
547 | strip-ansi@^4.0.0:
548 | version "4.0.0"
549 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
550 | dependencies:
551 | ansi-regex "^3.0.0"
552 |
553 | strip-eof@^1.0.0:
554 | version "1.0.0"
555 | resolved "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
556 |
557 | to-object-path@^0.3.0:
558 | version "0.3.0"
559 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
560 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
561 | dependencies:
562 | kind-of "^3.0.2"
563 |
564 | to-regex@^3.0.1:
565 | version "3.0.2"
566 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
567 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
568 | dependencies:
569 | define-property "^2.0.2"
570 | extend-shallow "^3.0.2"
571 | regex-not "^1.0.2"
572 | safe-regex "^1.1.0"
573 |
574 | urix@^0.1.0:
575 | version "0.1.0"
576 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
577 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
578 |
579 | use@^3.1.0:
580 | version "3.1.1"
581 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
582 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
583 |
584 | vary@^1:
585 | version "1.1.2"
586 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
587 |
588 | which-module@^2.0.0:
589 | version "2.0.0"
590 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
591 |
592 | which@^1.2.9:
593 | version "1.3.1"
594 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
595 | dependencies:
596 | isexe "^2.0.0"
597 |
598 | wrap-ansi@^2.0.0:
599 | version "2.1.0"
600 | resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
601 | dependencies:
602 | string-width "^1.0.1"
603 | strip-ansi "^3.0.1"
604 |
605 | "y18n@^3.2.1 || ^4.0.0":
606 | version "4.0.0"
607 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
608 |
609 | yargs-parser@^11.1.1:
610 | version "11.1.1"
611 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
612 | dependencies:
613 | camelcase "^5.0.0"
614 | decamelize "^1.2.0"
615 |
616 | yargs@12.0.5:
617 | version "12.0.5"
618 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
619 | dependencies:
620 | cliui "^4.0.0"
621 | decamelize "^1.2.0"
622 | find-up "^3.0.0"
623 | get-caller-file "^1.0.1"
624 | os-locale "^3.0.0"
625 | require-directory "^2.1.1"
626 | require-main-filename "^1.0.1"
627 | set-blocking "^2.0.0"
628 | string-width "^2.0.0"
629 | which-module "^2.0.0"
630 | y18n "^3.2.1 || ^4.0.0"
631 | yargs-parser "^11.1.1"
632 |
--------------------------------------------------------------------------------