aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/.gitignore4
-rw-r--r--editors/code/.vscode/launch.json36
-rw-r--r--editors/code/.vscode/settings.json11
-rw-r--r--editors/code/.vscode/tasks.json20
-rw-r--r--editors/code/.vscodeignore9
-rw-r--r--editors/code/package-lock.json2419
-rw-r--r--editors/code/package.json149
-rw-r--r--editors/code/src/extension.ts400
-rw-r--r--editors/code/tsconfig.json17
9 files changed, 3065 insertions, 0 deletions
diff --git a/editors/code/.gitignore b/editors/code/.gitignore
new file mode 100644
index 000000000..5fe00fea8
--- /dev/null
+++ b/editors/code/.gitignore
@@ -0,0 +1,4 @@
1out
2node_modules
3.vscode-test/
4*.vsix
diff --git a/editors/code/.vscode/launch.json b/editors/code/.vscode/launch.json
new file mode 100644
index 000000000..c174db304
--- /dev/null
+++ b/editors/code/.vscode/launch.json
@@ -0,0 +1,36 @@
1// A launch configuration that compiles the extension and then opens it inside a new window
2// Use IntelliSense to learn about possible attributes.
3// Hover to view descriptions of existing attributes.
4// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5{
6 "version": "0.2.0",
7 "configurations": [
8 {
9 "name": "Extension",
10 "type": "extensionHost",
11 "request": "launch",
12 "runtimeExecutable": "${execPath}",
13 "args": [
14 "--extensionDevelopmentPath=${workspaceFolder}"
15 ],
16 "outFiles": [
17 "${workspaceFolder}/out/**/*.js"
18 ],
19 "preLaunchTask": "npm: watch"
20 },
21 {
22 "name": "Extension Tests",
23 "type": "extensionHost",
24 "request": "launch",
25 "runtimeExecutable": "${execPath}",
26 "args": [
27 "--extensionDevelopmentPath=${workspaceFolder}",
28 "--extensionTestsPath=${workspaceFolder}/out/test"
29 ],
30 "outFiles": [
31 "${workspaceFolder}/out/test/**/*.js"
32 ],
33 "preLaunchTask": "npm: watch"
34 }
35 ]
36}
diff --git a/editors/code/.vscode/settings.json b/editors/code/.vscode/settings.json
new file mode 100644
index 000000000..30bf8c2d3
--- /dev/null
+++ b/editors/code/.vscode/settings.json
@@ -0,0 +1,11 @@
1// Place your settings in this file to overwrite default and user settings.
2{
3 "files.exclude": {
4 "out": false // set this to true to hide the "out" folder with the compiled JS files
5 },
6 "search.exclude": {
7 "out": true // set this to false to include "out" folder in search results
8 },
9 // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
10 "typescript.tsc.autoDetect": "off"
11} \ No newline at end of file
diff --git a/editors/code/.vscode/tasks.json b/editors/code/.vscode/tasks.json
new file mode 100644
index 000000000..604e38f5a
--- /dev/null
+++ b/editors/code/.vscode/tasks.json
@@ -0,0 +1,20 @@
1// See https://go.microsoft.com/fwlink/?LinkId=733558
2// for the documentation about the tasks.json format
3{
4 "version": "2.0.0",
5 "tasks": [
6 {
7 "type": "npm",
8 "script": "watch",
9 "problemMatcher": "$tsc-watch",
10 "isBackground": true,
11 "presentation": {
12 "reveal": "never"
13 },
14 "group": {
15 "kind": "build",
16 "isDefault": true
17 }
18 }
19 ]
20} \ No newline at end of file
diff --git a/editors/code/.vscodeignore b/editors/code/.vscodeignore
new file mode 100644
index 000000000..855717896
--- /dev/null
+++ b/editors/code/.vscodeignore
@@ -0,0 +1,9 @@
1.vscode/**
2.vscode-test/**
3out/test/**
4out/**/*.map
5src/**
6.gitignore
7tsconfig.json
8vsc-extension-quickstart.md
9tslint.json \ No newline at end of file
diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json
new file mode 100644
index 000000000..594a10b51
--- /dev/null
+++ b/editors/code/package-lock.json
@@ -0,0 +1,2419 @@
1{
2 "name": "ra-lsp",
3 "version": "0.0.1",
4 "lockfileVersion": 1,
5 "requires": true,
6 "dependencies": {
7 "@types/mocha": {
8 "version": "2.2.48",
9 "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.48.tgz",
10 "integrity": "sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==",
11 "dev": true
12 },
13 "@types/node": {
14 "version": "8.10.29",
15 "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.29.tgz",
16 "integrity": "sha512-zbteaWZ2mdduacm0byELwtRyhYE40aK+pAanQk415gr1eRuu67x7QGOLmn8jz5zI8LDK7d0WI/oT6r5Trz4rzQ==",
17 "dev": true
18 },
19 "ajv": {
20 "version": "5.5.2",
21 "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
22 "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
23 "dev": true,
24 "requires": {
25 "co": "4.6.0",
26 "fast-deep-equal": "1.1.0",
27 "fast-json-stable-stringify": "2.0.0",
28 "json-schema-traverse": "0.3.1"
29 }
30 },
31 "ansi-cyan": {
32 "version": "0.1.1",
33 "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
34 "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
35 "dev": true,
36 "requires": {
37 "ansi-wrap": "0.1.0"
38 }
39 },
40 "ansi-red": {
41 "version": "0.1.1",
42 "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
43 "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
44 "dev": true,
45 "requires": {
46 "ansi-wrap": "0.1.0"
47 }
48 },
49 "ansi-wrap": {
50 "version": "0.1.0",
51 "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
52 "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
53 "dev": true
54 },
55 "argparse": {
56 "version": "1.0.10",
57 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
58 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
59 "dev": true,
60 "requires": {
61 "sprintf-js": "1.0.3"
62 }
63 },
64 "arr-diff": {
65 "version": "1.1.0",
66 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
67 "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
68 "dev": true,
69 "requires": {
70 "arr-flatten": "1.1.0",
71 "array-slice": "0.2.3"
72 }
73 },
74 "arr-flatten": {
75 "version": "1.1.0",
76 "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
77 "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
78 "dev": true
79 },
80 "arr-union": {
81 "version": "2.1.0",
82 "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
83 "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
84 "dev": true
85 },
86 "array-differ": {
87 "version": "1.0.0",
88 "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
89 "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
90 "dev": true
91 },
92 "array-slice": {
93 "version": "0.2.3",
94 "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
95 "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
96 "dev": true
97 },
98 "array-union": {
99 "version": "1.0.2",
100 "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
101 "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
102 "dev": true,
103 "requires": {
104 "array-uniq": "1.0.3"
105 }
106 },
107 "array-uniq": {
108 "version": "1.0.3",
109 "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
110 "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
111 "dev": true
112 },
113 "array-unique": {
114 "version": "0.2.1",
115 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
116 "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
117 "dev": true
118 },
119 "arrify": {
120 "version": "1.0.1",
121 "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
122 "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
123 "dev": true
124 },
125 "asn1": {
126 "version": "0.2.4",
127 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
128 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
129 "dev": true,
130 "requires": {
131 "safer-buffer": "2.1.2"
132 }
133 },
134 "assert-plus": {
135 "version": "1.0.0",
136 "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
137 "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
138 "dev": true
139 },
140 "asynckit": {
141 "version": "0.4.0",
142 "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
143 "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
144 "dev": true
145 },
146 "aws-sign2": {
147 "version": "0.7.0",
148 "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
149 "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
150 "dev": true
151 },
152 "aws4": {
153 "version": "1.8.0",
154 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
155 "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
156 "dev": true
157 },
158 "balanced-match": {
159 "version": "1.0.0",
160 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
161 "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
162 "dev": true
163 },
164 "bcrypt-pbkdf": {
165 "version": "1.0.2",
166 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
167 "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
168 "dev": true,
169 "optional": true,
170 "requires": {
171 "tweetnacl": "0.14.5"
172 }
173 },
174 "block-stream": {
175 "version": "0.0.9",
176 "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
177 "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
178 "dev": true,
179 "requires": {
180 "inherits": "2.0.3"
181 }
182 },
183 "boolbase": {
184 "version": "1.0.0",
185 "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
186 "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
187 "dev": true
188 },
189 "brace-expansion": {
190 "version": "1.1.11",
191 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
192 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
193 "dev": true,
194 "requires": {
195 "balanced-match": "1.0.0",
196 "concat-map": "0.0.1"
197 }
198 },
199 "braces": {
200 "version": "1.8.5",
201 "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
202 "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
203 "dev": true,
204 "requires": {
205 "expand-range": "1.8.2",
206 "preserve": "0.2.0",
207 "repeat-element": "1.1.3"
208 }
209 },
210 "browser-stdout": {
211 "version": "1.3.0",
212 "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
213 "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
214 "dev": true
215 },
216 "buffer-crc32": {
217 "version": "0.2.13",
218 "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
219 "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
220 "dev": true
221 },
222 "buffer-from": {
223 "version": "1.1.1",
224 "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
225 "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
226 "dev": true
227 },
228 "caseless": {
229 "version": "0.12.0",
230 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
231 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
232 "dev": true
233 },
234 "cheerio": {
235 "version": "1.0.0-rc.2",
236 "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz",
237 "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=",
238 "dev": true,
239 "requires": {
240 "css-select": "1.2.0",
241 "dom-serializer": "0.1.0",
242 "entities": "1.1.1",
243 "htmlparser2": "3.9.2",
244 "lodash": "4.17.11",
245 "parse5": "3.0.3"
246 }
247 },
248 "clone": {
249 "version": "0.2.0",
250 "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
251 "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
252 "dev": true
253 },
254 "clone-buffer": {
255 "version": "1.0.0",
256 "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
257 "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
258 "dev": true
259 },
260 "clone-stats": {
261 "version": "0.0.1",
262 "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
263 "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
264 "dev": true
265 },
266 "cloneable-readable": {
267 "version": "1.1.2",
268 "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz",
269 "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==",
270 "dev": true,
271 "requires": {
272 "inherits": "2.0.3",
273 "process-nextick-args": "2.0.0",
274 "readable-stream": "2.3.6"
275 }
276 },
277 "co": {
278 "version": "4.6.0",
279 "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
280 "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
281 "dev": true
282 },
283 "combined-stream": {
284 "version": "1.0.6",
285 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
286 "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
287 "dev": true,
288 "requires": {
289 "delayed-stream": "1.0.0"
290 }
291 },
292 "commander": {
293 "version": "2.18.0",
294 "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
295 "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==",
296 "dev": true
297 },
298 "concat-map": {
299 "version": "0.0.1",
300 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
301 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
302 "dev": true
303 },
304 "convert-source-map": {
305 "version": "1.6.0",
306 "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
307 "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
308 "dev": true,
309 "requires": {
310 "safe-buffer": "5.1.2"
311 }
312 },
313 "core-util-is": {
314 "version": "1.0.2",
315 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
316 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
317 "dev": true
318 },
319 "css-select": {
320 "version": "1.2.0",
321 "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
322 "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
323 "dev": true,
324 "requires": {
325 "boolbase": "1.0.0",
326 "css-what": "2.1.0",
327 "domutils": "1.5.1",
328 "nth-check": "1.0.1"
329 }
330 },
331 "css-what": {
332 "version": "2.1.0",
333 "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
334 "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
335 "dev": true
336 },
337 "dashdash": {
338 "version": "1.14.1",
339 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
340 "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
341 "dev": true,
342 "requires": {
343 "assert-plus": "1.0.0"
344 }
345 },
346 "debug": {
347 "version": "3.1.0",
348 "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
349 "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
350 "dev": true,
351 "requires": {
352 "ms": "2.0.0"
353 }
354 },
355 "deep-assign": {
356 "version": "1.0.0",
357 "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz",
358 "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=",
359 "dev": true,
360 "requires": {
361 "is-obj": "1.0.1"
362 }
363 },
364 "delayed-stream": {
365 "version": "1.0.0",
366 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
367 "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
368 "dev": true
369 },
370 "denodeify": {
371 "version": "1.2.1",
372 "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz",
373 "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=",
374 "dev": true
375 },
376 "diff": {
377 "version": "3.3.1",
378 "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
379 "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==",
380 "dev": true
381 },
382 "dom-serializer": {
383 "version": "0.1.0",
384 "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
385 "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
386 "dev": true,
387 "requires": {
388 "domelementtype": "1.1.3",
389 "entities": "1.1.1"
390 },
391 "dependencies": {
392 "domelementtype": {
393 "version": "1.1.3",
394 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
395 "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
396 "dev": true
397 }
398 }
399 },
400 "domelementtype": {
401 "version": "1.3.0",
402 "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
403 "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
404 "dev": true
405 },
406 "domhandler": {
407 "version": "2.4.2",
408 "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
409 "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
410 "dev": true,
411 "requires": {
412 "domelementtype": "1.3.0"
413 }
414 },
415 "domutils": {
416 "version": "1.5.1",
417 "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
418 "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
419 "dev": true,
420 "requires": {
421 "dom-serializer": "0.1.0",
422 "domelementtype": "1.3.0"
423 }
424 },
425 "duplexer": {
426 "version": "0.1.1",
427 "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
428 "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
429 "dev": true
430 },
431 "duplexify": {
432 "version": "3.6.0",
433 "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
434 "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
435 "dev": true,
436 "requires": {
437 "end-of-stream": "1.4.1",
438 "inherits": "2.0.3",
439 "readable-stream": "2.3.6",
440 "stream-shift": "1.0.0"
441 }
442 },
443 "ecc-jsbn": {
444 "version": "0.1.2",
445 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
446 "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
447 "dev": true,
448 "optional": true,
449 "requires": {
450 "jsbn": "0.1.1",
451 "safer-buffer": "2.1.2"
452 }
453 },
454 "end-of-stream": {
455 "version": "1.4.1",
456 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
457 "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
458 "dev": true,
459 "requires": {
460 "once": "1.4.0"
461 }
462 },
463 "entities": {
464 "version": "1.1.1",
465 "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
466 "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
467 "dev": true
468 },
469 "escape-string-regexp": {
470 "version": "1.0.5",
471 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
472 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
473 "dev": true
474 },
475 "event-stream": {
476 "version": "3.3.6",
477 "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz",
478 "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==",
479 "dev": true,
480 "requires": {
481 "duplexer": "0.1.1",
482 "flatmap-stream": "0.1.0",
483 "from": "0.1.7",
484 "map-stream": "0.0.7",
485 "pause-stream": "0.0.11",
486 "split": "1.0.1",
487 "stream-combiner": "0.2.2",
488 "through": "2.3.8"
489 }
490 },
491 "expand-brackets": {
492 "version": "0.1.5",
493 "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
494 "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
495 "dev": true,
496 "requires": {
497 "is-posix-bracket": "0.1.1"
498 }
499 },
500 "expand-range": {
501 "version": "1.8.2",
502 "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
503 "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
504 "dev": true,
505 "requires": {
506 "fill-range": "2.2.4"
507 }
508 },
509 "extend": {
510 "version": "3.0.2",
511 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
512 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
513 "dev": true
514 },
515 "extend-shallow": {
516 "version": "1.1.4",
517 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
518 "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
519 "dev": true,
520 "requires": {
521 "kind-of": "1.1.0"
522 }
523 },
524 "extglob": {
525 "version": "0.3.2",
526 "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
527 "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
528 "dev": true,
529 "requires": {
530 "is-extglob": "1.0.0"
531 },
532 "dependencies": {
533 "is-extglob": {
534 "version": "1.0.0",
535 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
536 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
537 "dev": true
538 }
539 }
540 },
541 "extsprintf": {
542 "version": "1.3.0",
543 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
544 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
545 "dev": true
546 },
547 "fast-deep-equal": {
548 "version": "1.1.0",
549 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
550 "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
551 "dev": true
552 },
553 "fast-json-stable-stringify": {
554 "version": "2.0.0",
555 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
556 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
557 "dev": true
558 },
559 "fd-slicer": {
560 "version": "1.1.0",
561 "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
562 "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
563 "dev": true,
564 "requires": {
565 "pend": "1.2.0"
566 }
567 },
568 "filename-regex": {
569 "version": "2.0.1",
570 "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
571 "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
572 "dev": true
573 },
574 "fill-range": {
575 "version": "2.2.4",
576 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
577 "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
578 "dev": true,
579 "requires": {
580 "is-number": "2.1.0",
581 "isobject": "2.1.0",
582 "randomatic": "3.1.0",
583 "repeat-element": "1.1.3",
584 "repeat-string": "1.6.1"
585 }
586 },
587 "first-chunk-stream": {
588 "version": "1.0.0",
589 "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
590 "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
591 "dev": true
592 },
593 "flatmap-stream": {
594 "version": "0.1.0",
595 "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz",
596 "integrity": "sha512-Nlic4ZRYxikqnK5rj3YoxDVKGGtUjcNDUtvQ7XsdGLZmMwdUYnXf10o1zcXtzEZTBgc6GxeRpQxV/Wu3WPIIHA==",
597 "dev": true
598 },
599 "for-in": {
600 "version": "1.0.2",
601 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
602 "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
603 "dev": true
604 },
605 "for-own": {
606 "version": "0.1.5",
607 "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
608 "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
609 "dev": true,
610 "requires": {
611 "for-in": "1.0.2"
612 }
613 },
614 "forever-agent": {
615 "version": "0.6.1",
616 "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
617 "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
618 "dev": true
619 },
620 "form-data": {
621 "version": "2.3.2",
622 "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
623 "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
624 "dev": true,
625 "requires": {
626 "asynckit": "0.4.0",
627 "combined-stream": "1.0.6",
628 "mime-types": "2.1.20"
629 }
630 },
631 "from": {
632 "version": "0.1.7",
633 "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
634 "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
635 "dev": true
636 },
637 "fs.realpath": {
638 "version": "1.0.0",
639 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
640 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
641 "dev": true
642 },
643 "fstream": {
644 "version": "1.0.11",
645 "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
646 "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
647 "dev": true,
648 "requires": {
649 "graceful-fs": "4.1.11",
650 "inherits": "2.0.3",
651 "mkdirp": "0.5.1",
652 "rimraf": "2.6.2"
653 }
654 },
655 "getpass": {
656 "version": "0.1.7",
657 "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
658 "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
659 "dev": true,
660 "requires": {
661 "assert-plus": "1.0.0"
662 }
663 },
664 "glob": {
665 "version": "7.1.3",
666 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
667 "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
668 "dev": true,
669 "requires": {
670 "fs.realpath": "1.0.0",
671 "inflight": "1.0.6",
672 "inherits": "2.0.3",
673 "minimatch": "3.0.4",
674 "once": "1.4.0",
675 "path-is-absolute": "1.0.1"
676 }
677 },
678 "glob-base": {
679 "version": "0.3.0",
680 "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
681 "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
682 "dev": true,
683 "requires": {
684 "glob-parent": "2.0.0",
685 "is-glob": "2.0.1"
686 },
687 "dependencies": {
688 "glob-parent": {
689 "version": "2.0.0",
690 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
691 "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
692 "dev": true,
693 "requires": {
694 "is-glob": "2.0.1"
695 }
696 },
697 "is-extglob": {
698 "version": "1.0.0",
699 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
700 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
701 "dev": true
702 },
703 "is-glob": {
704 "version": "2.0.1",
705 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
706 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
707 "dev": true,
708 "requires": {
709 "is-extglob": "1.0.0"
710 }
711 }
712 }
713 },
714 "glob-parent": {
715 "version": "3.1.0",
716 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
717 "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
718 "dev": true,
719 "requires": {
720 "is-glob": "3.1.0",
721 "path-dirname": "1.0.2"
722 }
723 },
724 "glob-stream": {
725 "version": "5.3.5",
726 "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
727 "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
728 "dev": true,
729 "requires": {
730 "extend": "3.0.2",
731 "glob": "5.0.15",
732 "glob-parent": "3.1.0",
733 "micromatch": "2.3.11",
734 "ordered-read-streams": "0.3.0",
735 "through2": "0.6.5",
736 "to-absolute-glob": "0.1.1",
737 "unique-stream": "2.2.1"
738 },
739 "dependencies": {
740 "glob": {
741 "version": "5.0.15",
742 "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
743 "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
744 "dev": true,
745 "requires": {
746 "inflight": "1.0.6",
747 "inherits": "2.0.3",
748 "minimatch": "3.0.4",
749 "once": "1.4.0",
750 "path-is-absolute": "1.0.1"
751 }
752 },
753 "isarray": {
754 "version": "0.0.1",
755 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
756 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
757 "dev": true
758 },
759 "readable-stream": {
760 "version": "1.0.34",
761 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
762 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
763 "dev": true,
764 "requires": {
765 "core-util-is": "1.0.2",
766 "inherits": "2.0.3",
767 "isarray": "0.0.1",
768 "string_decoder": "0.10.31"
769 }
770 },
771 "string_decoder": {
772 "version": "0.10.31",
773 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
774 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
775 "dev": true
776 },
777 "through2": {
778 "version": "0.6.5",
779 "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
780 "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
781 "dev": true,
782 "requires": {
783 "readable-stream": "1.0.34",
784 "xtend": "4.0.1"
785 }
786 }
787 }
788 },
789 "graceful-fs": {
790 "version": "4.1.11",
791 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
792 "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
793 "dev": true
794 },
795 "growl": {
796 "version": "1.10.3",
797 "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
798 "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==",
799 "dev": true
800 },
801 "gulp-chmod": {
802 "version": "2.0.0",
803 "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz",
804 "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=",
805 "dev": true,
806 "requires": {
807 "deep-assign": "1.0.0",
808 "stat-mode": "0.2.2",
809 "through2": "2.0.3"
810 }
811 },
812 "gulp-filter": {
813 "version": "5.1.0",
814 "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz",
815 "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=",
816 "dev": true,
817 "requires": {
818 "multimatch": "2.1.0",
819 "plugin-error": "0.1.2",
820 "streamfilter": "1.0.7"
821 }
822 },
823 "gulp-gunzip": {
824 "version": "1.0.0",
825 "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz",
826 "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=",
827 "dev": true,
828 "requires": {
829 "through2": "0.6.5",
830 "vinyl": "0.4.6"
831 },
832 "dependencies": {
833 "isarray": {
834 "version": "0.0.1",
835 "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
836 "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
837 "dev": true
838 },
839 "readable-stream": {
840 "version": "1.0.34",
841 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
842 "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
843 "dev": true,
844 "requires": {
845 "core-util-is": "1.0.2",
846 "inherits": "2.0.3",
847 "isarray": "0.0.1",
848 "string_decoder": "0.10.31"
849 }
850 },
851 "string_decoder": {
852 "version": "0.10.31",
853 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
854 "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
855 "dev": true
856 },
857 "through2": {
858 "version": "0.6.5",
859 "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
860 "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
861 "dev": true,
862 "requires": {
863 "readable-stream": "1.0.34",
864 "xtend": "4.0.1"
865 }
866 }
867 }
868 },
869 "gulp-remote-src-vscode": {
870 "version": "0.5.0",
871 "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.0.tgz",
872 "integrity": "sha512-/9vtSk9eI9DEWCqzGieglPqmx0WUQ9pwPHyHFpKmfxqdgqGJC2l0vFMdYs54hLdDsMDEZFLDL2J4ikjc4hQ5HQ==",
873 "dev": true,
874 "requires": {
875 "event-stream": "3.3.6",
876 "node.extend": "1.1.6",
877 "request": "2.88.0",
878 "through2": "2.0.3",
879 "vinyl": "2.2.0"
880 },
881 "dependencies": {
882 "clone": {
883 "version": "2.1.2",
884 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
885 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
886 "dev": true
887 },
888 "clone-stats": {
889 "version": "1.0.0",
890 "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
891 "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
892 "dev": true
893 },
894 "vinyl": {
895 "version": "2.2.0",
896 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
897 "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
898 "dev": true,
899 "requires": {
900 "clone": "2.1.2",
901 "clone-buffer": "1.0.0",
902 "clone-stats": "1.0.0",
903 "cloneable-readable": "1.1.2",
904 "remove-trailing-separator": "1.1.0",
905 "replace-ext": "1.0.0"
906 }
907 }
908 }
909 },
910 "gulp-sourcemaps": {
911 "version": "1.6.0",
912 "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
913 "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
914 "dev": true,
915 "requires": {
916 "convert-source-map": "1.6.0",
917 "graceful-fs": "4.1.11",
918 "strip-bom": "2.0.0",
919 "through2": "2.0.3",
920 "vinyl": "1.2.0"
921 },
922 "dependencies": {
923 "clone": {
924 "version": "1.0.4",
925 "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
926 "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
927 "dev": true
928 },
929 "replace-ext": {
930 "version": "0.0.1",
931 "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
932 "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
933 "dev": true
934 },
935 "vinyl": {
936 "version": "1.2.0",
937 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
938 "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
939 "dev": true,
940 "requires": {
941 "clone": "1.0.4",
942 "clone-stats": "0.0.1",
943 "replace-ext": "0.0.1"
944 }
945 }
946 }
947 },
948 "gulp-symdest": {
949 "version": "1.1.0",
950 "resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.1.0.tgz",
951 "integrity": "sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=",
952 "dev": true,
953 "requires": {
954 "event-stream": "3.3.6",
955 "mkdirp": "0.5.1",
956 "queue": "3.1.0",
957 "vinyl-fs": "2.4.4"
958 }
959 },
960 "gulp-untar": {
961 "version": "0.0.7",
962 "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz",
963 "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==",
964 "dev": true,
965 "requires": {
966 "event-stream": "3.3.6",
967 "streamifier": "0.1.1",
968 "tar": "2.2.1",
969 "through2": "2.0.3",
970 "vinyl": "1.2.0"
971 },
972 "dependencies": {
973 "clone": {
974 "version": "1.0.4",
975 "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
976 "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
977 "dev": true
978 },
979 "replace-ext": {
980 "version": "0.0.1",
981 "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
982 "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
983 "dev": true
984 },
985 "vinyl": {
986 "version": "1.2.0",
987 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
988 "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
989 "dev": true,
990 "requires": {
991 "clone": "1.0.4",
992 "clone-stats": "0.0.1",
993 "replace-ext": "0.0.1"
994 }
995 }
996 }
997 },
998 "gulp-vinyl-zip": {
999 "version": "2.1.0",
1000 "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.0.tgz",
1001 "integrity": "sha1-JOQGhdwFtxSZlSRQmeBZAmO+ja0=",
1002 "dev": true,
1003 "requires": {
1004 "event-stream": "3.3.6",
1005 "queue": "4.5.0",
1006 "through2": "2.0.3",
1007 "vinyl": "2.2.0",
1008 "vinyl-fs": "2.4.4",
1009 "yauzl": "2.10.0",
1010 "yazl": "2.4.3"
1011 },
1012 "dependencies": {
1013 "clone": {
1014 "version": "2.1.2",
1015 "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
1016 "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
1017 "dev": true
1018 },
1019 "clone-stats": {
1020 "version": "1.0.0",
1021 "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
1022 "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
1023 "dev": true
1024 },
1025 "queue": {
1026 "version": "4.5.0",
1027 "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.0.tgz",
1028 "integrity": "sha512-DwxpAnqJuoQa+wyDgQuwkSshkhlqIlWEvwvdAY27fDPunZ2cVJzXU4JyjY+5l7zs7oGLaYAQm4MbLOVFAHFBzA==",
1029 "dev": true,
1030 "requires": {
1031 "inherits": "2.0.3"
1032 }
1033 },
1034 "vinyl": {
1035 "version": "2.2.0",
1036 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
1037 "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
1038 "dev": true,
1039 "requires": {
1040 "clone": "2.1.2",
1041 "clone-buffer": "1.0.0",
1042 "clone-stats": "1.0.0",
1043 "cloneable-readable": "1.1.2",
1044 "remove-trailing-separator": "1.1.0",
1045 "replace-ext": "1.0.0"
1046 }
1047 }
1048 }
1049 },
1050 "har-schema": {
1051 "version": "2.0.0",
1052 "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
1053 "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
1054 "dev": true
1055 },
1056 "har-validator": {
1057 "version": "5.1.0",
1058 "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
1059 "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
1060 "dev": true,
1061 "requires": {
1062 "ajv": "5.5.2",
1063 "har-schema": "2.0.0"
1064 }
1065 },
1066 "has-flag": {
1067 "version": "2.0.0",
1068 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
1069 "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
1070 "dev": true
1071 },
1072 "he": {
1073 "version": "1.1.1",
1074 "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
1075 "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
1076 "dev": true
1077 },
1078 "htmlparser2": {
1079 "version": "3.9.2",
1080 "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
1081 "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
1082 "dev": true,
1083 "requires": {
1084 "domelementtype": "1.3.0",
1085 "domhandler": "2.4.2",
1086 "domutils": "1.5.1",
1087 "entities": "1.1.1",
1088 "inherits": "2.0.3",
1089 "readable-stream": "2.3.6"
1090 }
1091 },
1092 "http-signature": {
1093 "version": "1.2.0",
1094 "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1095 "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1096 "dev": true,
1097 "requires": {
1098 "assert-plus": "1.0.0",
1099 "jsprim": "1.4.1",
1100 "sshpk": "1.14.2"
1101 }
1102 },
1103 "inflight": {
1104 "version": "1.0.6",
1105 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1106 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1107 "dev": true,
1108 "requires": {
1109 "once": "1.4.0",
1110 "wrappy": "1.0.2"
1111 }
1112 },
1113 "inherits": {
1114 "version": "2.0.3",
1115 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1116 "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1117 "dev": true
1118 },
1119 "is": {
1120 "version": "3.2.1",
1121 "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
1122 "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=",
1123 "dev": true
1124 },
1125 "is-buffer": {
1126 "version": "1.1.6",
1127 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1128 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1129 "dev": true
1130 },
1131 "is-dotfile": {
1132 "version": "1.0.3",
1133 "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
1134 "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
1135 "dev": true
1136 },
1137 "is-equal-shallow": {
1138 "version": "0.1.3",
1139 "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
1140 "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
1141 "dev": true,
1142 "requires": {
1143 "is-primitive": "2.0.0"
1144 }
1145 },
1146 "is-extendable": {
1147 "version": "0.1.1",
1148 "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1149 "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1150 "dev": true
1151 },
1152 "is-extglob": {
1153 "version": "2.1.1",
1154 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1155 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1156 "dev": true
1157 },
1158 "is-glob": {
1159 "version": "3.1.0",
1160 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1161 "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1162 "dev": true,
1163 "requires": {
1164 "is-extglob": "2.1.1"
1165 }
1166 },
1167 "is-number": {
1168 "version": "2.1.0",
1169 "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
1170 "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
1171 "dev": true,
1172 "requires": {
1173 "kind-of": "3.2.2"
1174 },
1175 "dependencies": {
1176 "kind-of": {
1177 "version": "3.2.2",
1178 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1179 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1180 "dev": true,
1181 "requires": {
1182 "is-buffer": "1.1.6"
1183 }
1184 }
1185 }
1186 },
1187 "is-obj": {
1188 "version": "1.0.1",
1189 "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
1190 "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
1191 "dev": true
1192 },
1193 "is-posix-bracket": {
1194 "version": "0.1.1",
1195 "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
1196 "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
1197 "dev": true
1198 },
1199 "is-primitive": {
1200 "version": "2.0.0",
1201 "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
1202 "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
1203 "dev": true
1204 },
1205 "is-stream": {
1206 "version": "1.1.0",
1207 "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
1208 "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
1209 "dev": true
1210 },
1211 "is-typedarray": {
1212 "version": "1.0.0",
1213 "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1214 "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1215 "dev": true
1216 },
1217 "is-utf8": {
1218 "version": "0.2.1",
1219 "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
1220 "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
1221 "dev": true
1222 },
1223 "is-valid-glob": {
1224 "version": "0.3.0",
1225 "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
1226 "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
1227 "dev": true
1228 },
1229 "isarray": {
1230 "version": "1.0.0",
1231 "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1232 "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1233 "dev": true
1234 },
1235 "isobject": {
1236 "version": "2.1.0",
1237 "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
1238 "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
1239 "dev": true,
1240 "requires": {
1241 "isarray": "1.0.0"
1242 }
1243 },
1244 "isstream": {
1245 "version": "0.1.2",
1246 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1247 "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1248 "dev": true
1249 },
1250 "jsbn": {
1251 "version": "0.1.1",
1252 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1253 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1254 "dev": true,
1255 "optional": true
1256 },
1257 "json-schema": {
1258 "version": "0.2.3",
1259 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1260 "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1261 "dev": true
1262 },
1263 "json-schema-traverse": {
1264 "version": "0.3.1",
1265 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
1266 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
1267 "dev": true
1268 },
1269 "json-stable-stringify": {
1270 "version": "1.0.1",
1271 "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
1272 "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
1273 "dev": true,
1274 "requires": {
1275 "jsonify": "0.0.0"
1276 }
1277 },
1278 "json-stringify-safe": {
1279 "version": "5.0.1",
1280 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1281 "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1282 "dev": true
1283 },
1284 "jsonify": {
1285 "version": "0.0.0",
1286 "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
1287 "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
1288 "dev": true
1289 },
1290 "jsprim": {
1291 "version": "1.4.1",
1292 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1293 "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1294 "dev": true,
1295 "requires": {
1296 "assert-plus": "1.0.0",
1297 "extsprintf": "1.3.0",
1298 "json-schema": "0.2.3",
1299 "verror": "1.10.0"
1300 }
1301 },
1302 "kind-of": {
1303 "version": "1.1.0",
1304 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
1305 "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
1306 "dev": true
1307 },
1308 "lazystream": {
1309 "version": "1.0.0",
1310 "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
1311 "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
1312 "dev": true,
1313 "requires": {
1314 "readable-stream": "2.3.6"
1315 }
1316 },
1317 "linkify-it": {
1318 "version": "2.0.3",
1319 "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz",
1320 "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=",
1321 "dev": true,
1322 "requires": {
1323 "uc.micro": "1.0.5"
1324 }
1325 },
1326 "lodash": {
1327 "version": "4.17.11",
1328 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
1329 "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
1330 "dev": true
1331 },
1332 "lodash.isequal": {
1333 "version": "4.5.0",
1334 "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
1335 "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
1336 "dev": true
1337 },
1338 "map-stream": {
1339 "version": "0.0.7",
1340 "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz",
1341 "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=",
1342 "dev": true
1343 },
1344 "markdown-it": {
1345 "version": "8.4.2",
1346 "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
1347 "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
1348 "dev": true,
1349 "requires": {
1350 "argparse": "1.0.10",
1351 "entities": "1.1.1",
1352 "linkify-it": "2.0.3",
1353 "mdurl": "1.0.1",
1354 "uc.micro": "1.0.5"
1355 }
1356 },
1357 "math-random": {
1358 "version": "1.0.1",
1359 "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
1360 "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
1361 "dev": true
1362 },
1363 "mdurl": {
1364 "version": "1.0.1",
1365 "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
1366 "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
1367 "dev": true
1368 },
1369 "merge-stream": {
1370 "version": "1.0.1",
1371 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
1372 "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
1373 "dev": true,
1374 "requires": {
1375 "readable-stream": "2.3.6"
1376 }
1377 },
1378 "micromatch": {
1379 "version": "2.3.11",
1380 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
1381 "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
1382 "dev": true,
1383 "requires": {
1384 "arr-diff": "2.0.0",
1385 "array-unique": "0.2.1",
1386 "braces": "1.8.5",
1387 "expand-brackets": "0.1.5",
1388 "extglob": "0.3.2",
1389 "filename-regex": "2.0.1",
1390 "is-extglob": "1.0.0",
1391 "is-glob": "2.0.1",
1392 "kind-of": "3.2.2",
1393 "normalize-path": "2.1.1",
1394 "object.omit": "2.0.1",
1395 "parse-glob": "3.0.4",
1396 "regex-cache": "0.4.4"
1397 },
1398 "dependencies": {
1399 "arr-diff": {
1400 "version": "2.0.0",
1401 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
1402 "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
1403 "dev": true,
1404 "requires": {
1405 "arr-flatten": "1.1.0"
1406 }
1407 },
1408 "is-extglob": {
1409 "version": "1.0.0",
1410 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1411 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1412 "dev": true
1413 },
1414 "is-glob": {
1415 "version": "2.0.1",
1416 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
1417 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
1418 "dev": true,
1419 "requires": {
1420 "is-extglob": "1.0.0"
1421 }
1422 },
1423 "kind-of": {
1424 "version": "3.2.2",
1425 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1426 "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1427 "dev": true,
1428 "requires": {
1429 "is-buffer": "1.1.6"
1430 }
1431 }
1432 }
1433 },
1434 "mime": {
1435 "version": "1.6.0",
1436 "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1437 "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1438 "dev": true
1439 },
1440 "mime-db": {
1441 "version": "1.36.0",
1442 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
1443 "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
1444 "dev": true
1445 },
1446 "mime-types": {
1447 "version": "2.1.20",
1448 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
1449 "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
1450 "dev": true,
1451 "requires": {
1452 "mime-db": "1.36.0"
1453 }
1454 },
1455 "minimatch": {
1456 "version": "3.0.4",
1457 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1458 "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1459 "dev": true,
1460 "requires": {
1461 "brace-expansion": "1.1.11"
1462 }
1463 },
1464 "minimist": {
1465 "version": "0.0.8",
1466 "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1467 "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
1468 "dev": true
1469 },
1470 "mkdirp": {
1471 "version": "0.5.1",
1472 "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1473 "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1474 "dev": true,
1475 "requires": {
1476 "minimist": "0.0.8"
1477 }
1478 },
1479 "mocha": {
1480 "version": "4.1.0",
1481 "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz",
1482 "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==",
1483 "dev": true,
1484 "requires": {
1485 "browser-stdout": "1.3.0",
1486 "commander": "2.11.0",
1487 "debug": "3.1.0",
1488 "diff": "3.3.1",
1489 "escape-string-regexp": "1.0.5",
1490 "glob": "7.1.2",
1491 "growl": "1.10.3",
1492 "he": "1.1.1",
1493 "mkdirp": "0.5.1",
1494 "supports-color": "4.4.0"
1495 },
1496 "dependencies": {
1497 "commander": {
1498 "version": "2.11.0",
1499 "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
1500 "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
1501 "dev": true
1502 },
1503 "glob": {
1504 "version": "7.1.2",
1505 "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
1506 "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
1507 "dev": true,
1508 "requires": {
1509 "fs.realpath": "1.0.0",
1510 "inflight": "1.0.6",
1511 "inherits": "2.0.3",
1512 "minimatch": "3.0.4",
1513 "once": "1.4.0",
1514 "path-is-absolute": "1.0.1"
1515 }
1516 }
1517 }
1518 },
1519 "ms": {
1520 "version": "2.0.0",
1521 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1522 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1523 "dev": true
1524 },
1525 "multimatch": {
1526 "version": "2.1.0",
1527 "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
1528 "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
1529 "dev": true,
1530 "requires": {
1531 "array-differ": "1.0.0",
1532 "array-union": "1.0.2",
1533 "arrify": "1.0.1",
1534 "minimatch": "3.0.4"
1535 }
1536 },
1537 "mute-stream": {
1538 "version": "0.0.7",
1539 "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
1540 "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
1541 "dev": true
1542 },
1543 "node.extend": {
1544 "version": "1.1.6",
1545 "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz",
1546 "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=",
1547 "dev": true,
1548 "requires": {
1549 "is": "3.2.1"
1550 }
1551 },
1552 "normalize-path": {
1553 "version": "2.1.1",
1554 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
1555 "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
1556 "dev": true,
1557 "requires": {
1558 "remove-trailing-separator": "1.1.0"
1559 }
1560 },
1561 "nth-check": {
1562 "version": "1.0.1",
1563 "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
1564 "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
1565 "dev": true,
1566 "requires": {
1567 "boolbase": "1.0.0"
1568 }
1569 },
1570 "oauth-sign": {
1571 "version": "0.9.0",
1572 "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1573 "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
1574 "dev": true
1575 },
1576 "object-assign": {
1577 "version": "4.1.1",
1578 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1579 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1580 "dev": true
1581 },
1582 "object.omit": {
1583 "version": "2.0.1",
1584 "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
1585 "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
1586 "dev": true,
1587 "requires": {
1588 "for-own": "0.1.5",
1589 "is-extendable": "0.1.1"
1590 }
1591 },
1592 "once": {
1593 "version": "1.4.0",
1594 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1595 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1596 "dev": true,
1597 "requires": {
1598 "wrappy": "1.0.2"
1599 }
1600 },
1601 "ordered-read-streams": {
1602 "version": "0.3.0",
1603 "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
1604 "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
1605 "dev": true,
1606 "requires": {
1607 "is-stream": "1.1.0",
1608 "readable-stream": "2.3.6"
1609 }
1610 },
1611 "os-homedir": {
1612 "version": "1.0.2",
1613 "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1614 "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
1615 "dev": true
1616 },
1617 "os-tmpdir": {
1618 "version": "1.0.2",
1619 "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
1620 "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
1621 "dev": true
1622 },
1623 "osenv": {
1624 "version": "0.1.5",
1625 "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
1626 "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
1627 "dev": true,
1628 "requires": {
1629 "os-homedir": "1.0.2",
1630 "os-tmpdir": "1.0.2"
1631 }
1632 },
1633 "parse-glob": {
1634 "version": "3.0.4",
1635 "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
1636 "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
1637 "dev": true,
1638 "requires": {
1639 "glob-base": "0.3.0",
1640 "is-dotfile": "1.0.3",
1641 "is-extglob": "1.0.0",
1642 "is-glob": "2.0.1"
1643 },
1644 "dependencies": {
1645 "is-extglob": {
1646 "version": "1.0.0",
1647 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
1648 "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
1649 "dev": true
1650 },
1651 "is-glob": {
1652 "version": "2.0.1",
1653 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
1654 "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
1655 "dev": true,
1656 "requires": {
1657 "is-extglob": "1.0.0"
1658 }
1659 }
1660 }
1661 },
1662 "parse-semver": {
1663 "version": "1.1.1",
1664 "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
1665 "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=",
1666 "dev": true,
1667 "requires": {
1668 "semver": "5.5.1"
1669 }
1670 },
1671 "parse5": {
1672 "version": "3.0.3",
1673 "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
1674 "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
1675 "dev": true,
1676 "requires": {
1677 "@types/node": "8.10.29"
1678 }
1679 },
1680 "path-dirname": {
1681 "version": "1.0.2",
1682 "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
1683 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
1684 "dev": true
1685 },
1686 "path-is-absolute": {
1687 "version": "1.0.1",
1688 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1689 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1690 "dev": true
1691 },
1692 "pause-stream": {
1693 "version": "0.0.11",
1694 "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
1695 "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
1696 "dev": true,
1697 "requires": {
1698 "through": "2.3.8"
1699 }
1700 },
1701 "pend": {
1702 "version": "1.2.0",
1703 "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
1704 "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
1705 "dev": true
1706 },
1707 "performance-now": {
1708 "version": "2.1.0",
1709 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1710 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
1711 "dev": true
1712 },
1713 "plugin-error": {
1714 "version": "0.1.2",
1715 "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
1716 "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
1717 "dev": true,
1718 "requires": {
1719 "ansi-cyan": "0.1.1",
1720 "ansi-red": "0.1.1",
1721 "arr-diff": "1.1.0",
1722 "arr-union": "2.1.0",
1723 "extend-shallow": "1.1.4"
1724 }
1725 },
1726 "preserve": {
1727 "version": "0.2.0",
1728 "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
1729 "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
1730 "dev": true
1731 },
1732 "process-nextick-args": {
1733 "version": "2.0.0",
1734 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1735 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
1736 "dev": true
1737 },
1738 "psl": {
1739 "version": "1.1.29",
1740 "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
1741 "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
1742 "dev": true
1743 },
1744 "punycode": {
1745 "version": "1.4.1",
1746 "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1747 "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
1748 "dev": true
1749 },
1750 "q": {
1751 "version": "1.5.1",
1752 "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
1753 "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
1754 "dev": true
1755 },
1756 "qs": {
1757 "version": "6.5.2",
1758 "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1759 "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1760 "dev": true
1761 },
1762 "querystringify": {
1763 "version": "2.0.0",
1764 "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz",
1765 "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==",
1766 "dev": true
1767 },
1768 "queue": {
1769 "version": "3.1.0",
1770 "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz",
1771 "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=",
1772 "dev": true,
1773 "requires": {
1774 "inherits": "2.0.3"
1775 }
1776 },
1777 "randomatic": {
1778 "version": "3.1.0",
1779 "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
1780 "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
1781 "dev": true,
1782 "requires": {
1783 "is-number": "4.0.0",
1784 "kind-of": "6.0.2",
1785 "math-random": "1.0.1"
1786 },
1787 "dependencies": {
1788 "is-number": {
1789 "version": "4.0.0",
1790 "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
1791 "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
1792 "dev": true
1793 },
1794 "kind-of": {
1795 "version": "6.0.2",
1796 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1797 "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
1798 "dev": true
1799 }
1800 }
1801 },
1802 "read": {
1803 "version": "1.0.7",
1804 "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
1805 "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
1806 "dev": true,
1807 "requires": {
1808 "mute-stream": "0.0.7"
1809 }
1810 },
1811 "readable-stream": {
1812 "version": "2.3.6",
1813 "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
1814 "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
1815 "dev": true,
1816 "requires": {
1817 "core-util-is": "1.0.2",
1818 "inherits": "2.0.3",
1819 "isarray": "1.0.0",
1820 "process-nextick-args": "2.0.0",
1821 "safe-buffer": "5.1.2",
1822 "string_decoder": "1.1.1",
1823 "util-deprecate": "1.0.2"
1824 }
1825 },
1826 "regex-cache": {
1827 "version": "0.4.4",
1828 "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
1829 "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
1830 "dev": true,
1831 "requires": {
1832 "is-equal-shallow": "0.1.3"
1833 }
1834 },
1835 "remove-trailing-separator": {
1836 "version": "1.1.0",
1837 "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
1838 "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
1839 "dev": true
1840 },
1841 "repeat-element": {
1842 "version": "1.1.3",
1843 "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
1844 "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
1845 "dev": true
1846 },
1847 "repeat-string": {
1848 "version": "1.6.1",
1849 "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
1850 "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
1851 "dev": true
1852 },
1853 "replace-ext": {
1854 "version": "1.0.0",
1855 "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
1856 "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
1857 "dev": true
1858 },
1859 "request": {
1860 "version": "2.88.0",
1861 "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
1862 "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
1863 "dev": true,
1864 "requires": {
1865 "aws-sign2": "0.7.0",
1866 "aws4": "1.8.0",
1867 "caseless": "0.12.0",
1868 "combined-stream": "1.0.6",
1869 "extend": "3.0.2",
1870 "forever-agent": "0.6.1",
1871 "form-data": "2.3.2",
1872 "har-validator": "5.1.0",
1873 "http-signature": "1.2.0",
1874 "is-typedarray": "1.0.0",
1875 "isstream": "0.1.2",
1876 "json-stringify-safe": "5.0.1",
1877 "mime-types": "2.1.20",
1878 "oauth-sign": "0.9.0",
1879 "performance-now": "2.1.0",
1880 "qs": "6.5.2",
1881 "safe-buffer": "5.1.2",
1882 "tough-cookie": "2.4.3",
1883 "tunnel-agent": "0.6.0",
1884 "uuid": "3.3.2"
1885 }
1886 },
1887 "requires-port": {
1888 "version": "1.0.0",
1889 "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
1890 "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
1891 "dev": true
1892 },
1893 "rimraf": {
1894 "version": "2.6.2",
1895 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
1896 "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
1897 "dev": true,
1898 "requires": {
1899 "glob": "7.1.3"
1900 }
1901 },
1902 "safe-buffer": {
1903 "version": "5.1.2",
1904 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1905 "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1906 "dev": true
1907 },
1908 "safer-buffer": {
1909 "version": "2.1.2",
1910 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1911 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1912 "dev": true
1913 },
1914 "semver": {
1915 "version": "5.5.1",
1916 "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
1917 "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
1918 "dev": true
1919 },
1920 "source-map": {
1921 "version": "0.6.1",
1922 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1923 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1924 "dev": true
1925 },
1926 "source-map-support": {
1927 "version": "0.5.9",
1928 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
1929 "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
1930 "dev": true,
1931 "requires": {
1932 "buffer-from": "1.1.1",
1933 "source-map": "0.6.1"
1934 }
1935 },
1936 "split": {
1937 "version": "1.0.1",
1938 "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
1939 "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
1940 "dev": true,
1941 "requires": {
1942 "through": "2.3.8"
1943 }
1944 },
1945 "sprintf-js": {
1946 "version": "1.0.3",
1947 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1948 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
1949 "dev": true
1950 },
1951 "sshpk": {
1952 "version": "1.14.2",
1953 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
1954 "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
1955 "dev": true,
1956 "requires": {
1957 "asn1": "0.2.4",
1958 "assert-plus": "1.0.0",
1959 "bcrypt-pbkdf": "1.0.2",
1960 "dashdash": "1.14.1",
1961 "ecc-jsbn": "0.1.2",
1962 "getpass": "0.1.7",
1963 "jsbn": "0.1.1",
1964 "safer-buffer": "2.1.2",
1965 "tweetnacl": "0.14.5"
1966 }
1967 },
1968 "stat-mode": {
1969 "version": "0.2.2",
1970 "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz",
1971 "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
1972 "dev": true
1973 },
1974 "stream-combiner": {
1975 "version": "0.2.2",
1976 "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz",
1977 "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
1978 "dev": true,
1979 "requires": {
1980 "duplexer": "0.1.1",
1981 "through": "2.3.8"
1982 }
1983 },
1984 "stream-shift": {
1985 "version": "1.0.0",
1986 "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
1987 "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
1988 "dev": true
1989 },
1990 "streamfilter": {
1991 "version": "1.0.7",
1992 "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz",
1993 "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==",
1994 "dev": true,
1995 "requires": {
1996 "readable-stream": "2.3.6"
1997 }
1998 },
1999 "streamifier": {
2000 "version": "0.1.1",
2001 "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
2002 "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=",
2003 "dev": true
2004 },
2005 "string_decoder": {
2006 "version": "1.1.1",
2007 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2008 "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2009 "dev": true,
2010 "requires": {
2011 "safe-buffer": "5.1.2"
2012 }
2013 },
2014 "strip-bom": {
2015 "version": "2.0.0",
2016 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
2017 "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
2018 "dev": true,
2019 "requires": {
2020 "is-utf8": "0.2.1"
2021 }
2022 },
2023 "strip-bom-stream": {
2024 "version": "1.0.0",
2025 "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
2026 "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
2027 "dev": true,
2028 "requires": {
2029 "first-chunk-stream": "1.0.0",
2030 "strip-bom": "2.0.0"
2031 }
2032 },
2033 "supports-color": {
2034 "version": "4.4.0",
2035 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
2036 "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
2037 "dev": true,
2038 "requires": {
2039 "has-flag": "2.0.0"
2040 }
2041 },
2042 "tar": {
2043 "version": "2.2.1",
2044 "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
2045 "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
2046 "dev": true,
2047 "requires": {
2048 "block-stream": "0.0.9",
2049 "fstream": "1.0.11",
2050 "inherits": "2.0.3"
2051 }
2052 },
2053 "through": {
2054 "version": "2.3.8",
2055 "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
2056 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2057 "dev": true
2058 },
2059 "through2": {
2060 "version": "2.0.3",
2061 "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
2062 "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
2063 "dev": true,
2064 "requires": {
2065 "readable-stream": "2.3.6",
2066 "xtend": "4.0.1"
2067 }
2068 },
2069 "through2-filter": {
2070 "version": "2.0.0",
2071 "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
2072 "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
2073 "dev": true,
2074 "requires": {
2075 "through2": "2.0.3",
2076 "xtend": "4.0.1"
2077 }
2078 },
2079 "tmp": {
2080 "version": "0.0.29",
2081 "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz",
2082 "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
2083 "dev": true,
2084 "requires": {
2085 "os-tmpdir": "1.0.2"
2086 }
2087 },
2088 "to-absolute-glob": {
2089 "version": "0.1.1",
2090 "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
2091 "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
2092 "dev": true,
2093 "requires": {
2094 "extend-shallow": "2.0.1"
2095 },
2096 "dependencies": {
2097 "extend-shallow": {
2098 "version": "2.0.1",
2099 "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2100 "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2101 "dev": true,
2102 "requires": {
2103 "is-extendable": "0.1.1"
2104 }
2105 }
2106 }
2107 },
2108 "tough-cookie": {
2109 "version": "2.4.3",
2110 "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
2111 "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
2112 "dev": true,
2113 "requires": {
2114 "psl": "1.1.29",
2115 "punycode": "1.4.1"
2116 }
2117 },
2118 "tunnel": {
2119 "version": "0.0.4",
2120 "resolved": "http://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz",
2121 "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=",
2122 "dev": true
2123 },
2124 "tunnel-agent": {
2125 "version": "0.6.0",
2126 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
2127 "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
2128 "dev": true,
2129 "requires": {
2130 "safe-buffer": "5.1.2"
2131 }
2132 },
2133 "tweetnacl": {
2134 "version": "0.14.5",
2135 "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
2136 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
2137 "dev": true,
2138 "optional": true
2139 },
2140 "typed-rest-client": {
2141 "version": "0.9.0",
2142 "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-0.9.0.tgz",
2143 "integrity": "sha1-92jMDcP06VDwbgSCXDaz54NKofI=",
2144 "dev": true,
2145 "requires": {
2146 "tunnel": "0.0.4",
2147 "underscore": "1.8.3"
2148 },
2149 "dependencies": {
2150 "underscore": {
2151 "version": "1.8.3",
2152 "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
2153 "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
2154 "dev": true
2155 }
2156 }
2157 },
2158 "typescript": {
2159 "version": "2.9.2",
2160 "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
2161 "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
2162 "dev": true
2163 },
2164 "uc.micro": {
2165 "version": "1.0.5",
2166 "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz",
2167 "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==",
2168 "dev": true
2169 },
2170 "underscore": {
2171 "version": "1.9.1",
2172 "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
2173 "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
2174 "dev": true
2175 },
2176 "unique-stream": {
2177 "version": "2.2.1",
2178 "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
2179 "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
2180 "dev": true,
2181 "requires": {
2182 "json-stable-stringify": "1.0.1",
2183 "through2-filter": "2.0.0"
2184 }
2185 },
2186 "url-join": {
2187 "version": "1.1.0",
2188 "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz",
2189 "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=",
2190 "dev": true
2191 },
2192 "url-parse": {
2193 "version": "1.4.3",
2194 "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
2195 "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
2196 "dev": true,
2197 "requires": {
2198 "querystringify": "2.0.0",
2199 "requires-port": "1.0.0"
2200 }
2201 },
2202 "util-deprecate": {
2203 "version": "1.0.2",
2204 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2205 "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
2206 "dev": true
2207 },
2208 "uuid": {
2209 "version": "3.3.2",
2210 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
2211 "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
2212 "dev": true
2213 },
2214 "vali-date": {
2215 "version": "1.0.0",
2216 "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
2217 "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
2218 "dev": true
2219 },
2220 "verror": {
2221 "version": "1.10.0",
2222 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
2223 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
2224 "dev": true,
2225 "requires": {
2226 "assert-plus": "1.0.0",
2227 "core-util-is": "1.0.2",
2228 "extsprintf": "1.3.0"
2229 }
2230 },
2231 "vinyl": {
2232 "version": "0.4.6",
2233 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
2234 "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
2235 "dev": true,
2236 "requires": {
2237 "clone": "0.2.0",
2238 "clone-stats": "0.0.1"
2239 }
2240 },
2241 "vinyl-fs": {
2242 "version": "2.4.4",
2243 "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
2244 "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
2245 "dev": true,
2246 "requires": {
2247 "duplexify": "3.6.0",
2248 "glob-stream": "5.3.5",
2249 "graceful-fs": "4.1.11",
2250 "gulp-sourcemaps": "1.6.0",
2251 "is-valid-glob": "0.3.0",
2252 "lazystream": "1.0.0",
2253 "lodash.isequal": "4.5.0",
2254 "merge-stream": "1.0.1",
2255 "mkdirp": "0.5.1",
2256 "object-assign": "4.1.1",
2257 "readable-stream": "2.3.6",
2258 "strip-bom": "2.0.0",
2259 "strip-bom-stream": "1.0.0",
2260 "through2": "2.0.3",
2261 "through2-filter": "2.0.0",
2262 "vali-date": "1.0.0",
2263 "vinyl": "1.2.0"
2264 },
2265 "dependencies": {
2266 "clone": {
2267 "version": "1.0.4",
2268 "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
2269 "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
2270 "dev": true
2271 },
2272 "replace-ext": {
2273 "version": "0.0.1",
2274 "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
2275 "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
2276 "dev": true
2277 },
2278 "vinyl": {
2279 "version": "1.2.0",
2280 "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
2281 "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
2282 "dev": true,
2283 "requires": {
2284 "clone": "1.0.4",
2285 "clone-stats": "0.0.1",
2286 "replace-ext": "0.0.1"
2287 }
2288 }
2289 }
2290 },
2291 "vinyl-source-stream": {
2292 "version": "1.1.2",
2293 "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz",
2294 "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=",
2295 "dev": true,
2296 "requires": {
2297 "through2": "2.0.3",
2298 "vinyl": "0.4.6"
2299 }
2300 },
2301 "vsce": {
2302 "version": "1.48.0",
2303 "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.48.0.tgz",
2304 "integrity": "sha512-1qJn6QLRTu26FIvvMbK/gzHLLdxJVTg9CUTSnCjJHObCCF5CQ0F3FUv7t+5cT7i0J5v5YljrsRY09u7dPBcEnA==",
2305 "dev": true,
2306 "requires": {
2307 "cheerio": "1.0.0-rc.2",
2308 "commander": "2.18.0",
2309 "denodeify": "1.2.1",
2310 "glob": "7.1.3",
2311 "lodash": "4.17.11",
2312 "markdown-it": "8.4.2",
2313 "mime": "1.6.0",
2314 "minimatch": "3.0.4",
2315 "osenv": "0.1.5",
2316 "parse-semver": "1.1.1",
2317 "read": "1.0.7",
2318 "semver": "5.5.1",
2319 "tmp": "0.0.29",
2320 "url-join": "1.1.0",
2321 "vso-node-api": "6.1.2-preview",
2322 "yauzl": "2.10.0",
2323 "yazl": "2.4.3"
2324 }
2325 },
2326 "vscode": {
2327 "version": "1.1.21",
2328 "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.21.tgz",
2329 "integrity": "sha512-tJl9eL15ZMm6vzCYYeQ26sSYRuXGMGPsaeIAmG2rOOYRn01jdaDg6I4b9G5Ed6FISdmn6egpKThk4o4om8Ax/A==",
2330 "dev": true,
2331 "requires": {
2332 "glob": "7.1.3",
2333 "gulp-chmod": "2.0.0",
2334 "gulp-filter": "5.1.0",
2335 "gulp-gunzip": "1.0.0",
2336 "gulp-remote-src-vscode": "0.5.0",
2337 "gulp-symdest": "1.1.0",
2338 "gulp-untar": "0.0.7",
2339 "gulp-vinyl-zip": "2.1.0",
2340 "mocha": "4.1.0",
2341 "request": "2.88.0",
2342 "semver": "5.5.1",
2343 "source-map-support": "0.5.9",
2344 "url-parse": "1.4.3",
2345 "vinyl-source-stream": "1.1.2"
2346 }
2347 },
2348 "vscode-jsonrpc": {
2349 "version": "4.0.0",
2350 "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz",
2351 "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg=="
2352 },
2353 "vscode-languageclient": {
2354 "version": "4.4.2",
2355 "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-4.4.2.tgz",
2356 "integrity": "sha512-9TUzsg1UM6n1UEyPlWbDf7tK1wJAK7UGFRmGDN8sz4KmbbDiVRh6YicaB/5oRSVTpuV47PdJpYlOl3SJ0RiK1Q==",
2357 "requires": {
2358 "vscode-languageserver-protocol": "3.13.0"
2359 }
2360 },
2361 "vscode-languageserver-protocol": {
2362 "version": "3.13.0",
2363 "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz",
2364 "integrity": "sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==",
2365 "requires": {
2366 "vscode-jsonrpc": "4.0.0",
2367 "vscode-languageserver-types": "3.13.0"
2368 }
2369 },
2370 "vscode-languageserver-types": {
2371 "version": "3.13.0",
2372 "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz",
2373 "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA=="
2374 },
2375 "vso-node-api": {
2376 "version": "6.1.2-preview",
2377 "resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-6.1.2-preview.tgz",
2378 "integrity": "sha1-qrNUbfJFHs2JTgcbuZtd8Zxfp48=",
2379 "dev": true,
2380 "requires": {
2381 "q": "1.5.1",
2382 "tunnel": "0.0.4",
2383 "typed-rest-client": "0.9.0",
2384 "underscore": "1.9.1"
2385 }
2386 },
2387 "wrappy": {
2388 "version": "1.0.2",
2389 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2390 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2391 "dev": true
2392 },
2393 "xtend": {
2394 "version": "4.0.1",
2395 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
2396 "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
2397 "dev": true
2398 },
2399 "yauzl": {
2400 "version": "2.10.0",
2401 "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
2402 "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
2403 "dev": true,
2404 "requires": {
2405 "buffer-crc32": "0.2.13",
2406 "fd-slicer": "1.1.0"
2407 }
2408 },
2409 "yazl": {
2410 "version": "2.4.3",
2411 "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.4.3.tgz",
2412 "integrity": "sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=",
2413 "dev": true,
2414 "requires": {
2415 "buffer-crc32": "0.2.13"
2416 }
2417 }
2418 }
2419}
diff --git a/editors/code/package.json b/editors/code/package.json
new file mode 100644
index 000000000..cc8fb93f5
--- /dev/null
+++ b/editors/code/package.json
@@ -0,0 +1,149 @@
1{
2 "name": "ra-lsp",
3 "displayName": "ra-lsp",
4 "description": "",
5 "version": "0.0.1",
6 "publisher": "matklad",
7 "repository": {
8 "url": "https://github.com/matklad/rust-analyzer/"
9 },
10 "categories": [
11 "Other"
12 ],
13 "engines": {
14 "vscode": "^1.26.0"
15 },
16 "scripts": {
17 "vscode:prepublish": "npm run compile",
18 "compile": "tsc -p ./",
19 "watch": "tsc -watch -p ./",
20 "postinstall": "node ./node_modules/vscode/bin/install"
21 },
22 "dependencies": {
23 "vscode-languageclient": "^4.4.0"
24 },
25 "devDependencies": {
26 "typescript": "^2.6.1",
27 "vscode": "^1.1.21",
28 "vsce": "^1.42.0",
29 "@types/node": "^8.10.25",
30 "@types/mocha": "^2.2.42"
31 },
32 "activationEvents": [
33 "onLanguage:rust"
34 ],
35 "main": "./out/extension",
36 "contributes": {
37 "taskDefinitions": [
38 {
39 "type": "cargo",
40 "required": [
41 "command"
42 ],
43 "properties": {
44 "label": {
45 "type": "string"
46 },
47 "command": {
48 "type": "string"
49 },
50 "args": {
51 "type": "array"
52 },
53 "env": {
54 "type": "object"
55 }
56 }
57 }
58 ],
59 "commands": [
60 {
61 "command": "ra-lsp.createFile",
62 "title": "Show Rust syntax tree"
63 },
64 {
65 "command": "ra-lsp.syntaxTree",
66 "title": "Show Rust syntax tree"
67 },
68 {
69 "command": "ra-lsp.extendSelection",
70 "title": "Rust Extend Selection"
71 },
72 {
73 "command": "ra-lsp.matchingBrace",
74 "title": "Rust Matching Brace"
75 },
76 {
77 "command": "ra-lsp.parentModule",
78 "title": "Rust Parent Module"
79 },
80 {
81 "command": "ra-lsp.joinLines",
82 "title": "Rust Join Lines"
83 },
84 {
85 "command": "ra-lsp.run",
86 "title": "Rust Run"
87 }
88 ],
89 "keybindings": [
90 {
91 "command": "ra-lsp.parentModule",
92 "key": "ctrl+u",
93 "when": "editorTextFocus && editorLangId == rust"
94 },
95 {
96 "command": "ra-lsp.matchingBrace",
97 "key": "ctrl+shift+m",
98 "when": "editorTextFocus && editorLangId == rust"
99 },
100 {
101 "command": "ra-lsp.extendSelection",
102 "key": "ctrl+w",
103 "when": "editorTextFocus && editorLangId == rust"
104 },
105 {
106 "command": "ra-lsp.joinLines",
107 "key": "ctrl+shift+j",
108 "when": "editorTextFocus && editorLangId == rust"
109 },
110 {
111 "command": "ra-lsp.run",
112 "key": "ctrl+r",
113 "when": "editorTextFocus && editorLangId == rust"
114 }
115 ],
116 "problemMatchers": [
117 {
118 "name": "rustc",
119 "fileLocation": [
120 "relative",
121 "${workspaceRoot}"
122 ],
123 "pattern": [
124 {
125 "regexp": "^(warning|warn|error)(\\[(.*)\\])?: (.*)$",
126 "severity": 1,
127 "message": 4,
128 "code": 3
129 },
130 {
131 "regexp": "^([\\s->=]*(.*):(\\d*):(\\d*)|.*)$",
132 "file": 2,
133 "line": 3,
134 "column": 4
135 },
136 {
137 "regexp": "^.*$"
138 },
139 {
140 "regexp": "^([\\s->=]*(.*):(\\d*):(\\d*)|.*)$",
141 "file": 2,
142 "line": 3,
143 "column": 4
144 }
145 ]
146 }
147 ]
148 }
149}
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts
new file mode 100644
index 000000000..2c42c07fe
--- /dev/null
+++ b/editors/code/src/extension.ts
@@ -0,0 +1,400 @@
1'use strict';
2import * as vscode from 'vscode';
3import * as lc from 'vscode-languageclient'
4import { DH_UNABLE_TO_CHECK_GENERATOR } from 'constants';
5
6
7let client: lc.LanguageClient;
8
9let uris = {
10 syntaxTree: vscode.Uri.parse('ra-lsp://syntaxtree')
11}
12
13
14export function activate(context: vscode.ExtensionContext) {
15 let textDocumentContentProvider = new TextDocumentContentProvider()
16 let dispose = (disposable: vscode.Disposable) => {
17 context.subscriptions.push(disposable);
18 }
19 let registerCommand = (name: string, f: any) => {
20 dispose(vscode.commands.registerCommand(name, f))
21 }
22
23 registerCommand('ra-lsp.syntaxTree', () => openDoc(uris.syntaxTree))
24 registerCommand('ra-lsp.extendSelection', async () => {
25 let editor = vscode.window.activeTextEditor
26 if (editor == null || editor.document.languageId != "rust") return
27 let request: ExtendSelectionParams = {
28 textDocument: { uri: editor.document.uri.toString() },
29 selections: editor.selections.map((s) => {
30 return client.code2ProtocolConverter.asRange(s)
31 })
32 }
33 let response = await client.sendRequest<ExtendSelectionResult>("m/extendSelection", request)
34 editor.selections = response.selections.map((range) => {
35 let r = client.protocol2CodeConverter.asRange(range)
36 return new vscode.Selection(r.start, r.end)
37 })
38 })
39 registerCommand('ra-lsp.matchingBrace', async () => {
40 let editor = vscode.window.activeTextEditor
41 if (editor == null || editor.document.languageId != "rust") return
42 let request: FindMatchingBraceParams = {
43 textDocument: { uri: editor.document.uri.toString() },
44 offsets: editor.selections.map((s) => {
45 return client.code2ProtocolConverter.asPosition(s.active)
46 })
47 }
48 let response = await client.sendRequest<lc.Position[]>("m/findMatchingBrace", request)
49 editor.selections = editor.selections.map((sel, idx) => {
50 let active = client.protocol2CodeConverter.asPosition(response[idx])
51 let anchor = sel.isEmpty ? active : sel.anchor
52 return new vscode.Selection(anchor, active)
53 })
54 editor.revealRange(editor.selection)
55 })
56 registerCommand('ra-lsp.joinLines', async () => {
57 let editor = vscode.window.activeTextEditor
58 if (editor == null || editor.document.languageId != "rust") return
59 let request: JoinLinesParams = {
60 textDocument: { uri: editor.document.uri.toString() },
61 range: client.code2ProtocolConverter.asRange(editor.selection),
62 }
63 let change = await client.sendRequest<SourceChange>("m/joinLines", request)
64 await applySourceChange(change)
65 })
66 registerCommand('ra-lsp.parentModule', async () => {
67 let editor = vscode.window.activeTextEditor
68 if (editor == null || editor.document.languageId != "rust") return
69 let request: lc.TextDocumentIdentifier = {
70 uri: editor.document.uri.toString()
71 }
72 let response = await client.sendRequest<lc.Location[]>("m/parentModule", request)
73 let loc = response[0]
74 if (loc == null) return
75 let uri = client.protocol2CodeConverter.asUri(loc.uri)
76 let range = client.protocol2CodeConverter.asRange(loc.range)
77
78 let doc = await vscode.workspace.openTextDocument(uri)
79 let e = await vscode.window.showTextDocument(doc)
80 e.revealRange(range, vscode.TextEditorRevealType.InCenter)
81 })
82
83 let prevRunnable: RunnableQuickPick | undefined = undefined
84 registerCommand('ra-lsp.run', async () => {
85 let editor = vscode.window.activeTextEditor
86 if (editor == null || editor.document.languageId != "rust") return
87 let textDocument: lc.TextDocumentIdentifier = {
88 uri: editor.document.uri.toString()
89 }
90 let params: RunnablesParams = {
91 textDocument,
92 position: client.code2ProtocolConverter.asPosition(editor.selection.active)
93 }
94 let runnables = await client.sendRequest<Runnable[]>('m/runnables', params)
95 let items: RunnableQuickPick[] = []
96 if (prevRunnable) {
97 items.push(prevRunnable)
98 }
99 for (let r of runnables) {
100 if (prevRunnable && JSON.stringify(prevRunnable.runnable) == JSON.stringify(r)) {
101 continue
102 }
103 items.push(new RunnableQuickPick(r))
104 }
105 let item = await vscode.window.showQuickPick(items)
106 if (item) {
107 item.detail = "rerun"
108 prevRunnable = item
109 let task = createTask(item.runnable)
110 return await vscode.tasks.executeTask(task)
111 }
112 })
113 registerCommand('ra-lsp.applySourceChange', applySourceChange)
114
115 dispose(vscode.workspace.registerTextDocumentContentProvider(
116 'ra-lsp',
117 textDocumentContentProvider
118 ))
119 startServer()
120 vscode.workspace.onDidChangeTextDocument((event: vscode.TextDocumentChangeEvent) => {
121 let doc = event.document
122 if (doc.languageId != "rust") return
123 afterLs(() => {
124 textDocumentContentProvider.eventEmitter.fire(uris.syntaxTree)
125 })
126 }, null, context.subscriptions)
127 vscode.window.onDidChangeActiveTextEditor(async (editor) => {
128 if (!editor || editor.document.languageId != 'rust') return
129 let params: lc.TextDocumentIdentifier = {
130 uri: editor.document.uri.toString()
131 }
132 let decorations = await client.sendRequest<Decoration[]>("m/decorationsRequest", params)
133 setHighlights(editor, decorations)
134 })
135}
136
137// We need to order this after LS updates, but there's no API for that.
138// Hence, good old setTimeout.
139function afterLs(f: () => any) {
140 setTimeout(f, 10)
141}
142
143export function deactivate(): Thenable<void> {
144 if (!client) {
145 return Promise.resolve();
146 }
147 return client.stop();
148}
149
150function startServer() {
151 let run: lc.Executable = {
152 command: "ra_lsp_server",
153 options: { cwd: "." }
154 }
155 let serverOptions: lc.ServerOptions = {
156 run,
157 debug: run
158 };
159
160 let clientOptions: lc.LanguageClientOptions = {
161 documentSelector: [{ scheme: 'file', language: 'rust' }],
162 };
163
164 client = new lc.LanguageClient(
165 'ra-lsp',
166 'rust-analyzer languge server',
167 serverOptions,
168 clientOptions,
169 );
170 client.onReady().then(() => {
171 client.onNotification(
172 "m/publishDecorations",
173 (params: PublishDecorationsParams) => {
174 let editor = vscode.window.visibleTextEditors.find(
175 (editor) => editor.document.uri.toString() == params.uri
176 )
177 if (editor == null) return;
178 setHighlights(
179 editor,
180 params.decorations,
181 )
182 }
183 )
184 })
185 client.start();
186}
187
188async function openDoc(uri: vscode.Uri) {
189 let document = await vscode.workspace.openTextDocument(uri)
190 return vscode.window.showTextDocument(document, vscode.ViewColumn.Two, true)
191}
192
193class TextDocumentContentProvider implements vscode.TextDocumentContentProvider {
194 public eventEmitter = new vscode.EventEmitter<vscode.Uri>()
195 public syntaxTree: string = "Not available"
196
197 public provideTextDocumentContent(uri: vscode.Uri): vscode.ProviderResult<string> {
198 let editor = vscode.window.activeTextEditor;
199 if (editor == null) return ""
200 let request: SyntaxTreeParams = {
201 textDocument: { uri: editor.document.uri.toString() }
202 };
203 return client.sendRequest<SyntaxTreeResult>("m/syntaxTree", request);
204 }
205
206 get onDidChange(): vscode.Event<vscode.Uri> {
207 return this.eventEmitter.event
208 }
209}
210
211
212const decorations: { [index: string]: vscode.TextEditorDecorationType } = (() => {
213 const decor = (obj: any) => vscode.window.createTextEditorDecorationType({ color: obj })
214 return {
215 background: decor("#3F3F3F"),
216 error: vscode.window.createTextEditorDecorationType({
217 borderColor: "red",
218 borderStyle: "none none dashed none",
219 }),
220 comment: decor("#7F9F7F"),
221 string: decor("#CC9393"),
222 keyword: decor("#F0DFAF"),
223 function: decor("#93E0E3"),
224 parameter: decor("#94BFF3"),
225 builtin: decor("#DD6718"),
226 text: decor("#DCDCCC"),
227 attribute: decor("#BFEBBF"),
228 literal: decor("#DFAF8F"),
229 }
230})()
231
232function setHighlights(
233 editor: vscode.TextEditor,
234 highlihgs: Array<Decoration>
235) {
236 let byTag: Map<string, vscode.Range[]> = new Map()
237 for (let tag in decorations) {
238 byTag.set(tag, [])
239 }
240
241 for (let d of highlihgs) {
242 if (!byTag.get(d.tag)) {
243 console.log(`unknown tag ${d.tag}`)
244 continue
245 }
246 byTag.get(d.tag)!.push(
247 client.protocol2CodeConverter.asRange(d.range)
248 )
249 }
250
251 for (let tag of byTag.keys()) {
252 let dec: vscode.TextEditorDecorationType = decorations[tag]
253 let ranges = byTag.get(tag)!
254 editor.setDecorations(dec, ranges)
255 }
256}
257
258interface SyntaxTreeParams {
259 textDocument: lc.TextDocumentIdentifier;
260}
261
262type SyntaxTreeResult = string
263
264interface ExtendSelectionParams {
265 textDocument: lc.TextDocumentIdentifier;
266 selections: lc.Range[];
267}
268
269interface ExtendSelectionResult {
270 selections: lc.Range[];
271}
272
273interface FindMatchingBraceParams {
274 textDocument: lc.TextDocumentIdentifier;
275 offsets: lc.Position[];
276}
277
278interface JoinLinesParams {
279 textDocument: lc.TextDocumentIdentifier;
280 range: lc.Range;
281}
282
283interface PublishDecorationsParams {
284 uri: string,
285 decorations: Decoration[],
286}
287
288interface RunnablesParams {
289 textDocument: lc.TextDocumentIdentifier,
290 position?: lc.Position,
291}
292
293interface Runnable {
294 range: lc.Range;
295 label: string;
296 bin: string;
297 args: string[];
298 env: { [index: string]: string },
299}
300
301class RunnableQuickPick implements vscode.QuickPickItem {
302 label: string;
303 description?: string | undefined;
304 detail?: string | undefined;
305 picked?: boolean | undefined;
306
307 constructor(public runnable: Runnable) {
308 this.label = runnable.label
309 }
310}
311
312interface Decoration {
313 range: lc.Range,
314 tag: string,
315}
316
317
318interface CargoTaskDefinition extends vscode.TaskDefinition {
319 type: 'cargo';
320 label: string;
321 command: string;
322 args: Array<string>;
323 env?: { [key: string]: string };
324}
325
326function createTask(spec: Runnable): vscode.Task {
327 const TASK_SOURCE = 'Rust';
328 let definition: CargoTaskDefinition = {
329 type: 'cargo',
330 label: 'cargo',
331 command: spec.bin,
332 args: spec.args,
333 env: spec.env
334 }
335
336 let execCmd = `${definition.command} ${definition.args.join(' ')}`;
337 let execOption: vscode.ShellExecutionOptions = {
338 cwd: '.',
339 env: definition.env,
340 };
341 let exec = new vscode.ShellExecution(`clear; ${execCmd}`, execOption);
342
343 let f = vscode.workspace.workspaceFolders![0]
344 let t = new vscode.Task(definition, f, definition.label, TASK_SOURCE, exec, ['$rustc']);
345 return t;
346}
347
348interface FileSystemEdit {
349 type: string;
350 uri?: string;
351 src?: string;
352 dst?: string;
353}
354
355interface SourceChange {
356 label: string,
357 sourceFileEdits: lc.TextDocumentEdit[],
358 fileSystemEdits: FileSystemEdit[],
359 cursorPosition?: lc.TextDocumentPositionParams,
360}
361
362async function applySourceChange(change: SourceChange) {
363 console.log(`applySOurceChange ${JSON.stringify(change)}`)
364 let wsEdit = new vscode.WorkspaceEdit()
365 for (let sourceEdit of change.sourceFileEdits) {
366 let uri = client.protocol2CodeConverter.asUri(sourceEdit.textDocument.uri)
367 let edits = client.protocol2CodeConverter.asTextEdits(sourceEdit.edits)
368 wsEdit.set(uri, edits)
369 }
370 let created;
371 let moved;
372 for (let fsEdit of change.fileSystemEdits) {
373 if (fsEdit.type == "createFile") {
374 let uri = vscode.Uri.parse(fsEdit.uri!)
375 wsEdit.createFile(uri)
376 created = uri
377 } else if (fsEdit.type == "moveFile") {
378 let src = vscode.Uri.parse(fsEdit.src!)
379 let dst = vscode.Uri.parse(fsEdit.dst!)
380 wsEdit.renameFile(src, dst)
381 moved = dst
382 } else {
383 console.error(`unknown op: ${JSON.stringify(fsEdit)}`)
384 }
385 }
386 let toOpen = created || moved
387 let toReveal = change.cursorPosition
388 await vscode.workspace.applyEdit(wsEdit)
389 if (toOpen) {
390 let doc = await vscode.workspace.openTextDocument(toOpen)
391 await vscode.window.showTextDocument(doc)
392 } else if (toReveal) {
393 let uri = client.protocol2CodeConverter.asUri(toReveal.textDocument.uri)
394 let position = client.protocol2CodeConverter.asPosition(toReveal.position)
395 let editor = vscode.window.activeTextEditor;
396 if (!editor || editor.document.uri.toString() != uri.toString()) return
397 if (!editor.selection.isEmpty) return
398 editor!.selection = new vscode.Selection(position, position)
399 }
400}
diff --git a/editors/code/tsconfig.json b/editors/code/tsconfig.json
new file mode 100644
index 000000000..ebec01624
--- /dev/null
+++ b/editors/code/tsconfig.json
@@ -0,0 +1,17 @@
1{
2 "compilerOptions": {
3 "module": "commonjs",
4 "target": "es6",
5 "outDir": "out",
6 "lib": [
7 "es6"
8 ],
9 "sourceMap": true,
10 "rootDir": "src",
11 "strict": true
12 },
13 "exclude": [
14 "node_modules",
15 ".vscode-test"
16 ]
17}