├── .gitignore
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── src
├── cli.ts
├── commands
│ ├── _types.ts
│ ├── build.ts
│ ├── index.ts
│ └── search.ts
├── compiler.ts
├── json-files.ts
├── json-update.ts
├── options.ts
├── sources.ts
└── tsconfig.ts
├── tsconfig.json
├── tslint.json
└── typings
├── find-package-json.d.ts
└── jsonfile-updater.d.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | dist/*
2 | node_modules/
3 | .DS_Store
4 | Thumbs.db
5 | *.log
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2018 Andy Wermke
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
13 | all 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
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ts
2 |
3 | The CLI that TypeScript deserves.
4 |
5 | ✨ Simple project setup
6 | 📦 Modern defaults
7 | 🏷 Painless custom type declarations
8 | 🔍 Search for type packages on npm
9 | 👌 Selectively override options on the command line (yes, `tsc` does not allow that)
10 |
11 |
12 | ## Installation
13 |
14 | Locally:
15 |
16 | ```sh
17 | $ npm install --save-dev typescript ts
18 | ```
19 |
20 | Globally:
21 |
22 | ```sh
23 | $ npm install --global typescript ts
24 | ```
25 |
26 |
27 | ## Quick start
28 |
29 | Run the TypeScript compiler with `ts` default best practice options:
30 |
31 | ```sh
32 | npx ts --out-dir <...entrypoint files>
33 | ```
34 |
35 | Compiling using `ts` does not require a `tsconfig.json` file, but `ts` will act according to its options if found.
36 |
37 | If your source files are in `src/` and you want to write the output files to `dist/`, you don't even need to set anything:
38 |
39 | ```sh
40 | npx ts
41 | ```
42 |
43 | Run with `--emit-tsconfig` to create a `tsconfig.json` file.
44 |
45 | ```sh
46 | # Write ts default options into tsconfig.json
47 | npm ts --emit-tsconfig
48 | ```
49 | ```sh
50 | # Options: create declaration files, target runtime ES2016
51 | npm ts --declaration --emit-tsconfig --target es2016
52 | ```
53 |
54 |
55 | ## Usage
56 |
57 | ```
58 | Usage
59 | General usage
60 | $ ts [<...options>]
61 |
62 | Compile project in current directory
63 | $ ts [build]
64 |
65 | Compile with altered options
66 | $ ts --target es2018 src/**/*.ts
67 |
68 | Create tsconfig.json
69 | $ ts --emit-tsconfig [<...options>]
70 |
71 | Show this help text
72 | $ ts --help
73 |
74 | Commands
75 | build Compile a TypeScript project. Default command.
76 | compile Alias of "build".
77 | search Search for a type declarations package on npm.
78 |
79 | General options
80 | --help Print this help.
81 | --version Print version.
82 |
83 | See for details.
84 | ```
85 |
86 |
87 | ## Monorepo support
88 |
89 | Run `ts` with `--monorepo` or set the `monorepo` option in the `package.json` file (see below).
90 |
91 | This will make TypeScript look for packages not only in `./node_modules/`, but also in `../../node_modules/` (the monorepo root directory's `node_modules`). It will also look for type declaration packages and custom local type declarations in the monorepo root.
92 |
93 |
94 | ## Custom type package support
95 |
96 | By default `ts` will not only load type declaration from `@types/*` packages, but also from `@/types-*`.
97 |
98 | That allows you to easily publish your custom type declarations to npm under the scope of your npm user name without going through all the overhead of Definitely Typed.
99 |
100 | Use the `ts search` command to find type declaration packages on npm:
101 |
102 | ```sh
103 | $ ts search koa
104 | # Will list all packages matching "@types/*" | "@*/types-*" and "koa"
105 | ```
106 |
107 |
108 | ## Local type declarations
109 |
110 | `ts` makes it particularly easy to use local typings for third party modules.
111 |
112 | By default all `typings/**/*.d.ts` files will be loaded. Use the `--typings-directory` argument to change the search path from `typings/` to something else.
113 |
114 |
115 | ## Usage with other tools
116 |
117 | Most users will also use `tslint`, maybe the webpack `ts-loader` or have an IDE that relies on knowing the TypeScript compiler options. You want them to behave the same way that `ts` does.
118 |
119 | Easy: Just run `ts --emit-tsconfig` to write all the compiler options into a `tsconfig.json` file. Other tools will pick it up and use the same configuration.
120 |
121 |
122 | ## Defaults
123 |
124 | In contrast to `tsc` behavior, `ts` lets you override options set in the `package.json` or `tsconfig.json` selectively using command line arguments. Yes, you heard right, `tsc` will ignore your `tsconfig.json` once you set a single option via command line 🤦
125 |
126 | This is a `tsconfig.json` that resembles the `ts` default options:
127 |
128 | ```json
129 | {
130 | "compilerOptions": {
131 | "esModuleInterop": true,
132 | "lib": ["es2015"],
133 | "module": "commonjs",
134 | "moduleResolution": "node",
135 | "newLine": "lf",
136 | "target": "es5",
137 | "outDir": "",
138 | "strict": true
139 | },
140 | "include": [
141 | ""
142 | ]
143 | }
144 | ```
145 |
146 |
147 | ## Configuration in `package.json`
148 |
149 | You can also set all `ts` options and TypeScript `compilerOptions` in your `package.json`:
150 |
151 | ```ts
152 | {
153 | "ts": {
154 | "compilerOptions": {
155 | /* Any compiler options */
156 | },
157 | "include": [
158 | /* Source files (entrypoints) */
159 | ],
160 | "monorepo": boolean,
161 | "transforms": [
162 | /* Transformations (package name or local path) */
163 | ],
164 | "typingsDirectory": "./typings"
165 | }
166 | }
167 | ```
168 |
169 | **Experimental:** Allows you to `.gitignore` your `tsconfig.json` file altogether.
170 |
171 |
172 | ## License
173 |
174 | MIT
175 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts",
3 | "version": "0.2.2",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@babel/parser": {
8 | "version": "7.0.0-beta.51",
9 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
10 | "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
11 | "dev": true
12 | },
13 | "@mrmlnc/readdir-enhanced": {
14 | "version": "2.2.1",
15 | "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
16 | "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
17 | "dev": true,
18 | "requires": {
19 | "call-me-maybe": "^1.0.1",
20 | "glob-to-regexp": "^0.3.0"
21 | }
22 | },
23 | "@nodelib/fs.stat": {
24 | "version": "1.1.2",
25 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz",
26 | "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
27 | "dev": true
28 | },
29 | "@types/events": {
30 | "version": "1.2.0",
31 | "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
32 | "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==",
33 | "dev": true
34 | },
35 | "@types/figures": {
36 | "version": "2.0.0",
37 | "resolved": "https://registry.npmjs.org/@types/figures/-/figures-2.0.0.tgz",
38 | "integrity": "sha512-mcRgJ+ncKuNI+Dwac7omO18B8C8u+YBS+AU/oyLhEyjAnT3cUUThhHgZpbiIvu5ZqSvdD30BXtrqg9nxc3OKMg==",
39 | "dev": true
40 | },
41 | "@types/glob": {
42 | "version": "7.1.1",
43 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz",
44 | "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==",
45 | "dev": true,
46 | "requires": {
47 | "@types/events": "*",
48 | "@types/minimatch": "*",
49 | "@types/node": "*"
50 | }
51 | },
52 | "@types/meow": {
53 | "version": "4.0.1",
54 | "resolved": "https://registry.npmjs.org/@types/meow/-/meow-4.0.1.tgz",
55 | "integrity": "sha512-Lg2Nk9rRoQCMdqn12R6nt5J+/e18uUZmCHN4wnO39WNEzSqIIQmHEbzfjIdbGg0uxOddQaxh2oXiHdSRe2+Erw==",
56 | "dev": true,
57 | "requires": {
58 | "@types/minimist-options": "*"
59 | }
60 | },
61 | "@types/minimatch": {
62 | "version": "3.0.3",
63 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
64 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
65 | "dev": true
66 | },
67 | "@types/minimist": {
68 | "version": "1.2.0",
69 | "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz",
70 | "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=",
71 | "dev": true
72 | },
73 | "@types/minimist-options": {
74 | "version": "3.0.0",
75 | "resolved": "https://registry.npmjs.org/@types/minimist-options/-/minimist-options-3.0.0.tgz",
76 | "integrity": "sha512-FYeTlkAANOr9KR0mQL7X+v7MT7Nb/aWdNNHNKzJ8sPctpS2Ei8ucgMbvQRbLRjaYZH2OVN5AGDGGcHV5x8lSgQ==",
77 | "dev": true,
78 | "requires": {
79 | "@types/minimist": "*"
80 | }
81 | },
82 | "@types/node": {
83 | "version": "10.11.3",
84 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.3.tgz",
85 | "integrity": "sha512-3AvcEJAh9EMatxs+OxAlvAEs7OTy6AG94mcH1iqyVDwVVndekLxzwkWQ/Z4SDbY6GO2oyUXyWW8tQ4rENSSQVQ==",
86 | "dev": true
87 | },
88 | "ajv": {
89 | "version": "5.5.2",
90 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
91 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
92 | "dev": true,
93 | "requires": {
94 | "co": "^4.6.0",
95 | "fast-deep-equal": "^1.0.0",
96 | "fast-json-stable-stringify": "^2.0.0",
97 | "json-schema-traverse": "^0.3.0"
98 | }
99 | },
100 | "ansi-regex": {
101 | "version": "2.1.1",
102 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
103 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
104 | "dev": true
105 | },
106 | "ansi-styles": {
107 | "version": "2.2.1",
108 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
109 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
110 | "dev": true,
111 | "optional": true
112 | },
113 | "argparse": {
114 | "version": "1.0.10",
115 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
116 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
117 | "dev": true,
118 | "optional": true,
119 | "requires": {
120 | "sprintf-js": "~1.0.2"
121 | }
122 | },
123 | "arr-diff": {
124 | "version": "4.0.0",
125 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
126 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
127 | "dev": true
128 | },
129 | "arr-flatten": {
130 | "version": "1.1.0",
131 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
132 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
133 | "dev": true
134 | },
135 | "arr-union": {
136 | "version": "3.1.0",
137 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
138 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
139 | "dev": true
140 | },
141 | "array-find-index": {
142 | "version": "1.0.2",
143 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
144 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
145 | },
146 | "array-union": {
147 | "version": "1.0.2",
148 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
149 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
150 | "dev": true,
151 | "requires": {
152 | "array-uniq": "^1.0.1"
153 | }
154 | },
155 | "array-uniq": {
156 | "version": "1.0.3",
157 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
158 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
159 | "dev": true
160 | },
161 | "array-unique": {
162 | "version": "0.3.2",
163 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
164 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
165 | "dev": true
166 | },
167 | "arrify": {
168 | "version": "1.0.1",
169 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
170 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
171 | },
172 | "asn1": {
173 | "version": "0.2.4",
174 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
175 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
176 | "dev": true,
177 | "requires": {
178 | "safer-buffer": "~2.1.0"
179 | }
180 | },
181 | "assert-plus": {
182 | "version": "1.0.0",
183 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
184 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
185 | "dev": true
186 | },
187 | "assign-symbols": {
188 | "version": "1.0.0",
189 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
190 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
191 | "dev": true
192 | },
193 | "asynckit": {
194 | "version": "0.4.0",
195 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
196 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
197 | "dev": true
198 | },
199 | "atob": {
200 | "version": "2.1.2",
201 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
202 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
203 | "dev": true
204 | },
205 | "aws-sign2": {
206 | "version": "0.7.0",
207 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
208 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
209 | "dev": true
210 | },
211 | "aws4": {
212 | "version": "1.8.0",
213 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
214 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
215 | "dev": true
216 | },
217 | "axios": {
218 | "version": "0.18.0",
219 | "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
220 | "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
221 | "requires": {
222 | "follow-redirects": "^1.3.0",
223 | "is-buffer": "^1.1.5"
224 | }
225 | },
226 | "babel-code-frame": {
227 | "version": "6.26.0",
228 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
229 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
230 | "dev": true,
231 | "optional": true,
232 | "requires": {
233 | "chalk": "^1.1.3",
234 | "esutils": "^2.0.2",
235 | "js-tokens": "^3.0.2"
236 | },
237 | "dependencies": {
238 | "chalk": {
239 | "version": "1.1.3",
240 | "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
241 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
242 | "dev": true,
243 | "optional": true,
244 | "requires": {
245 | "ansi-styles": "^2.2.1",
246 | "escape-string-regexp": "^1.0.2",
247 | "has-ansi": "^2.0.0",
248 | "strip-ansi": "^3.0.0",
249 | "supports-color": "^2.0.0"
250 | }
251 | }
252 | }
253 | },
254 | "babel-runtime": {
255 | "version": "6.26.0",
256 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
257 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
258 | "dev": true,
259 | "requires": {
260 | "core-js": "^2.4.0",
261 | "regenerator-runtime": "^0.11.0"
262 | }
263 | },
264 | "balanced-match": {
265 | "version": "1.0.0",
266 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
267 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
268 | },
269 | "base": {
270 | "version": "0.11.2",
271 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
272 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
273 | "dev": true,
274 | "requires": {
275 | "cache-base": "^1.0.1",
276 | "class-utils": "^0.3.5",
277 | "component-emitter": "^1.2.1",
278 | "define-property": "^1.0.0",
279 | "isobject": "^3.0.1",
280 | "mixin-deep": "^1.2.0",
281 | "pascalcase": "^0.1.1"
282 | },
283 | "dependencies": {
284 | "define-property": {
285 | "version": "1.0.0",
286 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
287 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
288 | "dev": true,
289 | "requires": {
290 | "is-descriptor": "^1.0.0"
291 | }
292 | },
293 | "is-accessor-descriptor": {
294 | "version": "1.0.0",
295 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
296 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
297 | "dev": true,
298 | "requires": {
299 | "kind-of": "^6.0.0"
300 | }
301 | },
302 | "is-data-descriptor": {
303 | "version": "1.0.0",
304 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
305 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
306 | "dev": true,
307 | "requires": {
308 | "kind-of": "^6.0.0"
309 | }
310 | },
311 | "is-descriptor": {
312 | "version": "1.0.2",
313 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
314 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
315 | "dev": true,
316 | "requires": {
317 | "is-accessor-descriptor": "^1.0.0",
318 | "is-data-descriptor": "^1.0.0",
319 | "kind-of": "^6.0.2"
320 | }
321 | }
322 | }
323 | },
324 | "bcrypt-pbkdf": {
325 | "version": "1.0.2",
326 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
327 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
328 | "dev": true,
329 | "optional": true,
330 | "requires": {
331 | "tweetnacl": "^0.14.3"
332 | }
333 | },
334 | "boom": {
335 | "version": "4.3.1",
336 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
337 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
338 | "dev": true,
339 | "requires": {
340 | "hoek": "4.x.x"
341 | }
342 | },
343 | "brace-expansion": {
344 | "version": "1.1.11",
345 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
346 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
347 | "requires": {
348 | "balanced-match": "^1.0.0",
349 | "concat-map": "0.0.1"
350 | }
351 | },
352 | "braces": {
353 | "version": "2.3.2",
354 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
355 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
356 | "dev": true,
357 | "requires": {
358 | "arr-flatten": "^1.1.0",
359 | "array-unique": "^0.3.2",
360 | "extend-shallow": "^2.0.1",
361 | "fill-range": "^4.0.0",
362 | "isobject": "^3.0.1",
363 | "repeat-element": "^1.1.2",
364 | "snapdragon": "^0.8.1",
365 | "snapdragon-node": "^2.0.1",
366 | "split-string": "^3.0.2",
367 | "to-regex": "^3.0.1"
368 | },
369 | "dependencies": {
370 | "extend-shallow": {
371 | "version": "2.0.1",
372 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
373 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
374 | "dev": true,
375 | "requires": {
376 | "is-extendable": "^0.1.0"
377 | }
378 | }
379 | }
380 | },
381 | "builtin-modules": {
382 | "version": "1.1.1",
383 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
384 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
385 | },
386 | "byline": {
387 | "version": "5.0.0",
388 | "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
389 | "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=",
390 | "dev": true
391 | },
392 | "cache-base": {
393 | "version": "1.0.1",
394 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
395 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
396 | "dev": true,
397 | "requires": {
398 | "collection-visit": "^1.0.0",
399 | "component-emitter": "^1.2.1",
400 | "get-value": "^2.0.6",
401 | "has-value": "^1.0.0",
402 | "isobject": "^3.0.1",
403 | "set-value": "^2.0.0",
404 | "to-object-path": "^0.3.0",
405 | "union-value": "^1.0.0",
406 | "unset-value": "^1.0.0"
407 | }
408 | },
409 | "call-me-maybe": {
410 | "version": "1.0.1",
411 | "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
412 | "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
413 | "dev": true
414 | },
415 | "camelcase": {
416 | "version": "4.1.0",
417 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
418 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
419 | },
420 | "camelcase-keys": {
421 | "version": "4.2.0",
422 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
423 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
424 | "requires": {
425 | "camelcase": "^4.1.0",
426 | "map-obj": "^2.0.0",
427 | "quick-lru": "^1.0.0"
428 | }
429 | },
430 | "caseless": {
431 | "version": "0.12.0",
432 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
433 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
434 | "dev": true
435 | },
436 | "chalk": {
437 | "version": "2.4.1",
438 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
439 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
440 | "dev": true,
441 | "requires": {
442 | "ansi-styles": "^3.2.1",
443 | "escape-string-regexp": "^1.0.5",
444 | "supports-color": "^5.3.0"
445 | },
446 | "dependencies": {
447 | "ansi-styles": {
448 | "version": "3.2.1",
449 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
450 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
451 | "dev": true,
452 | "requires": {
453 | "color-convert": "^1.9.0"
454 | }
455 | },
456 | "supports-color": {
457 | "version": "5.5.0",
458 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
459 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
460 | "dev": true,
461 | "requires": {
462 | "has-flag": "^3.0.0"
463 | }
464 | }
465 | }
466 | },
467 | "class-utils": {
468 | "version": "0.3.6",
469 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
470 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
471 | "dev": true,
472 | "requires": {
473 | "arr-union": "^3.1.0",
474 | "define-property": "^0.2.5",
475 | "isobject": "^3.0.0",
476 | "static-extend": "^0.1.1"
477 | },
478 | "dependencies": {
479 | "define-property": {
480 | "version": "0.2.5",
481 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
482 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
483 | "dev": true,
484 | "requires": {
485 | "is-descriptor": "^0.1.0"
486 | }
487 | }
488 | }
489 | },
490 | "co": {
491 | "version": "4.6.0",
492 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
493 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
494 | "dev": true
495 | },
496 | "collection-visit": {
497 | "version": "1.0.0",
498 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
499 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
500 | "dev": true,
501 | "requires": {
502 | "map-visit": "^1.0.0",
503 | "object-visit": "^1.0.0"
504 | }
505 | },
506 | "color-convert": {
507 | "version": "1.9.3",
508 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
509 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
510 | "dev": true,
511 | "requires": {
512 | "color-name": "1.1.3"
513 | }
514 | },
515 | "color-name": {
516 | "version": "1.1.3",
517 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
518 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
519 | "dev": true
520 | },
521 | "combined-stream": {
522 | "version": "1.0.7",
523 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
524 | "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
525 | "dev": true,
526 | "requires": {
527 | "delayed-stream": "~1.0.0"
528 | }
529 | },
530 | "commander": {
531 | "version": "2.18.0",
532 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
533 | "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==",
534 | "dev": true,
535 | "optional": true
536 | },
537 | "component-emitter": {
538 | "version": "1.2.1",
539 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
540 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
541 | "dev": true
542 | },
543 | "concat-map": {
544 | "version": "0.0.1",
545 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
546 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
547 | },
548 | "copy-descriptor": {
549 | "version": "0.1.1",
550 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
551 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
552 | "dev": true
553 | },
554 | "core-js": {
555 | "version": "2.5.7",
556 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
557 | "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
558 | "dev": true
559 | },
560 | "core-util-is": {
561 | "version": "1.0.2",
562 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
563 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
564 | "dev": true
565 | },
566 | "cryptiles": {
567 | "version": "3.1.2",
568 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
569 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
570 | "dev": true,
571 | "requires": {
572 | "boom": "5.x.x"
573 | },
574 | "dependencies": {
575 | "boom": {
576 | "version": "5.2.0",
577 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
578 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
579 | "dev": true,
580 | "requires": {
581 | "hoek": "4.x.x"
582 | }
583 | }
584 | }
585 | },
586 | "currently-unhandled": {
587 | "version": "0.4.1",
588 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
589 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
590 | "requires": {
591 | "array-find-index": "^1.0.1"
592 | }
593 | },
594 | "dashdash": {
595 | "version": "1.14.1",
596 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
597 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
598 | "dev": true,
599 | "requires": {
600 | "assert-plus": "^1.0.0"
601 | }
602 | },
603 | "debug": {
604 | "version": "3.1.0",
605 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
606 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
607 | "requires": {
608 | "ms": "2.0.0"
609 | }
610 | },
611 | "decamelize": {
612 | "version": "1.2.0",
613 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
614 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
615 | },
616 | "decamelize-keys": {
617 | "version": "1.1.0",
618 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
619 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
620 | "requires": {
621 | "decamelize": "^1.1.0",
622 | "map-obj": "^1.0.0"
623 | },
624 | "dependencies": {
625 | "map-obj": {
626 | "version": "1.0.1",
627 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
628 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
629 | }
630 | }
631 | },
632 | "decode-uri-component": {
633 | "version": "0.2.0",
634 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
635 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
636 | "dev": true
637 | },
638 | "deep-is": {
639 | "version": "0.1.3",
640 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
641 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
642 | "dev": true
643 | },
644 | "define-property": {
645 | "version": "2.0.2",
646 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
647 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
648 | "dev": true,
649 | "requires": {
650 | "is-descriptor": "^1.0.2",
651 | "isobject": "^3.0.1"
652 | },
653 | "dependencies": {
654 | "is-accessor-descriptor": {
655 | "version": "1.0.0",
656 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
657 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
658 | "dev": true,
659 | "requires": {
660 | "kind-of": "^6.0.0"
661 | }
662 | },
663 | "is-data-descriptor": {
664 | "version": "1.0.0",
665 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
666 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
667 | "dev": true,
668 | "requires": {
669 | "kind-of": "^6.0.0"
670 | }
671 | },
672 | "is-descriptor": {
673 | "version": "1.0.2",
674 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
675 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
676 | "dev": true,
677 | "requires": {
678 | "is-accessor-descriptor": "^1.0.0",
679 | "is-data-descriptor": "^1.0.0",
680 | "kind-of": "^6.0.2"
681 | }
682 | }
683 | }
684 | },
685 | "delayed-stream": {
686 | "version": "1.0.0",
687 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
688 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
689 | "dev": true
690 | },
691 | "diff": {
692 | "version": "3.5.0",
693 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
694 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
695 | "dev": true,
696 | "optional": true
697 | },
698 | "dir-glob": {
699 | "version": "2.0.0",
700 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
701 | "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
702 | "dev": true,
703 | "requires": {
704 | "arrify": "^1.0.1",
705 | "path-type": "^3.0.0"
706 | }
707 | },
708 | "ecc-jsbn": {
709 | "version": "0.1.2",
710 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
711 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
712 | "dev": true,
713 | "optional": true,
714 | "requires": {
715 | "jsbn": "~0.1.0",
716 | "safer-buffer": "^2.1.0"
717 | }
718 | },
719 | "error-ex": {
720 | "version": "1.3.2",
721 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
722 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
723 | "requires": {
724 | "is-arrayish": "^0.2.1"
725 | }
726 | },
727 | "escape-string-regexp": {
728 | "version": "1.0.5",
729 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
730 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
731 | },
732 | "escodegen": {
733 | "version": "1.10.0",
734 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
735 | "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
736 | "dev": true,
737 | "requires": {
738 | "esprima": "^3.1.3",
739 | "estraverse": "^4.2.0",
740 | "esutils": "^2.0.2",
741 | "optionator": "^0.8.1",
742 | "source-map": "~0.6.1"
743 | },
744 | "dependencies": {
745 | "esprima": {
746 | "version": "3.1.3",
747 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
748 | "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
749 | "dev": true
750 | }
751 | }
752 | },
753 | "esprima": {
754 | "version": "4.0.1",
755 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
756 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
757 | "dev": true,
758 | "optional": true
759 | },
760 | "estraverse": {
761 | "version": "4.2.0",
762 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
763 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
764 | "dev": true
765 | },
766 | "esutils": {
767 | "version": "2.0.2",
768 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
769 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
770 | "dev": true
771 | },
772 | "expand-brackets": {
773 | "version": "2.1.4",
774 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
775 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
776 | "dev": true,
777 | "requires": {
778 | "debug": "^2.3.3",
779 | "define-property": "^0.2.5",
780 | "extend-shallow": "^2.0.1",
781 | "posix-character-classes": "^0.1.0",
782 | "regex-not": "^1.0.0",
783 | "snapdragon": "^0.8.1",
784 | "to-regex": "^3.0.1"
785 | },
786 | "dependencies": {
787 | "debug": {
788 | "version": "2.6.9",
789 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
790 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
791 | "dev": true,
792 | "requires": {
793 | "ms": "2.0.0"
794 | }
795 | },
796 | "define-property": {
797 | "version": "0.2.5",
798 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
799 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
800 | "dev": true,
801 | "requires": {
802 | "is-descriptor": "^0.1.0"
803 | }
804 | },
805 | "extend-shallow": {
806 | "version": "2.0.1",
807 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
808 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
809 | "dev": true,
810 | "requires": {
811 | "is-extendable": "^0.1.0"
812 | }
813 | }
814 | }
815 | },
816 | "expand-template": {
817 | "version": "1.1.1",
818 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz",
819 | "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==",
820 | "dev": true
821 | },
822 | "extend": {
823 | "version": "3.0.2",
824 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
825 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
826 | "dev": true
827 | },
828 | "extend-shallow": {
829 | "version": "3.0.2",
830 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
831 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
832 | "dev": true,
833 | "requires": {
834 | "assign-symbols": "^1.0.0",
835 | "is-extendable": "^1.0.1"
836 | },
837 | "dependencies": {
838 | "is-extendable": {
839 | "version": "1.0.1",
840 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
841 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
842 | "dev": true,
843 | "requires": {
844 | "is-plain-object": "^2.0.4"
845 | }
846 | }
847 | }
848 | },
849 | "extglob": {
850 | "version": "2.0.4",
851 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
852 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
853 | "dev": true,
854 | "requires": {
855 | "array-unique": "^0.3.2",
856 | "define-property": "^1.0.0",
857 | "expand-brackets": "^2.1.4",
858 | "extend-shallow": "^2.0.1",
859 | "fragment-cache": "^0.2.1",
860 | "regex-not": "^1.0.0",
861 | "snapdragon": "^0.8.1",
862 | "to-regex": "^3.0.1"
863 | },
864 | "dependencies": {
865 | "define-property": {
866 | "version": "1.0.0",
867 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
868 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
869 | "dev": true,
870 | "requires": {
871 | "is-descriptor": "^1.0.0"
872 | }
873 | },
874 | "extend-shallow": {
875 | "version": "2.0.1",
876 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
877 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
878 | "dev": true,
879 | "requires": {
880 | "is-extendable": "^0.1.0"
881 | }
882 | },
883 | "is-accessor-descriptor": {
884 | "version": "1.0.0",
885 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
886 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
887 | "dev": true,
888 | "requires": {
889 | "kind-of": "^6.0.0"
890 | }
891 | },
892 | "is-data-descriptor": {
893 | "version": "1.0.0",
894 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
895 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
896 | "dev": true,
897 | "requires": {
898 | "kind-of": "^6.0.0"
899 | }
900 | },
901 | "is-descriptor": {
902 | "version": "1.0.2",
903 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
904 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
905 | "dev": true,
906 | "requires": {
907 | "is-accessor-descriptor": "^1.0.0",
908 | "is-data-descriptor": "^1.0.0",
909 | "kind-of": "^6.0.2"
910 | }
911 | }
912 | }
913 | },
914 | "extsprintf": {
915 | "version": "1.3.0",
916 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
917 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
918 | "dev": true
919 | },
920 | "fast-deep-equal": {
921 | "version": "1.1.0",
922 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
923 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
924 | "dev": true
925 | },
926 | "fast-glob": {
927 | "version": "2.2.3",
928 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.3.tgz",
929 | "integrity": "sha512-NiX+JXjnx43RzvVFwRWfPKo4U+1BrK5pJPsHQdKMlLoFHrrGktXglQhHliSihWAq+m1z6fHk3uwGHrtRbS9vLA==",
930 | "dev": true,
931 | "requires": {
932 | "@mrmlnc/readdir-enhanced": "^2.2.1",
933 | "@nodelib/fs.stat": "^1.0.1",
934 | "glob-parent": "^3.1.0",
935 | "is-glob": "^4.0.0",
936 | "merge2": "^1.2.1",
937 | "micromatch": "^3.1.10"
938 | }
939 | },
940 | "fast-json-stable-stringify": {
941 | "version": "2.0.0",
942 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
943 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
944 | "dev": true
945 | },
946 | "fast-levenshtein": {
947 | "version": "2.0.6",
948 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
949 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
950 | "dev": true
951 | },
952 | "figures": {
953 | "version": "2.0.0",
954 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
955 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
956 | "requires": {
957 | "escape-string-regexp": "^1.0.5"
958 | }
959 | },
960 | "fill-range": {
961 | "version": "4.0.0",
962 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
963 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
964 | "dev": true,
965 | "requires": {
966 | "extend-shallow": "^2.0.1",
967 | "is-number": "^3.0.0",
968 | "repeat-string": "^1.6.1",
969 | "to-regex-range": "^2.1.0"
970 | },
971 | "dependencies": {
972 | "extend-shallow": {
973 | "version": "2.0.1",
974 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
975 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
976 | "dev": true,
977 | "requires": {
978 | "is-extendable": "^0.1.0"
979 | }
980 | }
981 | }
982 | },
983 | "find-package-json": {
984 | "version": "1.1.0",
985 | "resolved": "https://registry.npmjs.org/find-package-json/-/find-package-json-1.1.0.tgz",
986 | "integrity": "sha512-ldihxiIFpewACALK0tUByf3GmOaTBjI5OcvwJ3mExgERUZBsSOBV8QM6vVb0/ZqylpzY6Od6SsP8bjFv7fKiTw=="
987 | },
988 | "find-up": {
989 | "version": "2.1.0",
990 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
991 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
992 | "requires": {
993 | "locate-path": "^2.0.0"
994 | }
995 | },
996 | "follow-redirects": {
997 | "version": "1.5.8",
998 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.8.tgz",
999 | "integrity": "sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg==",
1000 | "requires": {
1001 | "debug": "=3.1.0"
1002 | }
1003 | },
1004 | "for-in": {
1005 | "version": "1.0.2",
1006 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1007 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1008 | "dev": true
1009 | },
1010 | "forever-agent": {
1011 | "version": "0.6.1",
1012 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1013 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
1014 | "dev": true
1015 | },
1016 | "form-data": {
1017 | "version": "2.3.2",
1018 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
1019 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
1020 | "dev": true,
1021 | "requires": {
1022 | "asynckit": "^0.4.0",
1023 | "combined-stream": "1.0.6",
1024 | "mime-types": "^2.1.12"
1025 | },
1026 | "dependencies": {
1027 | "combined-stream": {
1028 | "version": "1.0.6",
1029 | "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
1030 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
1031 | "dev": true,
1032 | "requires": {
1033 | "delayed-stream": "~1.0.0"
1034 | }
1035 | }
1036 | }
1037 | },
1038 | "fragment-cache": {
1039 | "version": "0.2.1",
1040 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
1041 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
1042 | "dev": true,
1043 | "requires": {
1044 | "map-cache": "^0.2.2"
1045 | }
1046 | },
1047 | "from2": {
1048 | "version": "2.3.0",
1049 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
1050 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
1051 | "dev": true,
1052 | "requires": {
1053 | "inherits": "^2.0.1",
1054 | "readable-stream": "^2.0.0"
1055 | }
1056 | },
1057 | "fs-extra": {
1058 | "version": "6.0.1",
1059 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
1060 | "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
1061 | "dev": true,
1062 | "requires": {
1063 | "graceful-fs": "^4.1.2",
1064 | "jsonfile": "^4.0.0",
1065 | "universalify": "^0.1.0"
1066 | }
1067 | },
1068 | "fs.realpath": {
1069 | "version": "1.0.0",
1070 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1071 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
1072 | },
1073 | "get-value": {
1074 | "version": "2.0.6",
1075 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
1076 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
1077 | "dev": true
1078 | },
1079 | "getpass": {
1080 | "version": "0.1.7",
1081 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
1082 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
1083 | "dev": true,
1084 | "requires": {
1085 | "assert-plus": "^1.0.0"
1086 | }
1087 | },
1088 | "glob": {
1089 | "version": "7.1.3",
1090 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
1091 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
1092 | "requires": {
1093 | "fs.realpath": "^1.0.0",
1094 | "inflight": "^1.0.4",
1095 | "inherits": "2",
1096 | "minimatch": "^3.0.4",
1097 | "once": "^1.3.0",
1098 | "path-is-absolute": "^1.0.0"
1099 | }
1100 | },
1101 | "glob-parent": {
1102 | "version": "3.1.0",
1103 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
1104 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
1105 | "dev": true,
1106 | "requires": {
1107 | "is-glob": "^3.1.0",
1108 | "path-dirname": "^1.0.0"
1109 | },
1110 | "dependencies": {
1111 | "is-glob": {
1112 | "version": "3.1.0",
1113 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1114 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1115 | "dev": true,
1116 | "requires": {
1117 | "is-extglob": "^2.1.0"
1118 | }
1119 | }
1120 | }
1121 | },
1122 | "glob-to-regexp": {
1123 | "version": "0.3.0",
1124 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
1125 | "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
1126 | "dev": true
1127 | },
1128 | "globby": {
1129 | "version": "8.0.1",
1130 | "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
1131 | "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
1132 | "dev": true,
1133 | "requires": {
1134 | "array-union": "^1.0.1",
1135 | "dir-glob": "^2.0.0",
1136 | "fast-glob": "^2.0.2",
1137 | "glob": "^7.1.2",
1138 | "ignore": "^3.3.5",
1139 | "pify": "^3.0.0",
1140 | "slash": "^1.0.0"
1141 | }
1142 | },
1143 | "graceful-fs": {
1144 | "version": "4.1.11",
1145 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
1146 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
1147 | },
1148 | "har-schema": {
1149 | "version": "2.0.0",
1150 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
1151 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
1152 | "dev": true
1153 | },
1154 | "har-validator": {
1155 | "version": "5.0.3",
1156 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
1157 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
1158 | "dev": true,
1159 | "requires": {
1160 | "ajv": "^5.1.0",
1161 | "har-schema": "^2.0.0"
1162 | }
1163 | },
1164 | "has-ansi": {
1165 | "version": "2.0.0",
1166 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
1167 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
1168 | "dev": true,
1169 | "optional": true,
1170 | "requires": {
1171 | "ansi-regex": "^2.0.0"
1172 | }
1173 | },
1174 | "has-flag": {
1175 | "version": "3.0.0",
1176 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1177 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1178 | "dev": true
1179 | },
1180 | "has-value": {
1181 | "version": "1.0.0",
1182 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
1183 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
1184 | "dev": true,
1185 | "requires": {
1186 | "get-value": "^2.0.6",
1187 | "has-values": "^1.0.0",
1188 | "isobject": "^3.0.0"
1189 | }
1190 | },
1191 | "has-values": {
1192 | "version": "1.0.0",
1193 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
1194 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
1195 | "dev": true,
1196 | "requires": {
1197 | "is-number": "^3.0.0",
1198 | "kind-of": "^4.0.0"
1199 | },
1200 | "dependencies": {
1201 | "kind-of": {
1202 | "version": "4.0.0",
1203 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
1204 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
1205 | "dev": true,
1206 | "requires": {
1207 | "is-buffer": "^1.1.5"
1208 | }
1209 | }
1210 | }
1211 | },
1212 | "hawk": {
1213 | "version": "6.0.2",
1214 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
1215 | "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
1216 | "dev": true,
1217 | "requires": {
1218 | "boom": "4.x.x",
1219 | "cryptiles": "3.x.x",
1220 | "hoek": "4.x.x",
1221 | "sntp": "2.x.x"
1222 | }
1223 | },
1224 | "hoek": {
1225 | "version": "4.2.1",
1226 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
1227 | "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
1228 | "dev": true
1229 | },
1230 | "hosted-git-info": {
1231 | "version": "2.7.1",
1232 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
1233 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
1234 | },
1235 | "http-signature": {
1236 | "version": "1.2.0",
1237 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1238 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1239 | "dev": true,
1240 | "requires": {
1241 | "assert-plus": "^1.0.0",
1242 | "jsprim": "^1.2.2",
1243 | "sshpk": "^1.7.0"
1244 | }
1245 | },
1246 | "ignore": {
1247 | "version": "3.3.10",
1248 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
1249 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
1250 | "dev": true
1251 | },
1252 | "in-publish": {
1253 | "version": "2.0.0",
1254 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
1255 | "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
1256 | "dev": true
1257 | },
1258 | "indent-string": {
1259 | "version": "3.2.0",
1260 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
1261 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok="
1262 | },
1263 | "inflight": {
1264 | "version": "1.0.6",
1265 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1266 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1267 | "requires": {
1268 | "once": "^1.3.0",
1269 | "wrappy": "1"
1270 | }
1271 | },
1272 | "inherits": {
1273 | "version": "2.0.3",
1274 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1275 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
1276 | },
1277 | "into-stream": {
1278 | "version": "3.1.0",
1279 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
1280 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
1281 | "dev": true,
1282 | "requires": {
1283 | "from2": "^2.1.1",
1284 | "p-is-promise": "^1.1.0"
1285 | }
1286 | },
1287 | "is-accessor-descriptor": {
1288 | "version": "0.1.6",
1289 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
1290 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
1291 | "dev": true,
1292 | "requires": {
1293 | "kind-of": "^3.0.2"
1294 | },
1295 | "dependencies": {
1296 | "kind-of": {
1297 | "version": "3.2.2",
1298 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1299 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1300 | "dev": true,
1301 | "requires": {
1302 | "is-buffer": "^1.1.5"
1303 | }
1304 | }
1305 | }
1306 | },
1307 | "is-arrayish": {
1308 | "version": "0.2.1",
1309 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
1310 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
1311 | },
1312 | "is-buffer": {
1313 | "version": "1.1.6",
1314 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1315 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
1316 | },
1317 | "is-builtin-module": {
1318 | "version": "1.0.0",
1319 | "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
1320 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
1321 | "requires": {
1322 | "builtin-modules": "^1.0.0"
1323 | }
1324 | },
1325 | "is-data-descriptor": {
1326 | "version": "0.1.4",
1327 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
1328 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
1329 | "dev": true,
1330 | "requires": {
1331 | "kind-of": "^3.0.2"
1332 | },
1333 | "dependencies": {
1334 | "kind-of": {
1335 | "version": "3.2.2",
1336 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1337 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1338 | "dev": true,
1339 | "requires": {
1340 | "is-buffer": "^1.1.5"
1341 | }
1342 | }
1343 | }
1344 | },
1345 | "is-descriptor": {
1346 | "version": "0.1.6",
1347 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
1348 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
1349 | "dev": true,
1350 | "requires": {
1351 | "is-accessor-descriptor": "^0.1.6",
1352 | "is-data-descriptor": "^0.1.4",
1353 | "kind-of": "^5.0.0"
1354 | },
1355 | "dependencies": {
1356 | "kind-of": {
1357 | "version": "5.1.0",
1358 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
1359 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
1360 | "dev": true
1361 | }
1362 | }
1363 | },
1364 | "is-extendable": {
1365 | "version": "0.1.1",
1366 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1367 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1368 | "dev": true
1369 | },
1370 | "is-extglob": {
1371 | "version": "2.1.1",
1372 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1373 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1374 | "dev": true
1375 | },
1376 | "is-glob": {
1377 | "version": "4.0.0",
1378 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
1379 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
1380 | "dev": true,
1381 | "requires": {
1382 | "is-extglob": "^2.1.1"
1383 | }
1384 | },
1385 | "is-number": {
1386 | "version": "3.0.0",
1387 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
1388 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
1389 | "dev": true,
1390 | "requires": {
1391 | "kind-of": "^3.0.2"
1392 | },
1393 | "dependencies": {
1394 | "kind-of": {
1395 | "version": "3.2.2",
1396 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1397 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1398 | "dev": true,
1399 | "requires": {
1400 | "is-buffer": "^1.1.5"
1401 | }
1402 | }
1403 | }
1404 | },
1405 | "is-plain-obj": {
1406 | "version": "1.1.0",
1407 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
1408 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
1409 | },
1410 | "is-plain-object": {
1411 | "version": "2.0.4",
1412 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
1413 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
1414 | "dev": true,
1415 | "requires": {
1416 | "isobject": "^3.0.1"
1417 | }
1418 | },
1419 | "is-typedarray": {
1420 | "version": "1.0.0",
1421 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1422 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1423 | "dev": true
1424 | },
1425 | "is-windows": {
1426 | "version": "1.0.2",
1427 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
1428 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
1429 | "dev": true
1430 | },
1431 | "isarray": {
1432 | "version": "1.0.0",
1433 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1434 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1435 | "dev": true
1436 | },
1437 | "isobject": {
1438 | "version": "3.0.1",
1439 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
1440 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
1441 | "dev": true
1442 | },
1443 | "isstream": {
1444 | "version": "0.1.2",
1445 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1446 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1447 | "dev": true
1448 | },
1449 | "js-tokens": {
1450 | "version": "3.0.2",
1451 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
1452 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
1453 | "dev": true,
1454 | "optional": true
1455 | },
1456 | "js-yaml": {
1457 | "version": "3.12.0",
1458 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
1459 | "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
1460 | "dev": true,
1461 | "optional": true,
1462 | "requires": {
1463 | "argparse": "^1.0.7",
1464 | "esprima": "^4.0.0"
1465 | }
1466 | },
1467 | "jsbn": {
1468 | "version": "0.1.1",
1469 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1470 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1471 | "dev": true,
1472 | "optional": true
1473 | },
1474 | "json-parse-better-errors": {
1475 | "version": "1.0.2",
1476 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
1477 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
1478 | },
1479 | "json-schema": {
1480 | "version": "0.2.3",
1481 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1482 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1483 | "dev": true
1484 | },
1485 | "json-schema-traverse": {
1486 | "version": "0.3.1",
1487 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
1488 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
1489 | "dev": true
1490 | },
1491 | "json-stringify-safe": {
1492 | "version": "5.0.1",
1493 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1494 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1495 | "dev": true
1496 | },
1497 | "jsonfile": {
1498 | "version": "4.0.0",
1499 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
1500 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
1501 | "dev": true,
1502 | "requires": {
1503 | "graceful-fs": "^4.1.6"
1504 | }
1505 | },
1506 | "jsonfile-updater": {
1507 | "version": "3.1.0",
1508 | "resolved": "https://registry.npmjs.org/jsonfile-updater/-/jsonfile-updater-3.1.0.tgz",
1509 | "integrity": "sha512-G6DB55KX4Cc5t0Zpg4kfy2b3N592fahyoUJz5rk4VmS8lccXskgUbjUEX51iXMc6gh6sE7urmXWJsW6EqDozVQ=="
1510 | },
1511 | "jsprim": {
1512 | "version": "1.4.1",
1513 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1514 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1515 | "dev": true,
1516 | "requires": {
1517 | "assert-plus": "1.0.0",
1518 | "extsprintf": "1.3.0",
1519 | "json-schema": "0.2.3",
1520 | "verror": "1.10.0"
1521 | }
1522 | },
1523 | "kind-of": {
1524 | "version": "6.0.2",
1525 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1526 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
1527 | "dev": true
1528 | },
1529 | "levn": {
1530 | "version": "0.3.0",
1531 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1532 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
1533 | "dev": true,
1534 | "requires": {
1535 | "prelude-ls": "~1.1.2",
1536 | "type-check": "~0.3.2"
1537 | }
1538 | },
1539 | "load-json-file": {
1540 | "version": "4.0.0",
1541 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
1542 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
1543 | "requires": {
1544 | "graceful-fs": "^4.1.2",
1545 | "parse-json": "^4.0.0",
1546 | "pify": "^3.0.0",
1547 | "strip-bom": "^3.0.0"
1548 | }
1549 | },
1550 | "locate-path": {
1551 | "version": "2.0.0",
1552 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
1553 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
1554 | "requires": {
1555 | "p-locate": "^2.0.0",
1556 | "path-exists": "^3.0.0"
1557 | }
1558 | },
1559 | "loud-rejection": {
1560 | "version": "1.6.0",
1561 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
1562 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
1563 | "requires": {
1564 | "currently-unhandled": "^0.4.1",
1565 | "signal-exit": "^3.0.0"
1566 | }
1567 | },
1568 | "map-cache": {
1569 | "version": "0.2.2",
1570 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
1571 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
1572 | "dev": true
1573 | },
1574 | "map-obj": {
1575 | "version": "2.0.0",
1576 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
1577 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk="
1578 | },
1579 | "map-visit": {
1580 | "version": "1.0.0",
1581 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
1582 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
1583 | "dev": true,
1584 | "requires": {
1585 | "object-visit": "^1.0.0"
1586 | }
1587 | },
1588 | "meow": {
1589 | "version": "5.0.0",
1590 | "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz",
1591 | "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==",
1592 | "requires": {
1593 | "camelcase-keys": "^4.0.0",
1594 | "decamelize-keys": "^1.0.0",
1595 | "loud-rejection": "^1.0.0",
1596 | "minimist-options": "^3.0.1",
1597 | "normalize-package-data": "^2.3.4",
1598 | "read-pkg-up": "^3.0.0",
1599 | "redent": "^2.0.0",
1600 | "trim-newlines": "^2.0.0",
1601 | "yargs-parser": "^10.0.0"
1602 | }
1603 | },
1604 | "merge2": {
1605 | "version": "1.2.2",
1606 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
1607 | "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==",
1608 | "dev": true
1609 | },
1610 | "micromatch": {
1611 | "version": "3.1.10",
1612 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
1613 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
1614 | "dev": true,
1615 | "requires": {
1616 | "arr-diff": "^4.0.0",
1617 | "array-unique": "^0.3.2",
1618 | "braces": "^2.3.1",
1619 | "define-property": "^2.0.2",
1620 | "extend-shallow": "^3.0.2",
1621 | "extglob": "^2.0.4",
1622 | "fragment-cache": "^0.2.1",
1623 | "kind-of": "^6.0.2",
1624 | "nanomatch": "^1.2.9",
1625 | "object.pick": "^1.3.0",
1626 | "regex-not": "^1.0.0",
1627 | "snapdragon": "^0.8.1",
1628 | "to-regex": "^3.0.2"
1629 | }
1630 | },
1631 | "mime-db": {
1632 | "version": "1.36.0",
1633 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
1634 | "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
1635 | "dev": true
1636 | },
1637 | "mime-types": {
1638 | "version": "2.1.20",
1639 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
1640 | "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
1641 | "dev": true,
1642 | "requires": {
1643 | "mime-db": "~1.36.0"
1644 | }
1645 | },
1646 | "minimatch": {
1647 | "version": "3.0.4",
1648 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1649 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1650 | "requires": {
1651 | "brace-expansion": "^1.1.7"
1652 | }
1653 | },
1654 | "minimist": {
1655 | "version": "1.2.0",
1656 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1657 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
1658 | "dev": true
1659 | },
1660 | "minimist-options": {
1661 | "version": "3.0.2",
1662 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
1663 | "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
1664 | "requires": {
1665 | "arrify": "^1.0.1",
1666 | "is-plain-obj": "^1.1.0"
1667 | }
1668 | },
1669 | "mixin-deep": {
1670 | "version": "1.3.1",
1671 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
1672 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
1673 | "dev": true,
1674 | "requires": {
1675 | "for-in": "^1.0.2",
1676 | "is-extendable": "^1.0.1"
1677 | },
1678 | "dependencies": {
1679 | "is-extendable": {
1680 | "version": "1.0.1",
1681 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1682 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1683 | "dev": true,
1684 | "requires": {
1685 | "is-plain-object": "^2.0.4"
1686 | }
1687 | }
1688 | }
1689 | },
1690 | "mkdirp": {
1691 | "version": "0.5.1",
1692 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1693 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1694 | "dev": true,
1695 | "requires": {
1696 | "minimist": "0.0.8"
1697 | },
1698 | "dependencies": {
1699 | "minimist": {
1700 | "version": "0.0.8",
1701 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1702 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1703 | "dev": true
1704 | }
1705 | }
1706 | },
1707 | "ms": {
1708 | "version": "2.0.0",
1709 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1710 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1711 | },
1712 | "multistream": {
1713 | "version": "2.1.1",
1714 | "resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz",
1715 | "integrity": "sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==",
1716 | "dev": true,
1717 | "requires": {
1718 | "inherits": "^2.0.1",
1719 | "readable-stream": "^2.0.5"
1720 | }
1721 | },
1722 | "nanomatch": {
1723 | "version": "1.2.13",
1724 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
1725 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
1726 | "dev": true,
1727 | "requires": {
1728 | "arr-diff": "^4.0.0",
1729 | "array-unique": "^0.3.2",
1730 | "define-property": "^2.0.2",
1731 | "extend-shallow": "^3.0.2",
1732 | "fragment-cache": "^0.2.1",
1733 | "is-windows": "^1.0.2",
1734 | "kind-of": "^6.0.2",
1735 | "object.pick": "^1.3.0",
1736 | "regex-not": "^1.0.0",
1737 | "snapdragon": "^0.8.1",
1738 | "to-regex": "^3.0.1"
1739 | }
1740 | },
1741 | "normalize-package-data": {
1742 | "version": "2.4.0",
1743 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
1744 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
1745 | "requires": {
1746 | "hosted-git-info": "^2.1.4",
1747 | "is-builtin-module": "^1.0.0",
1748 | "semver": "2 || 3 || 4 || 5",
1749 | "validate-npm-package-license": "^3.0.1"
1750 | }
1751 | },
1752 | "oauth-sign": {
1753 | "version": "0.8.2",
1754 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
1755 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
1756 | "dev": true
1757 | },
1758 | "object-copy": {
1759 | "version": "0.1.0",
1760 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
1761 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
1762 | "dev": true,
1763 | "requires": {
1764 | "copy-descriptor": "^0.1.0",
1765 | "define-property": "^0.2.5",
1766 | "kind-of": "^3.0.3"
1767 | },
1768 | "dependencies": {
1769 | "define-property": {
1770 | "version": "0.2.5",
1771 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1772 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1773 | "dev": true,
1774 | "requires": {
1775 | "is-descriptor": "^0.1.0"
1776 | }
1777 | },
1778 | "kind-of": {
1779 | "version": "3.2.2",
1780 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1781 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1782 | "dev": true,
1783 | "requires": {
1784 | "is-buffer": "^1.1.5"
1785 | }
1786 | }
1787 | }
1788 | },
1789 | "object-visit": {
1790 | "version": "1.0.1",
1791 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
1792 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
1793 | "dev": true,
1794 | "requires": {
1795 | "isobject": "^3.0.0"
1796 | }
1797 | },
1798 | "object.pick": {
1799 | "version": "1.3.0",
1800 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
1801 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
1802 | "dev": true,
1803 | "requires": {
1804 | "isobject": "^3.0.1"
1805 | }
1806 | },
1807 | "once": {
1808 | "version": "1.4.0",
1809 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1810 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1811 | "requires": {
1812 | "wrappy": "1"
1813 | }
1814 | },
1815 | "optionator": {
1816 | "version": "0.8.2",
1817 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
1818 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
1819 | "dev": true,
1820 | "requires": {
1821 | "deep-is": "~0.1.3",
1822 | "fast-levenshtein": "~2.0.4",
1823 | "levn": "~0.3.0",
1824 | "prelude-ls": "~1.1.2",
1825 | "type-check": "~0.3.2",
1826 | "wordwrap": "~1.0.0"
1827 | }
1828 | },
1829 | "os-tmpdir": {
1830 | "version": "1.0.2",
1831 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1832 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1833 | "dev": true
1834 | },
1835 | "p-is-promise": {
1836 | "version": "1.1.0",
1837 | "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
1838 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
1839 | "dev": true
1840 | },
1841 | "p-limit": {
1842 | "version": "1.3.0",
1843 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
1844 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
1845 | "requires": {
1846 | "p-try": "^1.0.0"
1847 | }
1848 | },
1849 | "p-locate": {
1850 | "version": "2.0.0",
1851 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
1852 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
1853 | "requires": {
1854 | "p-limit": "^1.1.0"
1855 | }
1856 | },
1857 | "p-try": {
1858 | "version": "1.0.0",
1859 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
1860 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
1861 | },
1862 | "parse-json": {
1863 | "version": "4.0.0",
1864 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
1865 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
1866 | "requires": {
1867 | "error-ex": "^1.3.1",
1868 | "json-parse-better-errors": "^1.0.1"
1869 | }
1870 | },
1871 | "pascalcase": {
1872 | "version": "0.1.1",
1873 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
1874 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
1875 | "dev": true
1876 | },
1877 | "path-dirname": {
1878 | "version": "1.0.2",
1879 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
1880 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
1881 | "dev": true
1882 | },
1883 | "path-exists": {
1884 | "version": "3.0.0",
1885 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
1886 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
1887 | },
1888 | "path-is-absolute": {
1889 | "version": "1.0.1",
1890 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1891 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
1892 | },
1893 | "path-parse": {
1894 | "version": "1.0.6",
1895 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
1896 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
1897 | "dev": true
1898 | },
1899 | "path-type": {
1900 | "version": "3.0.0",
1901 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
1902 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
1903 | "requires": {
1904 | "pify": "^3.0.0"
1905 | }
1906 | },
1907 | "performance-now": {
1908 | "version": "2.1.0",
1909 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1910 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
1911 | "dev": true
1912 | },
1913 | "pify": {
1914 | "version": "3.0.0",
1915 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
1916 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
1917 | },
1918 | "pkg": {
1919 | "version": "4.3.4",
1920 | "resolved": "https://registry.npmjs.org/pkg/-/pkg-4.3.4.tgz",
1921 | "integrity": "sha512-/vHksmZRu68BCZi+gX4ghCMKVPMXkoo6E16HbI0jAR1/wDMrRFGCXFIho2BQLTiFwtx80KH9FpZixEs/gYxfwA==",
1922 | "dev": true,
1923 | "requires": {
1924 | "@babel/parser": "7.0.0-beta.51",
1925 | "babel-runtime": "6.26.0",
1926 | "chalk": "2.4.1",
1927 | "escodegen": "1.10.0",
1928 | "fs-extra": "6.0.1",
1929 | "globby": "8.0.1",
1930 | "into-stream": "3.1.0",
1931 | "minimist": "1.2.0",
1932 | "multistream": "2.1.1",
1933 | "pkg-fetch": "2.5.6",
1934 | "progress": "2.0.0",
1935 | "resolve": "1.6.0",
1936 | "stream-meter": "1.0.4"
1937 | },
1938 | "dependencies": {
1939 | "resolve": {
1940 | "version": "1.6.0",
1941 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz",
1942 | "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==",
1943 | "dev": true,
1944 | "requires": {
1945 | "path-parse": "^1.0.5"
1946 | }
1947 | }
1948 | }
1949 | },
1950 | "pkg-fetch": {
1951 | "version": "2.5.6",
1952 | "resolved": "https://registry.npmjs.org/pkg-fetch/-/pkg-fetch-2.5.6.tgz",
1953 | "integrity": "sha512-Bmae7NUnImRzFL7OtWfC0fnzhTqQi3vXpZjlruww882hQEVt/Z9Jcq8o7KdL6VGJPGo72JTZHDa+PRD++HkAXQ==",
1954 | "dev": true,
1955 | "requires": {
1956 | "babel-runtime": "6.26.0",
1957 | "byline": "5.0.0",
1958 | "chalk": "2.4.1",
1959 | "expand-template": "1.1.1",
1960 | "fs-extra": "6.0.1",
1961 | "in-publish": "2.0.0",
1962 | "minimist": "1.2.0",
1963 | "progress": "2.0.0",
1964 | "request": "2.85.0",
1965 | "request-progress": "3.0.0",
1966 | "semver": "5.5.0",
1967 | "unique-temp-dir": "1.0.0"
1968 | },
1969 | "dependencies": {
1970 | "semver": {
1971 | "version": "5.5.0",
1972 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
1973 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
1974 | "dev": true
1975 | }
1976 | }
1977 | },
1978 | "posix-character-classes": {
1979 | "version": "0.1.1",
1980 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
1981 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
1982 | "dev": true
1983 | },
1984 | "prelude-ls": {
1985 | "version": "1.1.2",
1986 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1987 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
1988 | "dev": true
1989 | },
1990 | "prettier": {
1991 | "version": "1.14.3",
1992 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.3.tgz",
1993 | "integrity": "sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg==",
1994 | "dev": true
1995 | },
1996 | "process-nextick-args": {
1997 | "version": "2.0.0",
1998 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1999 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
2000 | "dev": true
2001 | },
2002 | "progress": {
2003 | "version": "2.0.0",
2004 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
2005 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
2006 | "dev": true
2007 | },
2008 | "punycode": {
2009 | "version": "1.4.1",
2010 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2011 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2012 | "dev": true
2013 | },
2014 | "qs": {
2015 | "version": "6.5.2",
2016 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
2017 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
2018 | "dev": true
2019 | },
2020 | "quick-lru": {
2021 | "version": "1.1.0",
2022 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
2023 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g="
2024 | },
2025 | "read-pkg": {
2026 | "version": "3.0.0",
2027 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
2028 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
2029 | "requires": {
2030 | "load-json-file": "^4.0.0",
2031 | "normalize-package-data": "^2.3.2",
2032 | "path-type": "^3.0.0"
2033 | }
2034 | },
2035 | "read-pkg-up": {
2036 | "version": "3.0.0",
2037 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
2038 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
2039 | "requires": {
2040 | "find-up": "^2.0.0",
2041 | "read-pkg": "^3.0.0"
2042 | }
2043 | },
2044 | "readable-stream": {
2045 | "version": "2.3.6",
2046 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
2047 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2048 | "dev": true,
2049 | "requires": {
2050 | "core-util-is": "~1.0.0",
2051 | "inherits": "~2.0.3",
2052 | "isarray": "~1.0.0",
2053 | "process-nextick-args": "~2.0.0",
2054 | "safe-buffer": "~5.1.1",
2055 | "string_decoder": "~1.1.1",
2056 | "util-deprecate": "~1.0.1"
2057 | }
2058 | },
2059 | "redent": {
2060 | "version": "2.0.0",
2061 | "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
2062 | "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
2063 | "requires": {
2064 | "indent-string": "^3.0.0",
2065 | "strip-indent": "^2.0.0"
2066 | }
2067 | },
2068 | "regenerator-runtime": {
2069 | "version": "0.11.1",
2070 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
2071 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
2072 | "dev": true
2073 | },
2074 | "regex-not": {
2075 | "version": "1.0.2",
2076 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
2077 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
2078 | "dev": true,
2079 | "requires": {
2080 | "extend-shallow": "^3.0.2",
2081 | "safe-regex": "^1.1.0"
2082 | }
2083 | },
2084 | "repeat-element": {
2085 | "version": "1.1.3",
2086 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
2087 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
2088 | "dev": true
2089 | },
2090 | "repeat-string": {
2091 | "version": "1.6.1",
2092 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
2093 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
2094 | "dev": true
2095 | },
2096 | "request": {
2097 | "version": "2.85.0",
2098 | "resolved": "http://registry.npmjs.org/request/-/request-2.85.0.tgz",
2099 | "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==",
2100 | "dev": true,
2101 | "requires": {
2102 | "aws-sign2": "~0.7.0",
2103 | "aws4": "^1.6.0",
2104 | "caseless": "~0.12.0",
2105 | "combined-stream": "~1.0.5",
2106 | "extend": "~3.0.1",
2107 | "forever-agent": "~0.6.1",
2108 | "form-data": "~2.3.1",
2109 | "har-validator": "~5.0.3",
2110 | "hawk": "~6.0.2",
2111 | "http-signature": "~1.2.0",
2112 | "is-typedarray": "~1.0.0",
2113 | "isstream": "~0.1.2",
2114 | "json-stringify-safe": "~5.0.1",
2115 | "mime-types": "~2.1.17",
2116 | "oauth-sign": "~0.8.2",
2117 | "performance-now": "^2.1.0",
2118 | "qs": "~6.5.1",
2119 | "safe-buffer": "^5.1.1",
2120 | "stringstream": "~0.0.5",
2121 | "tough-cookie": "~2.3.3",
2122 | "tunnel-agent": "^0.6.0",
2123 | "uuid": "^3.1.0"
2124 | }
2125 | },
2126 | "request-progress": {
2127 | "version": "3.0.0",
2128 | "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz",
2129 | "integrity": "sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=",
2130 | "dev": true,
2131 | "requires": {
2132 | "throttleit": "^1.0.0"
2133 | }
2134 | },
2135 | "resolve": {
2136 | "version": "1.8.1",
2137 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
2138 | "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
2139 | "dev": true,
2140 | "optional": true,
2141 | "requires": {
2142 | "path-parse": "^1.0.5"
2143 | }
2144 | },
2145 | "resolve-url": {
2146 | "version": "0.2.1",
2147 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
2148 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
2149 | "dev": true
2150 | },
2151 | "ret": {
2152 | "version": "0.1.15",
2153 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
2154 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
2155 | "dev": true
2156 | },
2157 | "safe-buffer": {
2158 | "version": "5.1.2",
2159 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2160 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2161 | "dev": true
2162 | },
2163 | "safe-regex": {
2164 | "version": "1.1.0",
2165 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
2166 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
2167 | "dev": true,
2168 | "requires": {
2169 | "ret": "~0.1.10"
2170 | }
2171 | },
2172 | "safer-buffer": {
2173 | "version": "2.1.2",
2174 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2175 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2176 | "dev": true
2177 | },
2178 | "semver": {
2179 | "version": "5.5.1",
2180 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
2181 | "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
2182 | },
2183 | "set-value": {
2184 | "version": "2.0.0",
2185 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
2186 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
2187 | "dev": true,
2188 | "requires": {
2189 | "extend-shallow": "^2.0.1",
2190 | "is-extendable": "^0.1.1",
2191 | "is-plain-object": "^2.0.3",
2192 | "split-string": "^3.0.1"
2193 | },
2194 | "dependencies": {
2195 | "extend-shallow": {
2196 | "version": "2.0.1",
2197 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2198 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2199 | "dev": true,
2200 | "requires": {
2201 | "is-extendable": "^0.1.0"
2202 | }
2203 | }
2204 | }
2205 | },
2206 | "signal-exit": {
2207 | "version": "3.0.2",
2208 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
2209 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
2210 | },
2211 | "slash": {
2212 | "version": "1.0.0",
2213 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
2214 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
2215 | "dev": true
2216 | },
2217 | "snapdragon": {
2218 | "version": "0.8.2",
2219 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
2220 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
2221 | "dev": true,
2222 | "requires": {
2223 | "base": "^0.11.1",
2224 | "debug": "^2.2.0",
2225 | "define-property": "^0.2.5",
2226 | "extend-shallow": "^2.0.1",
2227 | "map-cache": "^0.2.2",
2228 | "source-map": "^0.5.6",
2229 | "source-map-resolve": "^0.5.0",
2230 | "use": "^3.1.0"
2231 | },
2232 | "dependencies": {
2233 | "debug": {
2234 | "version": "2.6.9",
2235 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2236 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2237 | "dev": true,
2238 | "requires": {
2239 | "ms": "2.0.0"
2240 | }
2241 | },
2242 | "define-property": {
2243 | "version": "0.2.5",
2244 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2245 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2246 | "dev": true,
2247 | "requires": {
2248 | "is-descriptor": "^0.1.0"
2249 | }
2250 | },
2251 | "extend-shallow": {
2252 | "version": "2.0.1",
2253 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2254 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2255 | "dev": true,
2256 | "requires": {
2257 | "is-extendable": "^0.1.0"
2258 | }
2259 | },
2260 | "source-map": {
2261 | "version": "0.5.7",
2262 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
2263 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
2264 | "dev": true
2265 | }
2266 | }
2267 | },
2268 | "snapdragon-node": {
2269 | "version": "2.1.1",
2270 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
2271 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
2272 | "dev": true,
2273 | "requires": {
2274 | "define-property": "^1.0.0",
2275 | "isobject": "^3.0.0",
2276 | "snapdragon-util": "^3.0.1"
2277 | },
2278 | "dependencies": {
2279 | "define-property": {
2280 | "version": "1.0.0",
2281 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
2282 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
2283 | "dev": true,
2284 | "requires": {
2285 | "is-descriptor": "^1.0.0"
2286 | }
2287 | },
2288 | "is-accessor-descriptor": {
2289 | "version": "1.0.0",
2290 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
2291 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
2292 | "dev": true,
2293 | "requires": {
2294 | "kind-of": "^6.0.0"
2295 | }
2296 | },
2297 | "is-data-descriptor": {
2298 | "version": "1.0.0",
2299 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
2300 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
2301 | "dev": true,
2302 | "requires": {
2303 | "kind-of": "^6.0.0"
2304 | }
2305 | },
2306 | "is-descriptor": {
2307 | "version": "1.0.2",
2308 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
2309 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
2310 | "dev": true,
2311 | "requires": {
2312 | "is-accessor-descriptor": "^1.0.0",
2313 | "is-data-descriptor": "^1.0.0",
2314 | "kind-of": "^6.0.2"
2315 | }
2316 | }
2317 | }
2318 | },
2319 | "snapdragon-util": {
2320 | "version": "3.0.1",
2321 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
2322 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
2323 | "dev": true,
2324 | "requires": {
2325 | "kind-of": "^3.2.0"
2326 | },
2327 | "dependencies": {
2328 | "kind-of": {
2329 | "version": "3.2.2",
2330 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2331 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2332 | "dev": true,
2333 | "requires": {
2334 | "is-buffer": "^1.1.5"
2335 | }
2336 | }
2337 | }
2338 | },
2339 | "sntp": {
2340 | "version": "2.1.0",
2341 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
2342 | "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
2343 | "dev": true,
2344 | "requires": {
2345 | "hoek": "4.x.x"
2346 | }
2347 | },
2348 | "source-map": {
2349 | "version": "0.6.1",
2350 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2351 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2352 | "dev": true,
2353 | "optional": true
2354 | },
2355 | "source-map-resolve": {
2356 | "version": "0.5.2",
2357 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
2358 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
2359 | "dev": true,
2360 | "requires": {
2361 | "atob": "^2.1.1",
2362 | "decode-uri-component": "^0.2.0",
2363 | "resolve-url": "^0.2.1",
2364 | "source-map-url": "^0.4.0",
2365 | "urix": "^0.1.0"
2366 | }
2367 | },
2368 | "source-map-url": {
2369 | "version": "0.4.0",
2370 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
2371 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
2372 | "dev": true
2373 | },
2374 | "spdx-correct": {
2375 | "version": "3.0.1",
2376 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.1.tgz",
2377 | "integrity": "sha512-hxSPZbRZvSDuOvADntOElzJpenIR7wXJkuoUcUtS0erbgt2fgeaoPIYretfKpslMhfFDY4k0MZ2F5CUzhBsSvQ==",
2378 | "requires": {
2379 | "spdx-expression-parse": "^3.0.0",
2380 | "spdx-license-ids": "^3.0.0"
2381 | }
2382 | },
2383 | "spdx-exceptions": {
2384 | "version": "2.1.0",
2385 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
2386 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg=="
2387 | },
2388 | "spdx-expression-parse": {
2389 | "version": "3.0.0",
2390 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
2391 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
2392 | "requires": {
2393 | "spdx-exceptions": "^2.1.0",
2394 | "spdx-license-ids": "^3.0.0"
2395 | }
2396 | },
2397 | "spdx-license-ids": {
2398 | "version": "3.0.1",
2399 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
2400 | "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w=="
2401 | },
2402 | "split-string": {
2403 | "version": "3.1.0",
2404 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
2405 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
2406 | "dev": true,
2407 | "requires": {
2408 | "extend-shallow": "^3.0.0"
2409 | }
2410 | },
2411 | "sprintf-js": {
2412 | "version": "1.0.3",
2413 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
2414 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
2415 | "dev": true,
2416 | "optional": true
2417 | },
2418 | "sshpk": {
2419 | "version": "1.14.2",
2420 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
2421 | "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
2422 | "dev": true,
2423 | "requires": {
2424 | "asn1": "~0.2.3",
2425 | "assert-plus": "^1.0.0",
2426 | "bcrypt-pbkdf": "^1.0.0",
2427 | "dashdash": "^1.12.0",
2428 | "ecc-jsbn": "~0.1.1",
2429 | "getpass": "^0.1.1",
2430 | "jsbn": "~0.1.0",
2431 | "safer-buffer": "^2.0.2",
2432 | "tweetnacl": "~0.14.0"
2433 | }
2434 | },
2435 | "static-extend": {
2436 | "version": "0.1.2",
2437 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
2438 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
2439 | "dev": true,
2440 | "requires": {
2441 | "define-property": "^0.2.5",
2442 | "object-copy": "^0.1.0"
2443 | },
2444 | "dependencies": {
2445 | "define-property": {
2446 | "version": "0.2.5",
2447 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2448 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2449 | "dev": true,
2450 | "requires": {
2451 | "is-descriptor": "^0.1.0"
2452 | }
2453 | }
2454 | }
2455 | },
2456 | "stream-meter": {
2457 | "version": "1.0.4",
2458 | "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz",
2459 | "integrity": "sha1-Uq+Vql6nYKJJFxZwTb/5D3Ov3R0=",
2460 | "dev": true,
2461 | "requires": {
2462 | "readable-stream": "^2.1.4"
2463 | }
2464 | },
2465 | "string_decoder": {
2466 | "version": "1.1.1",
2467 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2468 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2469 | "dev": true,
2470 | "requires": {
2471 | "safe-buffer": "~5.1.0"
2472 | }
2473 | },
2474 | "stringstream": {
2475 | "version": "0.0.6",
2476 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
2477 | "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
2478 | "dev": true
2479 | },
2480 | "strip-ansi": {
2481 | "version": "3.0.1",
2482 | "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
2483 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
2484 | "dev": true,
2485 | "optional": true,
2486 | "requires": {
2487 | "ansi-regex": "^2.0.0"
2488 | }
2489 | },
2490 | "strip-bom": {
2491 | "version": "3.0.0",
2492 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
2493 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
2494 | },
2495 | "strip-indent": {
2496 | "version": "2.0.0",
2497 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
2498 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g="
2499 | },
2500 | "supports-color": {
2501 | "version": "2.0.0",
2502 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
2503 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
2504 | "dev": true,
2505 | "optional": true
2506 | },
2507 | "throttleit": {
2508 | "version": "1.0.0",
2509 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz",
2510 | "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=",
2511 | "dev": true
2512 | },
2513 | "to-object-path": {
2514 | "version": "0.3.0",
2515 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
2516 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
2517 | "dev": true,
2518 | "requires": {
2519 | "kind-of": "^3.0.2"
2520 | },
2521 | "dependencies": {
2522 | "kind-of": {
2523 | "version": "3.2.2",
2524 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2525 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2526 | "dev": true,
2527 | "requires": {
2528 | "is-buffer": "^1.1.5"
2529 | }
2530 | }
2531 | }
2532 | },
2533 | "to-regex": {
2534 | "version": "3.0.2",
2535 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
2536 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
2537 | "dev": true,
2538 | "requires": {
2539 | "define-property": "^2.0.2",
2540 | "extend-shallow": "^3.0.2",
2541 | "regex-not": "^1.0.2",
2542 | "safe-regex": "^1.1.0"
2543 | }
2544 | },
2545 | "to-regex-range": {
2546 | "version": "2.1.1",
2547 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
2548 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
2549 | "dev": true,
2550 | "requires": {
2551 | "is-number": "^3.0.0",
2552 | "repeat-string": "^1.6.1"
2553 | }
2554 | },
2555 | "tough-cookie": {
2556 | "version": "2.3.4",
2557 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
2558 | "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
2559 | "dev": true,
2560 | "requires": {
2561 | "punycode": "^1.4.1"
2562 | }
2563 | },
2564 | "trim-newlines": {
2565 | "version": "2.0.0",
2566 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
2567 | "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA="
2568 | },
2569 | "tslib": {
2570 | "version": "1.9.3",
2571 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
2572 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
2573 | "dev": true
2574 | },
2575 | "tslint": {
2576 | "version": "5.11.0",
2577 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.11.0.tgz",
2578 | "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=",
2579 | "dev": true,
2580 | "optional": true,
2581 | "requires": {
2582 | "babel-code-frame": "^6.22.0",
2583 | "builtin-modules": "^1.1.1",
2584 | "chalk": "^2.3.0",
2585 | "commander": "^2.12.1",
2586 | "diff": "^3.2.0",
2587 | "glob": "^7.1.1",
2588 | "js-yaml": "^3.7.0",
2589 | "minimatch": "^3.0.4",
2590 | "resolve": "^1.3.2",
2591 | "semver": "^5.3.0",
2592 | "tslib": "^1.8.0",
2593 | "tsutils": "^2.27.2"
2594 | }
2595 | },
2596 | "tslint-config-prettier": {
2597 | "version": "1.15.0",
2598 | "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.15.0.tgz",
2599 | "integrity": "sha512-06CgrHJxJmNYVgsmeMoa1KXzQRoOdvfkqnJth6XUkNeOz707qxN0WfxfhYwhL5kXHHbYJRby2bqAPKwThlZPhw==",
2600 | "dev": true
2601 | },
2602 | "tsutils": {
2603 | "version": "2.29.0",
2604 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
2605 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
2606 | "dev": true,
2607 | "optional": true,
2608 | "requires": {
2609 | "tslib": "^1.8.1"
2610 | }
2611 | },
2612 | "tunnel-agent": {
2613 | "version": "0.6.0",
2614 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
2615 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
2616 | "dev": true,
2617 | "requires": {
2618 | "safe-buffer": "^5.0.1"
2619 | }
2620 | },
2621 | "tweetnacl": {
2622 | "version": "0.14.5",
2623 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
2624 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
2625 | "dev": true,
2626 | "optional": true
2627 | },
2628 | "type-check": {
2629 | "version": "0.3.2",
2630 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
2631 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
2632 | "dev": true,
2633 | "requires": {
2634 | "prelude-ls": "~1.1.2"
2635 | }
2636 | },
2637 | "typescript": {
2638 | "version": "3.1.1",
2639 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.1.tgz",
2640 | "integrity": "sha512-Veu0w4dTc/9wlWNf2jeRInNodKlcdLgemvPsrNpfu5Pq39sgfFjvIIgTsvUHCoLBnMhPoUA+tFxsXjU6VexVRQ==",
2641 | "dev": true
2642 | },
2643 | "uid2": {
2644 | "version": "0.0.3",
2645 | "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
2646 | "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=",
2647 | "dev": true
2648 | },
2649 | "union-value": {
2650 | "version": "1.0.0",
2651 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
2652 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
2653 | "dev": true,
2654 | "requires": {
2655 | "arr-union": "^3.1.0",
2656 | "get-value": "^2.0.6",
2657 | "is-extendable": "^0.1.1",
2658 | "set-value": "^0.4.3"
2659 | },
2660 | "dependencies": {
2661 | "extend-shallow": {
2662 | "version": "2.0.1",
2663 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2664 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2665 | "dev": true,
2666 | "requires": {
2667 | "is-extendable": "^0.1.0"
2668 | }
2669 | },
2670 | "set-value": {
2671 | "version": "0.4.3",
2672 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
2673 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
2674 | "dev": true,
2675 | "requires": {
2676 | "extend-shallow": "^2.0.1",
2677 | "is-extendable": "^0.1.1",
2678 | "is-plain-object": "^2.0.1",
2679 | "to-object-path": "^0.3.0"
2680 | }
2681 | }
2682 | }
2683 | },
2684 | "unique-temp-dir": {
2685 | "version": "1.0.0",
2686 | "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz",
2687 | "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=",
2688 | "dev": true,
2689 | "requires": {
2690 | "mkdirp": "^0.5.1",
2691 | "os-tmpdir": "^1.0.1",
2692 | "uid2": "0.0.3"
2693 | }
2694 | },
2695 | "universalify": {
2696 | "version": "0.1.2",
2697 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
2698 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
2699 | "dev": true
2700 | },
2701 | "unset-value": {
2702 | "version": "1.0.0",
2703 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
2704 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
2705 | "dev": true,
2706 | "requires": {
2707 | "has-value": "^0.3.1",
2708 | "isobject": "^3.0.0"
2709 | },
2710 | "dependencies": {
2711 | "has-value": {
2712 | "version": "0.3.1",
2713 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
2714 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
2715 | "dev": true,
2716 | "requires": {
2717 | "get-value": "^2.0.3",
2718 | "has-values": "^0.1.4",
2719 | "isobject": "^2.0.0"
2720 | },
2721 | "dependencies": {
2722 | "isobject": {
2723 | "version": "2.1.0",
2724 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
2725 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
2726 | "dev": true,
2727 | "requires": {
2728 | "isarray": "1.0.0"
2729 | }
2730 | }
2731 | }
2732 | },
2733 | "has-values": {
2734 | "version": "0.1.4",
2735 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
2736 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
2737 | "dev": true
2738 | }
2739 | }
2740 | },
2741 | "urix": {
2742 | "version": "0.1.0",
2743 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
2744 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
2745 | "dev": true
2746 | },
2747 | "use": {
2748 | "version": "3.1.1",
2749 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
2750 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
2751 | "dev": true
2752 | },
2753 | "util-deprecate": {
2754 | "version": "1.0.2",
2755 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2756 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2757 | "dev": true
2758 | },
2759 | "uuid": {
2760 | "version": "3.3.2",
2761 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
2762 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
2763 | "dev": true
2764 | },
2765 | "validate-npm-package-license": {
2766 | "version": "3.0.4",
2767 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
2768 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
2769 | "requires": {
2770 | "spdx-correct": "^3.0.0",
2771 | "spdx-expression-parse": "^3.0.0"
2772 | }
2773 | },
2774 | "verror": {
2775 | "version": "1.10.0",
2776 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
2777 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
2778 | "dev": true,
2779 | "requires": {
2780 | "assert-plus": "^1.0.0",
2781 | "core-util-is": "1.0.2",
2782 | "extsprintf": "^1.2.0"
2783 | }
2784 | },
2785 | "wordwrap": {
2786 | "version": "1.0.0",
2787 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
2788 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
2789 | "dev": true
2790 | },
2791 | "wrappy": {
2792 | "version": "1.0.2",
2793 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2794 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
2795 | },
2796 | "yargs-parser": {
2797 | "version": "10.1.0",
2798 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
2799 | "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
2800 | "requires": {
2801 | "camelcase": "^4.1.0"
2802 | }
2803 | }
2804 | }
2805 | }
2806 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts",
3 | "version": "0.2.2",
4 | "license": "MIT",
5 | "description": "The CLI client that TypeScript deserves.",
6 | "author": "Andy Wermke (https://github.com/andywer)",
7 | "repository": "github:andywer/ts",
8 | "bin": "./dist/cli.js",
9 | "scripts": {
10 | "build": "tsc",
11 | "build:pkg": "pkg .",
12 | "test": "tslint --project .",
13 | "prepare": "npm run build"
14 | },
15 | "keywords": [
16 | "cli",
17 | "typescript"
18 | ],
19 | "devDependencies": {
20 | "@types/figures": "^2.0.0",
21 | "@types/glob": "^7.1.1",
22 | "@types/meow": "^4.0.1",
23 | "@types/node": "^10.11.3",
24 | "pkg": "^4.3.4",
25 | "prettier": "^1.14.3",
26 | "tslint": "^5.11.0",
27 | "tslint-config-prettier": "^1.15.0",
28 | "typescript": "^3.1.1"
29 | },
30 | "peerDependencies": {
31 | "typescript": "2.* || 3.*"
32 | },
33 | "optionalDependencies": {
34 | "tslint": "5.*"
35 | },
36 | "files": [
37 | "dist/**"
38 | ],
39 | "prettier": {
40 | "semi": false,
41 | "printWidth": 100
42 | },
43 | "lint-staged": {
44 | "*": [
45 | "prettier --write",
46 | "git add"
47 | ]
48 | },
49 | "dependencies": {
50 | "axios": "^0.18.0",
51 | "figures": "^2.0.0",
52 | "find-package-json": "^1.1.0",
53 | "glob": "^7.1.3",
54 | "jsonfile-updater": "^3.1.0",
55 | "meow": "^5.0.0"
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/cli.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import meow from "meow"
4 | import { Commands } from "./commands/_types"
5 | import * as commands from "./commands/index"
6 |
7 | const helpText = `
8 | Usage
9 | General usage
10 | $ ts [<...options>]
11 |
12 | Compile project in current directory
13 | $ ts [build]
14 |
15 | Compile with altered options
16 | $ ts --target es2018 src/**/*.ts
17 |
18 | Create tsconfig.json
19 | $ ts --emit-tsconfig [<...options>]
20 |
21 | Show this help text
22 | $ ts --help
23 |
24 | Commands
25 | build Compile a TypeScript project. Default command.
26 | compile Alias of "build".
27 | search Search for a type declarations package on npm.
28 |
29 | General options
30 | --help Print this help.
31 | --version Print version.
32 |
33 | See for details.
34 | `
35 |
36 | const cli = meow(helpText, {
37 | autoHelp: false,
38 | flags: {
39 | "declaration": {
40 | type: "boolean"
41 | },
42 | "emit-tsconfig": {
43 | type: "boolean"
44 | },
45 | "emit-tslint": {
46 | type: "boolean"
47 | },
48 | "monorepo": {
49 | type: "boolean"
50 | },
51 | "no-strict": {
52 | type: "boolean"
53 | },
54 | "out-dir": {
55 | alias: "o"
56 | },
57 | "skip-lib-check": {
58 | type: "boolean"
59 | },
60 | "target": {
61 | alias: "t"
62 | },
63 | "watch": {
64 | alias: "w",
65 | type: "boolean"
66 | }
67 | }
68 | })
69 |
70 | const firstArgument = process.argv[2]
71 | const commandName = firstArgument && firstArgument.match(/^[a-z]+$/) ? firstArgument : null
72 |
73 | if (cli.input[0] === commandName) {
74 | cli.input.shift()
75 | }
76 |
77 | const command = (commands as Commands)[commandName ? commandName.toLowerCase() : "build"]
78 |
79 | if (commandName && !command) {
80 | console.error(`Command not found: ${commandName.toLowerCase()}`)
81 | cli.showHelp()
82 | process.exit(1)
83 | }
84 |
85 | if (cli.flags.help) {
86 | if (commandName) {
87 | console.error(command.help)
88 | } else {
89 | cli.showHelp()
90 | }
91 | process.exit(0)
92 | } else if (cli.flags.version) {
93 | cli.showVersion()
94 | process.exit(0)
95 | }
96 |
97 | command.run(cli).catch(error => {
98 | console.error(error)
99 | process.exit(1)
100 | })
101 |
--------------------------------------------------------------------------------
/src/commands/_types.ts:
--------------------------------------------------------------------------------
1 | interface Flags {
2 | [flagName: string]: string | boolean
3 | }
4 |
5 | export interface CLI {
6 | flags: Flags,
7 | input: string[]
8 | }
9 |
10 | interface Command {
11 | help: string,
12 | run (cli: CLI): Promise
13 | }
14 |
15 | export interface Commands {
16 | [commandName: string]: Command
17 | }
18 |
--------------------------------------------------------------------------------
/src/commands/build.ts:
--------------------------------------------------------------------------------
1 | import * as path from "path"
2 | import typescript from "typescript"
3 | import { compileOnce } from "../compiler"
4 | import { locatePackageJson, locateTSConfigJson, readJsonFile } from "../json-files"
5 | import { createOrUpdateJSON } from "../json-update"
6 | import { getOptions } from "../options"
7 | import { getAlwaysIncludeGlobs, getSourceGlobs, resolveGlobs } from "../sources"
8 | import { getCompilerOptions, getIncludes, parseCompilerOptions } from "../tsconfig"
9 | import { CLI } from "./_types"
10 |
11 | export const help = `
12 | Usage
13 | $ ts
14 | $ ts [build] --out-dir <...entrypoint files>
15 | $ ts [build] [--declaration] [--emit-tsconfig] [--lint] [--out-dir ] [<...entrypoint files>]
16 |
17 | Arguments
18 | Pass any glob pattern(s) of the files to compile, like 'src/**/*.ts' or '!src/**/*.test.(ts|tsx)'.
19 | You only need to pass the entrypoints of your program.
20 |
21 | Options
22 | --declaration Create declaration files (*.d.ts) in output directory. Defaults to true.
23 | --emit-tsconfig Create/update tsconfig.json file.
24 | --emit-tslint Create/update tslint.json file.
25 | --help Print this help.
26 | --jsx Enable JSX support in TSX files. Set to "react", "react-native" or "preserve".
27 | --lib <...lib> Set features available at runtime: ES5, ES2015, ..., DOM, WebWorker, ...
28 | --monorepo Indicates a monorepo package. Will look for types in package and monorepo root.
29 | --no-strict Disable strict mode.
30 | --out-dir, -o Set the output directory. Defaults to dist/.
31 | --out-module Set the output module type: "commonjs" (default), "es2015", "umd", ...
32 | --root-dir Set the source directory. Used to
33 | --skip-lib-check Don't type-check declaration files (*.d.ts).
34 | --source-maps Create source maps.
35 | --target, -t Set target: ES5, ES2015, ..., ESNext
36 | --transform Enable custom TypeScript transformation. Pass a package name or relative module path.
37 | --typings-dir Set the custom 3rd-party module declaration directory. Defaults to "typings/".
38 |
39 | TS options and compiler options can be set in the package.json file, too.
40 |
41 | See for CLI details.
42 | See for compiler options details.
43 | `
44 |
45 | const dedupe = (array: T[]): T[] => Array.from(new Set(array))
46 |
47 | const formatHost: typescript.FormatDiagnosticsHost = {
48 | getCanonicalFileName: filePath => filePath,
49 | getCurrentDirectory: typescript.sys.getCurrentDirectory,
50 | getNewLine: () => typescript.sys.newLine
51 | }
52 |
53 | function fail (message: string): never {
54 | console.error(message)
55 | return process.exit(1)
56 | }
57 |
58 | function filePathIsIn (filePath: string, dirPath: string) {
59 | return path.resolve(filePath).startsWith(path.resolve(dirPath))
60 | }
61 |
62 | export async function run (cli: CLI) {
63 | const packageJsonData = await readJsonFile(locatePackageJson() || fail("Could not locate package.json file."))
64 | const tsconfigJsonPath = locateTSConfigJson()
65 | const tsconfigJsonData = tsconfigJsonPath ? await readJsonFile(tsconfigJsonPath) : {}
66 |
67 | const options = getOptions(cli.flags, packageJsonData, tsconfigJsonData)
68 | const compilerOptionsJson = getCompilerOptions(cli.flags, options, packageJsonData, tsconfigJsonData)
69 | const compilerOptions = parseCompilerOptions(compilerOptionsJson)
70 |
71 | if (options.emitTSConfig) {
72 | const tsConfigCreated = await createOrUpdateJSON("tsconfig.json", {
73 | compilerOptions: compilerOptionsJson,
74 | include: getIncludes(cli.input, options)
75 | })
76 | if (tsConfigCreated) {
77 | console.log("Created tsconfig.json file.")
78 | }
79 | }
80 |
81 | const sourceGlobs = dedupe([
82 | ...getSourceGlobs(cli.input, options),
83 | ...(options.include || [])
84 | ])
85 | const allInputGlobs = dedupe([
86 | ...getAlwaysIncludeGlobs(options),
87 | ...sourceGlobs
88 | ])
89 |
90 | const allInputFilePaths = await resolveGlobs(allInputGlobs)
91 | const sourceFilePaths = await resolveGlobs(sourceGlobs)
92 |
93 | if (sourceFilePaths.length === 0) {
94 | fail(`No matching source files found: ${sourceGlobs.join(", ")}`)
95 | }
96 | if (compilerOptions.rootDir && sourceFilePaths.some(filePath => !filePathIsIn(filePath, compilerOptions.rootDir as string))) {
97 | console.error(`Warning: Some source files are not located within the specified source root directory (${compilerOptions.rootDir}). Disabling the source root directory compiler option.`)
98 | compilerOptions.rootDir = undefined
99 | }
100 |
101 | const startingTime = Date.now()
102 | const { diagnostics, result } = compileOnce(allInputFilePaths, compilerOptions, options)
103 | // TODO: Support watch mode
104 |
105 | if (result.emitSkipped) {
106 | console.error("Build failed:")
107 | console.error(typescript.formatDiagnosticsWithColorAndContext(diagnostics, formatHost))
108 | process.exit(1)
109 | } else {
110 | console.log(typescript.formatDiagnosticsWithColorAndContext(diagnostics, formatHost))
111 | console.log(`Compiled in ${((Date.now() - startingTime) / 1000).toFixed(1)}s`)
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/src/commands/index.ts:
--------------------------------------------------------------------------------
1 | import * as build from "./build"
2 | import * as search from "./search"
3 |
4 | // Just an alias
5 | const compile = build
6 |
7 | export {
8 | build,
9 | compile,
10 | search
11 | }
12 |
--------------------------------------------------------------------------------
/src/commands/search.ts:
--------------------------------------------------------------------------------
1 | import axios from "axios"
2 | import * as figures from "figures"
3 | import { CLI } from "./_types"
4 |
5 | export const help = `
6 | Usage
7 | $ ts search
8 |
9 | Arguments
10 | Pass any package name to look for type declarations published to npm.
11 | Will scan for "@types/" and "@*/types-" packages.
12 |
13 | Options
14 | --help Print this help.
15 | `
16 |
17 | interface Result {
18 | name: string[],
19 | rating: number[]
20 | }
21 |
22 | async function fetchTypePackageNames (partialPackageName: string) {
23 | const response = await axios.get(`http://npmsearch.com/query?q=name:(${encodeURIComponent(`types AND ${partialPackageName}*`)})&fields=name,rating&sort=rating:desc`)
24 | const results: Result[] = response.data.results
25 | return results
26 | }
27 |
28 | function filterResults (results: Result[]): Result[] {
29 | return results.filter(
30 | result => result.name[0].startsWith("@types/") || result.name[0].match(/^@[^\/]+\/types-/)
31 | )
32 | }
33 |
34 | function getTypePackageBaseName (packageName: string) {
35 | return packageName.replace(/^@types\//, "").replace(/^@[^\/]+\/types-/, "")
36 | }
37 |
38 | function sortResults (results: Result[], packageName: string): Result[] {
39 | const customTypesPackageNames = results.filter(result => !result.name[0].startsWith("@types/"))
40 | const defTypedPackageNames = results.filter(result => result.name[0].startsWith("@types/"))
41 |
42 | const sorter = (result1: Result, result2: Result) => {
43 | const baseName1 = getTypePackageBaseName(result1.name[0])
44 | const baseName2 = getTypePackageBaseName(result2.name[0])
45 |
46 | if (baseName2.startsWith(packageName) && !baseName1.startsWith(packageName)) {
47 | return 1
48 | } else if (baseName2.length < baseName1.length) {
49 | return 1
50 | } else {
51 | return -1
52 | }
53 | }
54 |
55 | return [
56 | ...defTypedPackageNames.sort(sorter),
57 | ...customTypesPackageNames.sort(sorter)
58 | ]
59 | }
60 |
61 | export async function run (cli: CLI) {
62 | if (cli.input.length !== 1) {
63 | console.error(help)
64 | process.exit(1)
65 | }
66 |
67 | const [ packageName ] = cli.input
68 | const results = await fetchTypePackageNames(packageName)
69 |
70 | if (results.length === 0) {
71 | console.log(`${figures.cross} No matches`)
72 | } else {
73 | const preparedResults = sortResults(filterResults(results), packageName)
74 | console.log("Type declaration packages:\n")
75 |
76 | for (const result of preparedResults) {
77 | console.log(` ${result.name[0]}`)
78 | }
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/compiler.ts:
--------------------------------------------------------------------------------
1 | import * as path from "path"
2 | import typescript from "typescript"
3 | import { Options } from "./options"
4 |
5 | type Transformation = (options?: any, program?: typescript.Program) => typescript.TransformerFactory
6 |
7 | function loadCustomTransformations (options: Options) {
8 | if (!options.transformations) {
9 | return []
10 | }
11 |
12 | return options.transformations.map((modulePath: string) => {
13 | const module: any = modulePath.match(/^\.\.?\//)
14 | ? require(path.join(process.cwd(), modulePath))
15 | : require(modulePath)
16 | const transformer: Transformation = module && module.default ? module.default : module
17 | return transformer
18 | })
19 | }
20 |
21 | export function compileOnce (filePaths: string[], compilerOptions: typescript.CompilerOptions, options: Options) {
22 | const customTransformations = loadCustomTransformations(options)
23 | const program = typescript.createProgram(filePaths, { ...compilerOptions, noEmit: false, noEmitOnError: true })
24 |
25 | const transformations: typescript.CustomTransformers = {
26 | before: customTransformations.map(transformation => transformation({}, program))
27 | }
28 | const result = program.emit(undefined, undefined, undefined, undefined, transformations)
29 |
30 | const diagnostics = typescript.getPreEmitDiagnostics(program).concat(result.diagnostics)
31 | return {
32 | diagnostics,
33 | result
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/json-files.ts:
--------------------------------------------------------------------------------
1 | import findPackageJson, { IteratorNext } from "find-package-json"
2 | import * as fs from "fs"
3 | import * as path from "path"
4 | import typescript from "typescript"
5 |
6 | const readFile = (filePath: string, encoding = "utf8") => new Promise(
7 | (resolve, reject) => fs.readFile(filePath, encoding, (err, content) => err ? reject(err) : resolve(content))
8 | )
9 |
10 | export function locatePackageJson (dirPath?: string) {
11 | const iterator = findPackageJson(dirPath)
12 | const next = iterator.next()
13 | return next.done ? null : (next as IteratorNext).filename
14 | }
15 |
16 | export function locateTSConfigJson (dirPath: string = typescript.sys.getCurrentDirectory()) {
17 | return typescript.findConfigFile(dirPath, typescript.sys.fileExists) || null
18 | }
19 |
20 | export async function readJsonFile (filePath: string) {
21 | const jsonString = await readFile(filePath)
22 | try {
23 | return JSON.parse(jsonString)
24 | } catch (error) {
25 | throw new Error(`Parsing ${path.basename(filePath)} failed: ${error.message}`)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/json-update.ts:
--------------------------------------------------------------------------------
1 | import * as fs from "fs"
2 | import createUpdater from "jsonfile-updater"
3 |
4 | const readFile = (filePath: string, encoding = "utf8") => new Promise(
5 | (resolve, reject) => fs.readFile(filePath, encoding, (err, content) => err ? reject(err) : resolve(content))
6 | )
7 | const stat = (filePath: string) => new Promise(
8 | (resolve, reject) => fs.stat(filePath, (error, stats) => error ? reject(error) : resolve(stats))
9 | )
10 | const writeFile = (filePath: string, content: string, encoding = "utf8") => new Promise(
11 | (resolve, reject) => fs.writeFile(filePath, content, encoding, (err) => err ? reject(err) : resolve())
12 | )
13 |
14 | async function readJsonFile (filePath: string) {
15 | const content = await readFile(filePath)
16 | try {
17 | return JSON.parse(content)
18 | } catch (error) {
19 | throw new Error(`Parsing JSON file ${filePath} failed: ${error.message}`)
20 | }
21 | }
22 |
23 | export async function createOrUpdateJSON (filePath: string, jsonData: any) {
24 | try {
25 | await stat(filePath)
26 | } catch (error) {
27 | await writeFile(filePath, JSON.stringify(jsonData, null, 2))
28 | return true
29 | }
30 |
31 | const updater = createUpdater(filePath)
32 | const prevData = await readJsonFile(filePath)
33 |
34 | await Promise.all(
35 | Object.keys(jsonData).filter(key => typeof jsonData[key] !== "undefined").map(async key => {
36 | try {
37 | if (prevData[key]) {
38 | await updater.set(key, jsonData[key])
39 | } else {
40 | await updater.add(key, jsonData[key])
41 | }
42 | } catch (error) {
43 | throw new Error(`Updating JSON file ${filePath}, key "${key}" failed: ${error.message}`)
44 | }
45 | })
46 | )
47 | return false
48 | }
49 |
--------------------------------------------------------------------------------
/src/options.ts:
--------------------------------------------------------------------------------
1 | export type Options = Partial>
2 |
3 | function toArray (thing: T | T[] | undefined): T[] {
4 | if (!thing) {
5 | return []
6 | } else if (Array.isArray(thing)) {
7 | return thing
8 | } else {
9 | return [ thing ]
10 | }
11 | }
12 |
13 | export function getOptions (cliFlags: any, packageJsonData: any, tsconfigJsonData: any) {
14 | const packageJsonConfig = packageJsonData.ts || {}
15 |
16 | if (packageJsonConfig.include && !Array.isArray(packageJsonConfig.include)) {
17 | throw new Error("Expected 'ts.include' in package.json file to be an array.")
18 | }
19 | if (tsconfigJsonData.include && !Array.isArray(tsconfigJsonData.include)) {
20 | throw new Error("Expected 'include' in tsconfig.json file to be an array.")
21 | }
22 |
23 | const emitTSConfig = Boolean(cliFlags.emitTsconfig || (packageJsonConfig.emit && packageJsonConfig.emit.tsconfig))
24 | const include = packageJsonConfig.include || tsconfigJsonData.include || undefined
25 | const monorepo = cliFlags.monorepo || packageJsonConfig.monorepo
26 | const transformations = cliFlags.transform ? toArray(cliFlags.transform) : packageJsonConfig.transforms as string[] || []
27 | const typingsDirectory = cliFlags.typingsDir || packageJsonConfig.typingsDirectory || "./typings"
28 |
29 | return {
30 | emitTSConfig,
31 | include,
32 | monorepo,
33 | transformations,
34 | typingsDirectory
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/sources.ts:
--------------------------------------------------------------------------------
1 | import globByCallback from "glob"
2 | import * as path from "path"
3 | import { Options } from "./options"
4 |
5 | const defaultSourceGlobs = [
6 | "src/**/*.ts",
7 | "src/**/*.tsx"
8 | ]
9 |
10 | const dedupe = (array: T[]): T[] => Array.from(new Set(array))
11 |
12 | const glob = (pattern: string) => new Promise(
13 | (resolve, reject) => globByCallback(pattern, (error, result) => error ? reject(error): resolve(result))
14 | )
15 |
16 | export function getSourceGlobs (cliArguments: string[], options: Options) {
17 | if (cliArguments.length > 0) {
18 | return cliArguments
19 | } else if (options.include) {
20 | return options.include
21 | }
22 |
23 | return defaultSourceGlobs
24 | }
25 |
26 | export function getAlwaysIncludeGlobs (options: Options) {
27 | return [
28 | path.join(options.typingsDirectory, "**", "*.d.ts"),
29 | path.join("node_modules", "@*", "types-*", "*.d.ts"),
30 | ...(
31 | options.monorepo
32 | ? [ path.join("..", "..", "node_modules", "@*", "types-*", "*.d.ts") ]
33 | : []
34 | )
35 | ]
36 | }
37 |
38 | export async function resolveGlobs (globs: string[]) {
39 | let filePaths: string[] = []
40 | for (const pattern of globs) {
41 | const pathsMatchingPattern = await glob(pattern)
42 | filePaths = [ ...filePaths, ...pathsMatchingPattern ]
43 | }
44 | return dedupe(filePaths)
45 | }
46 |
--------------------------------------------------------------------------------
/src/tsconfig.ts:
--------------------------------------------------------------------------------
1 | import typescript from "typescript"
2 | import { Options } from "./options"
3 | import { getAlwaysIncludeGlobs } from "./sources"
4 |
5 | const tsconfigDefaults = {
6 | options: {
7 | esModuleInterop: true,
8 | lib: ["es2015"],
9 | newLine: "lf",
10 | module: "commonjs",
11 | moduleResolution: "node",
12 | outDir: "dist/",
13 | strict: true,
14 | target: "es5"
15 | }
16 | }
17 |
18 | const dedupe = (array: T[]): T[] => Array.from(new Set(array))
19 |
20 | export function getCompilerOptions (cliFlags: any, options: Options, packageJsonData: any, tsconfigJsonData: any = null) {
21 | const packageJsonConfig = packageJsonData.ts || {}
22 | const tsconfigJson = { compilerOptions: {}, ...tsconfigJsonData }
23 |
24 | const compilerOptions = {
25 | ...tsconfigDefaults.options,
26 | ...tsconfigJson.compilerOptions,
27 | ...(packageJsonConfig.compilerOptions || {})
28 | }
29 |
30 | if (cliFlags.declaration) {
31 | compilerOptions.declaration = true
32 | }
33 | if (cliFlags.jsx) {
34 | compilerOptions.jsx = cliFlags.jsx
35 | }
36 | if (cliFlags.lib) {
37 | compilerOptions.lib = cliFlags.lib.split(",")
38 | }
39 | if (cliFlags.noStrict) {
40 | compilerOptions.strict = false
41 | }
42 | if (cliFlags.outDir) {
43 | compilerOptions.outDir = cliFlags.outDir
44 | }
45 | if (cliFlags.outModule) {
46 | compilerOptions.module = cliFlags.outModule
47 | }
48 | if (cliFlags.rootDir) {
49 | compilerOptions.rootDir = cliFlags.rootDir
50 | }
51 | if (cliFlags.skipLibCheck) {
52 | compilerOptions.skipLibCheck = true
53 | }
54 | if (cliFlags.sourceMaps) {
55 | compilerOptions.sourceMap = true
56 | }
57 | if (cliFlags.target) {
58 | compilerOptions.target = cliFlags.target
59 | }
60 | if (options.monorepo) {
61 | compilerOptions.paths = {
62 | ...compilerOptions.paths,
63 | "*": dedupe([
64 | ...(compilerOptions.paths && compilerOptions.paths["*"] ? compilerOptions.paths["*"] : ["./node_modules/*"]),
65 | "../../node_modules/*"
66 | ])
67 | }
68 | }
69 |
70 | if (compilerOptions.paths && !compilerOptions.baseUrl) {
71 | compilerOptions.baseUrl = "."
72 | }
73 |
74 | return compilerOptions
75 | }
76 |
77 | export function parseCompilerOptions (compilerOptions: any) {
78 | const parsed = typescript.parseJsonConfigFileContent({ compilerOptions }, typescript.sys, ".")
79 | return parsed.options
80 | }
81 |
82 | export function getIncludes (cliArgs: string[], options: Options) {
83 | return dedupe([
84 | ...cliArgs,
85 | ...(options.include || []),
86 | ...getAlwaysIncludeGlobs(options)
87 | ])
88 | }
89 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "esModuleInterop": true,
5 | "skipLibCheck": true,
6 | "target": "es5",
7 | "module": "commonjs",
8 | "lib": ["es2015"],
9 | "outDir": "dist",
10 | "strict": true
11 | },
12 | "include": [
13 | "./src/cli.ts",
14 | "./typings/*"
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "tslint:latest",
4 | "tslint-config-prettier"
5 | ],
6 | "jsRules": {},
7 | "rules": {
8 | "interface-name": [
9 | true,
10 | "never-prefix"
11 | ],
12 | "no-console": false,
13 | "no-implicit-dependencies": [
14 | true,
15 | "dev"
16 | ],
17 | "no-submodule-imports": false,
18 | "object-literal-sort-keys": false,
19 | "only-arrow-functions": false,
20 | "semicolon": false
21 | },
22 | "rulesDirectory": []
23 | }
24 |
--------------------------------------------------------------------------------
/typings/find-package-json.d.ts:
--------------------------------------------------------------------------------
1 | declare module "find-package-json" {
2 | type IteratorNext = {
3 | done: false,
4 | filename: string,
5 | value: any | false
6 | }
7 |
8 | interface Iterator {
9 | next(): IteratorNext | { done: false }
10 | }
11 |
12 | function findPackageJson(dirPath?: string): Iterator
13 |
14 | export default findPackageJson
15 | export {
16 | IteratorNext
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/typings/jsonfile-updater.d.ts:
--------------------------------------------------------------------------------
1 | declare module "jsonfile-updater" {
2 | type Callback = (error: Error) => void
3 |
4 | interface Updater {
5 | add(key: string, value: any): Promise
6 | append(key: string, value: any): Promise
7 | delete(key: string): Promise
8 | delete(keys: string[]): Promise
9 | set(key: string, value: any): Promise
10 | }
11 |
12 | function createUpdater (filePath: string): Updater
13 |
14 | export = createUpdater
15 | }
16 |
--------------------------------------------------------------------------------