diff options
31 files changed, 615 insertions, 1586 deletions
diff --git a/Cargo.lock b/Cargo.lock index 81dd812f4..723c1ac5f 100644 --- a/Cargo.lock +++ b/Cargo.lock | |||
@@ -270,7 +270,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
270 | dependencies = [ | 270 | dependencies = [ |
271 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 271 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
272 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 272 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
273 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 273 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
274 | ] | 274 | ] |
275 | 275 | ||
276 | [[package]] | 276 | [[package]] |
@@ -343,7 +343,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
343 | dependencies = [ | 343 | dependencies = [ |
344 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 344 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
345 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 345 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
346 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 346 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
347 | "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", | 347 | "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", |
348 | ] | 348 | ] |
349 | 349 | ||
@@ -430,7 +430,7 @@ dependencies = [ | |||
430 | "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", | 430 | "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", |
431 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", | 431 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", |
432 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", | 432 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", |
433 | "lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)", | 433 | "lsp-types 0.57.0 (git+https://github.com/matklad/lsp-types?branch=selection-range)", |
434 | "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", | 434 | "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", |
435 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", | 435 | "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", |
436 | ] | 436 | ] |
@@ -634,8 +634,8 @@ dependencies = [ | |||
634 | 634 | ||
635 | [[package]] | 635 | [[package]] |
636 | name = "lsp-types" | 636 | name = "lsp-types" |
637 | version = "0.56.0" | 637 | version = "0.57.0" |
638 | source = "registry+https://github.com/rust-lang/crates.io-index" | 638 | source = "git+https://github.com/matklad/lsp-types?branch=selection-range#6e37d45bcf411c18c22ab29ec155946ff001339e" |
639 | dependencies = [ | 639 | dependencies = [ |
640 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", | 640 | "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", |
641 | "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", | 641 | "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", |
@@ -747,7 +747,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
747 | dependencies = [ | 747 | dependencies = [ |
748 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 748 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
749 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 749 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
750 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 750 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
751 | ] | 751 | ] |
752 | 752 | ||
753 | [[package]] | 753 | [[package]] |
@@ -844,7 +844,7 @@ dependencies = [ | |||
844 | "pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", | 844 | "pest_meta 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", |
845 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 845 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
846 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 846 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
847 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 847 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
848 | ] | 848 | ] |
849 | 849 | ||
850 | [[package]] | 850 | [[package]] |
@@ -1027,7 +1027,7 @@ dependencies = [ | |||
1027 | "flexi_logger 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", | 1027 | "flexi_logger 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", |
1028 | "gen_lsp_server 0.1.0", | 1028 | "gen_lsp_server 0.1.0", |
1029 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", | 1029 | "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", |
1030 | "lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)", | 1030 | "lsp-types 0.57.0 (git+https://github.com/matklad/lsp-types?branch=selection-range)", |
1031 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", | 1031 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", |
1032 | "ra_arena 0.1.0", | 1032 | "ra_arena 0.1.0", |
1033 | "ra_ide_api 0.1.0", | 1033 | "ra_ide_api 0.1.0", |
@@ -1378,7 +1378,7 @@ dependencies = [ | |||
1378 | "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", | 1378 | "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", |
1379 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 1379 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
1380 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 1380 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
1381 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 1381 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
1382 | ] | 1382 | ] |
1383 | 1383 | ||
1384 | [[package]] | 1384 | [[package]] |
@@ -1423,7 +1423,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
1423 | dependencies = [ | 1423 | dependencies = [ |
1424 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 1424 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
1425 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 1425 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
1426 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 1426 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
1427 | ] | 1427 | ] |
1428 | 1428 | ||
1429 | [[package]] | 1429 | [[package]] |
@@ -1501,7 +1501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
1501 | 1501 | ||
1502 | [[package]] | 1502 | [[package]] |
1503 | name = "syn" | 1503 | name = "syn" |
1504 | version = "0.15.31" | 1504 | version = "0.15.32" |
1505 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1505 | source = "registry+https://github.com/rust-lang/crates.io-index" |
1506 | dependencies = [ | 1506 | dependencies = [ |
1507 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 1507 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
@@ -1516,7 +1516,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
1516 | dependencies = [ | 1516 | dependencies = [ |
1517 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", | 1517 | "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", |
1518 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", | 1518 | "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", |
1519 | "syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)", | 1519 | "syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)", |
1520 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", | 1520 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", |
1521 | ] | 1521 | ] |
1522 | 1522 | ||
@@ -1937,7 +1937,7 @@ dependencies = [ | |||
1937 | "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" | 1937 | "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" |
1938 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" | 1938 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" |
1939 | "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" | 1939 | "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" |
1940 | "checksum lsp-types 0.56.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31954f2cf354421e6f99a48fdcfd5c3113c675a0db311960ffdac0b8d45cf09c" | 1940 | "checksum lsp-types 0.57.0 (git+https://github.com/matklad/lsp-types?branch=selection-range)" = "<none>" |
1941 | "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" | 1941 | "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" |
1942 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" | 1942 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" |
1943 | "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" | 1943 | "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" |
@@ -2010,7 +2010,7 @@ dependencies = [ | |||
2010 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" | 2010 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" |
2011 | "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" | 2011 | "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" |
2012 | "checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" | 2012 | "checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" |
2013 | "checksum syn 0.15.31 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b4cfac95805274c6afdb12d8f770fa2d27c045953e7b630a81801953699a9a" | 2013 | "checksum syn 0.15.32 (registry+https://github.com/rust-lang/crates.io-index)" = "846620ec526c1599c070eff393bfeeeb88a93afa2513fc3b49f1fea84cf7b0ed" |
2014 | "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" | 2014 | "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" |
2015 | "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" | 2015 | "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" |
2016 | "checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" | 2016 | "checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" |
diff --git a/Cargo.toml b/Cargo.toml index c5155e899..0e474a184 100644 --- a/Cargo.toml +++ b/Cargo.toml | |||
@@ -6,3 +6,4 @@ incremental = true | |||
6 | debug = true | 6 | debug = true |
7 | 7 | ||
8 | [patch.'crates-io'] | 8 | [patch.'crates-io'] |
9 | lsp-types = { git = "https://github.com/matklad/lsp-types", branch = "selection-range" } | ||
diff --git a/crates/gen_lsp_server/Cargo.toml b/crates/gen_lsp_server/Cargo.toml index 9e0d819d0..34343e2f2 100644 --- a/crates/gen_lsp_server/Cargo.toml +++ b/crates/gen_lsp_server/Cargo.toml | |||
@@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0" | |||
8 | description = "Generic LSP server scaffold." | 8 | description = "Generic LSP server scaffold." |
9 | 9 | ||
10 | [dependencies] | 10 | [dependencies] |
11 | lsp-types = "0.56.0" | 11 | lsp-types = "0.57.0" |
12 | log = "0.4.3" | 12 | log = "0.4.3" |
13 | failure = "0.1.4" | 13 | failure = "0.1.4" |
14 | serde_json = "1.0.34" | 14 | serde_json = "1.0.34" |
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index 18627bbc2..8af0a3176 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs | |||
@@ -1,6 +1,6 @@ | |||
1 | use std::sync::Arc; | 1 | use std::sync::Arc; |
2 | 2 | ||
3 | use ra_syntax::{SyntaxNode, TreeArc, SourceFile, ast}; | 3 | use ra_syntax::{SyntaxNode, TreeArc, SourceFile, SmolStr, ast}; |
4 | use ra_db::{SourceDatabase, salsa}; | 4 | use ra_db::{SourceDatabase, salsa}; |
5 | 5 | ||
6 | use crate::{ | 6 | use crate::{ |
@@ -16,6 +16,7 @@ use crate::{ | |||
16 | generics::{GenericParams, GenericDef}, | 16 | generics::{GenericParams, GenericDef}, |
17 | type_ref::TypeRef, | 17 | type_ref::TypeRef, |
18 | traits::TraitData, Trait, ty::TraitRef, | 18 | traits::TraitData, Trait, ty::TraitRef, |
19 | lang_item::{LangItems, LangItemTarget}, | ||
19 | ids | 20 | ids |
20 | }; | 21 | }; |
21 | 22 | ||
@@ -100,6 +101,12 @@ pub trait DefDatabase: SourceDatabase { | |||
100 | 101 | ||
101 | #[salsa::invoke(crate::ConstSignature::static_signature_query)] | 102 | #[salsa::invoke(crate::ConstSignature::static_signature_query)] |
102 | fn static_signature(&self, konst: Static) -> Arc<ConstSignature>; | 103 | fn static_signature(&self, konst: Static) -> Arc<ConstSignature>; |
104 | |||
105 | #[salsa::invoke(crate::lang_item::LangItems::lang_items_query)] | ||
106 | fn lang_items(&self, krate: Crate) -> Arc<LangItems>; | ||
107 | |||
108 | #[salsa::invoke(crate::lang_item::LangItems::lang_item_query)] | ||
109 | fn lang_item(&self, start_crate: Crate, item: SmolStr) -> Option<LangItemTarget>; | ||
103 | } | 110 | } |
104 | 111 | ||
105 | #[salsa::query_group(HirDatabaseStorage)] | 112 | #[salsa::query_group(HirDatabaseStorage)] |
diff --git a/crates/ra_hir/src/lang_item.rs b/crates/ra_hir/src/lang_item.rs new file mode 100644 index 000000000..5f3f91cba --- /dev/null +++ b/crates/ra_hir/src/lang_item.rs | |||
@@ -0,0 +1,102 @@ | |||
1 | use std::sync::Arc; | ||
2 | use rustc_hash::FxHashMap; | ||
3 | |||
4 | use ra_syntax::{SmolStr, ast::AttrsOwner}; | ||
5 | |||
6 | use crate::{ | ||
7 | Crate, DefDatabase, Enum, Function, HirDatabase, ImplBlock, Module, Static, Struct, Trait | ||
8 | }; | ||
9 | |||
10 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | ||
11 | pub enum LangItemTarget { | ||
12 | Enum(Enum), | ||
13 | Function(Function), | ||
14 | ImplBlock(ImplBlock), | ||
15 | Static(Static), | ||
16 | Struct(Struct), | ||
17 | Trait(Trait), | ||
18 | } | ||
19 | |||
20 | impl LangItemTarget { | ||
21 | pub(crate) fn krate(&self, db: &impl HirDatabase) -> Option<Crate> { | ||
22 | match self { | ||
23 | LangItemTarget::Enum(e) => e.module(db).krate(db), | ||
24 | LangItemTarget::Function(f) => f.module(db).krate(db), | ||
25 | LangItemTarget::ImplBlock(i) => i.module().krate(db), | ||
26 | LangItemTarget::Static(s) => s.module(db).krate(db), | ||
27 | LangItemTarget::Struct(s) => s.module(db).krate(db), | ||
28 | LangItemTarget::Trait(t) => t.module(db).krate(db), | ||
29 | } | ||
30 | } | ||
31 | } | ||
32 | |||
33 | #[derive(Debug, Clone, PartialEq, Eq)] | ||
34 | pub struct LangItems { | ||
35 | items: FxHashMap<SmolStr, LangItemTarget>, | ||
36 | } | ||
37 | |||
38 | impl LangItems { | ||
39 | pub fn target<'a>(&'a self, item: &str) -> Option<&'a LangItemTarget> { | ||
40 | self.items.get(item) | ||
41 | } | ||
42 | |||
43 | /// Salsa query. This will look for lang items in a specific crate. | ||
44 | pub(crate) fn lang_items_query(db: &impl DefDatabase, krate: Crate) -> Arc<LangItems> { | ||
45 | let mut lang_items = LangItems { items: FxHashMap::default() }; | ||
46 | |||
47 | if let Some(module) = krate.root_module(db) { | ||
48 | lang_items.collect_lang_items_recursive(db, &module); | ||
49 | } | ||
50 | |||
51 | Arc::new(lang_items) | ||
52 | } | ||
53 | |||
54 | /// Salsa query. Look for a lang item, starting from the specified crate and recursively | ||
55 | /// traversing its dependencies. | ||
56 | pub(crate) fn lang_item_query( | ||
57 | db: &impl DefDatabase, | ||
58 | start_crate: Crate, | ||
59 | item: SmolStr, | ||
60 | ) -> Option<LangItemTarget> { | ||
61 | let lang_items = db.lang_items(start_crate); | ||
62 | let start_crate_target = lang_items.items.get(&item); | ||
63 | if let Some(target) = start_crate_target { | ||
64 | Some(*target) | ||
65 | } else { | ||
66 | for dep in start_crate.dependencies(db) { | ||
67 | let dep_crate = dep.krate; | ||
68 | let dep_target = db.lang_item(dep_crate, item.clone()); | ||
69 | if dep_target.is_some() { | ||
70 | return dep_target; | ||
71 | } | ||
72 | } | ||
73 | None | ||
74 | } | ||
75 | } | ||
76 | |||
77 | fn collect_lang_items_recursive(&mut self, db: &impl DefDatabase, module: &Module) { | ||
78 | // Look for impl targets | ||
79 | let (impl_blocks, source_map) = db.impls_in_module_with_source_map(module.clone()); | ||
80 | let source = module.definition_source(db).1; | ||
81 | for (impl_id, _) in impl_blocks.impls.iter() { | ||
82 | let impl_block = source_map.get(&source, impl_id); | ||
83 | let lang_item_name = impl_block | ||
84 | .attrs() | ||
85 | .filter_map(|a| a.as_key_value()) | ||
86 | .filter(|(key, _)| key == "lang") | ||
87 | .map(|(_, val)| val) | ||
88 | .nth(0); | ||
89 | if let Some(lang_item_name) = lang_item_name { | ||
90 | let imp = ImplBlock::from_id(*module, impl_id); | ||
91 | self.items.entry(lang_item_name).or_insert(LangItemTarget::ImplBlock(imp)); | ||
92 | } | ||
93 | } | ||
94 | |||
95 | // FIXME we should look for the other lang item targets (traits, structs, ...) | ||
96 | |||
97 | // Look for lang items in the children | ||
98 | for child in module.children(db) { | ||
99 | self.collect_lang_items_recursive(db, &child); | ||
100 | } | ||
101 | } | ||
102 | } | ||
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 9292de1b5..4411715de 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs | |||
@@ -36,6 +36,7 @@ mod type_ref; | |||
36 | mod ty; | 36 | mod ty; |
37 | mod impl_block; | 37 | mod impl_block; |
38 | mod expr; | 38 | mod expr; |
39 | mod lang_item; | ||
39 | mod generics; | 40 | mod generics; |
40 | mod docs; | 41 | mod docs; |
41 | mod resolve; | 42 | mod resolve; |
diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs index 0eddfab12..39152360c 100644 --- a/crates/ra_hir/src/nameres.rs +++ b/crates/ra_hir/src/nameres.rs | |||
@@ -202,6 +202,10 @@ impl CrateDefMap { | |||
202 | Arc::new(def_map) | 202 | Arc::new(def_map) |
203 | } | 203 | } |
204 | 204 | ||
205 | pub(crate) fn krate(&self) -> Crate { | ||
206 | self.krate | ||
207 | } | ||
208 | |||
205 | pub(crate) fn root(&self) -> CrateModuleId { | 209 | pub(crate) fn root(&self) -> CrateModuleId { |
206 | self.root | 210 | self.root |
207 | } | 211 | } |
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs index 685f4b8b1..f2c85eb66 100644 --- a/crates/ra_hir/src/resolve.rs +++ b/crates/ra_hir/src/resolve.rs | |||
@@ -5,13 +5,15 @@ use rustc_hash::FxHashMap; | |||
5 | 5 | ||
6 | use crate::{ | 6 | use crate::{ |
7 | ModuleDef, | 7 | ModuleDef, |
8 | code_model_api::Crate, | ||
8 | db::HirDatabase, | 9 | db::HirDatabase, |
9 | name::{Name, KnownName}, | 10 | name::{Name, KnownName}, |
10 | nameres::{PerNs, CrateDefMap, CrateModuleId}, | 11 | nameres::{PerNs, CrateDefMap, CrateModuleId}, |
11 | generics::GenericParams, | 12 | generics::GenericParams, |
12 | expr::{scope::{ExprScopes, ScopeId}, PatId}, | 13 | expr::{scope::{ExprScopes, ScopeId}, PatId}, |
13 | impl_block::ImplBlock, | 14 | impl_block::ImplBlock, |
14 | path::Path, Trait | 15 | path::Path, |
16 | Trait | ||
15 | }; | 17 | }; |
16 | 18 | ||
17 | #[derive(Debug, Clone, Default)] | 19 | #[derive(Debug, Clone, Default)] |
@@ -197,6 +199,10 @@ impl Resolver { | |||
197 | _ => None, | 199 | _ => None, |
198 | }) | 200 | }) |
199 | } | 201 | } |
202 | |||
203 | pub(crate) fn krate(&self) -> Option<Crate> { | ||
204 | self.module().map(|t| t.0.krate()) | ||
205 | } | ||
200 | } | 206 | } |
201 | 207 | ||
202 | impl Resolver { | 208 | impl Resolver { |
diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index 7ca1ff595..c7772a7f6 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs | |||
@@ -462,6 +462,7 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
462 | let remaining_index = remaining_index.unwrap_or(path.segments.len()); | 462 | let remaining_index = remaining_index.unwrap_or(path.segments.len()); |
463 | let mut actual_def_ty: Option<Ty> = None; | 463 | let mut actual_def_ty: Option<Ty> = None; |
464 | 464 | ||
465 | let krate = resolver.krate()?; | ||
465 | // resolve intermediate segments | 466 | // resolve intermediate segments |
466 | for (i, segment) in path.segments[remaining_index..].iter().enumerate() { | 467 | for (i, segment) in path.segments[remaining_index..].iter().enumerate() { |
467 | let ty = match resolved { | 468 | let ty = match resolved { |
@@ -500,9 +501,10 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { | |||
500 | // Attempt to find an impl_item for the type which has a name matching | 501 | // Attempt to find an impl_item for the type which has a name matching |
501 | // the current segment | 502 | // the current segment |
502 | log::debug!("looking for path segment: {:?}", segment); | 503 | log::debug!("looking for path segment: {:?}", segment); |
504 | |||
503 | actual_def_ty = Some(ty.clone()); | 505 | actual_def_ty = Some(ty.clone()); |
504 | 506 | ||
505 | let item: crate::ModuleDef = ty.iterate_impl_items(self.db, |item| { | 507 | let item: crate::ModuleDef = ty.iterate_impl_items(self.db, krate, |item| { |
506 | let matching_def: Option<crate::ModuleDef> = match item { | 508 | let matching_def: Option<crate::ModuleDef> = match item { |
507 | crate::ImplItem::Method(func) => { | 509 | crate::ImplItem::Method(func) => { |
508 | let sig = func.signature(self.db); | 510 | let sig = func.signature(self.db); |
diff --git a/crates/ra_hir/src/ty/method_resolution.rs b/crates/ra_hir/src/ty/method_resolution.rs index 667b66095..ea6e0dc0f 100644 --- a/crates/ra_hir/src/ty/method_resolution.rs +++ b/crates/ra_hir/src/ty/method_resolution.rs | |||
@@ -14,6 +14,7 @@ use crate::{ | |||
14 | resolve::Resolver, | 14 | resolve::Resolver, |
15 | traits::TraitItem, | 15 | traits::TraitItem, |
16 | generics::HasGenericParams, | 16 | generics::HasGenericParams, |
17 | ty::primitive::{UncertainIntTy, UncertainFloatTy} | ||
17 | }; | 18 | }; |
18 | use super::{TraitRef, Substs}; | 19 | use super::{TraitRef, Substs}; |
19 | 20 | ||
@@ -110,10 +111,19 @@ impl CrateImplBlocks { | |||
110 | } | 111 | } |
111 | } | 112 | } |
112 | 113 | ||
113 | fn def_crate(db: &impl HirDatabase, ty: &Ty) -> Option<Crate> { | 114 | fn def_crate(db: &impl HirDatabase, cur_crate: Crate, ty: &Ty) -> Option<Crate> { |
114 | match ty { | 115 | match ty { |
115 | Ty::Apply(a_ty) => match a_ty.ctor { | 116 | Ty::Apply(a_ty) => match a_ty.ctor { |
116 | TypeCtor::Adt(def_id) => def_id.krate(db), | 117 | TypeCtor::Adt(def_id) => def_id.krate(db), |
118 | TypeCtor::Bool => db.lang_item(cur_crate, "bool".into())?.krate(db), | ||
119 | TypeCtor::Char => db.lang_item(cur_crate, "char".into())?.krate(db), | ||
120 | TypeCtor::Float(UncertainFloatTy::Known(f)) => { | ||
121 | db.lang_item(cur_crate, f.ty_to_string().into())?.krate(db) | ||
122 | } | ||
123 | TypeCtor::Int(UncertainIntTy::Known(i)) => { | ||
124 | db.lang_item(cur_crate, i.ty_to_string().into())?.krate(db) | ||
125 | } | ||
126 | TypeCtor::Str => db.lang_item(cur_crate, "str".into())?.krate(db), | ||
117 | _ => None, | 127 | _ => None, |
118 | }, | 128 | }, |
119 | _ => None, | 129 | _ => None, |
@@ -150,8 +160,11 @@ impl Ty { | |||
150 | // find in the end takes &self, we still do the autoderef step (just as | 160 | // find in the end takes &self, we still do the autoderef step (just as |
151 | // rustc does an autoderef and then autoref again). | 161 | // rustc does an autoderef and then autoref again). |
152 | 162 | ||
163 | let krate = resolver.krate()?; | ||
153 | for derefed_ty in self.autoderef(db) { | 164 | for derefed_ty in self.autoderef(db) { |
154 | if let Some(result) = derefed_ty.iterate_inherent_methods(db, name, &mut callback) { | 165 | if let Some(result) = |
166 | derefed_ty.iterate_inherent_methods(db, name, krate, &mut callback) | ||
167 | { | ||
155 | return Some(result); | 168 | return Some(result); |
156 | } | 169 | } |
157 | if let Some(result) = | 170 | if let Some(result) = |
@@ -208,9 +221,10 @@ impl Ty { | |||
208 | &self, | 221 | &self, |
209 | db: &impl HirDatabase, | 222 | db: &impl HirDatabase, |
210 | name: Option<&Name>, | 223 | name: Option<&Name>, |
224 | krate: Crate, | ||
211 | mut callback: impl FnMut(&Ty, Function) -> Option<T>, | 225 | mut callback: impl FnMut(&Ty, Function) -> Option<T>, |
212 | ) -> Option<T> { | 226 | ) -> Option<T> { |
213 | let krate = match def_crate(db, self) { | 227 | let krate = match def_crate(db, krate, self) { |
214 | Some(krate) => krate, | 228 | Some(krate) => krate, |
215 | None => return None, | 229 | None => return None, |
216 | }; | 230 | }; |
@@ -239,9 +253,10 @@ impl Ty { | |||
239 | pub fn iterate_impl_items<T>( | 253 | pub fn iterate_impl_items<T>( |
240 | self, | 254 | self, |
241 | db: &impl HirDatabase, | 255 | db: &impl HirDatabase, |
256 | krate: Crate, | ||
242 | mut callback: impl FnMut(ImplItem) -> Option<T>, | 257 | mut callback: impl FnMut(ImplItem) -> Option<T>, |
243 | ) -> Option<T> { | 258 | ) -> Option<T> { |
244 | let krate = def_crate(db, &self)?; | 259 | let krate = def_crate(db, krate, &self)?; |
245 | let impls = db.impls_in_crate(krate); | 260 | let impls = db.impls_in_crate(krate); |
246 | 261 | ||
247 | for impl_block in impls.lookup_impl_blocks(&self) { | 262 | for impl_block in impls.lookup_impl_blocks(&self) { |
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs index 8d8a0eaaa..86f18b487 100644 --- a/crates/ra_hir/src/ty/tests.rs +++ b/crates/ra_hir/src/ty/tests.rs | |||
@@ -627,6 +627,28 @@ fn test(a: A) { | |||
627 | } | 627 | } |
628 | 628 | ||
629 | #[test] | 629 | #[test] |
630 | fn infer_inherent_method_str() { | ||
631 | assert_snapshot_matches!( | ||
632 | infer(r#" | ||
633 | #[lang = "str"] | ||
634 | impl str { | ||
635 | fn foo(&self) -> i32 {} | ||
636 | } | ||
637 | |||
638 | fn test() { | ||
639 | "foo".foo(); | ||
640 | } | ||
641 | "#), | ||
642 | @r###" | ||
643 | [40; 44) 'self': &str | ||
644 | [53; 55) '{}': () | ||
645 | [69; 89) '{ ...o(); }': () | ||
646 | [75; 80) '"foo"': &str | ||
647 | [75; 86) '"foo".foo()': i32"### | ||
648 | ); | ||
649 | } | ||
650 | |||
651 | #[test] | ||
630 | fn infer_tuple() { | 652 | fn infer_tuple() { |
631 | assert_snapshot_matches!( | 653 | assert_snapshot_matches!( |
632 | infer(r#" | 654 | infer(r#" |
diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index bc03a7095..c41752ae7 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs | |||
@@ -38,19 +38,22 @@ pub(super) fn complete_path(acc: &mut Completions, ctx: &CompletionContext) { | |||
38 | } | 38 | } |
39 | hir::ModuleDef::Struct(s) => { | 39 | hir::ModuleDef::Struct(s) => { |
40 | let ty = s.ty(ctx.db); | 40 | let ty = s.ty(ctx.db); |
41 | ty.iterate_impl_items(ctx.db, |item| { | 41 | let krate = ctx.module.and_then(|m| m.krate(ctx.db)); |
42 | match item { | 42 | if let Some(krate) = krate { |
43 | hir::ImplItem::Method(func) => { | 43 | ty.iterate_impl_items(ctx.db, krate, |item| { |
44 | let sig = func.signature(ctx.db); | 44 | match item { |
45 | if !sig.has_self_param() { | 45 | hir::ImplItem::Method(func) => { |
46 | acc.add_function(ctx, func); | 46 | let sig = func.signature(ctx.db); |
47 | if !sig.has_self_param() { | ||
48 | acc.add_function(ctx, func); | ||
49 | } | ||
47 | } | 50 | } |
51 | hir::ImplItem::Const(ct) => acc.add_const(ctx, ct), | ||
52 | hir::ImplItem::TypeAlias(ty) => acc.add_type_alias(ctx, ty), | ||
48 | } | 53 | } |
49 | hir::ImplItem::Const(ct) => acc.add_const(ctx, ct), | 54 | None::<()> |
50 | hir::ImplItem::TypeAlias(ty) => acc.add_type_alias(ctx, ty), | 55 | }); |
51 | } | 56 | } |
52 | None::<()> | ||
53 | }); | ||
54 | } | 57 | } |
55 | _ => return, | 58 | _ => return, |
56 | }; | 59 | }; |
diff --git a/crates/ra_lsp_server/Cargo.toml b/crates/ra_lsp_server/Cargo.toml index bc181e4eb..c855d6f68 100644 --- a/crates/ra_lsp_server/Cargo.toml +++ b/crates/ra_lsp_server/Cargo.toml | |||
@@ -15,7 +15,7 @@ crossbeam-channel = "0.3.5" | |||
15 | flexi_logger = "0.11.0" | 15 | flexi_logger = "0.11.0" |
16 | log = "0.4.3" | 16 | log = "0.4.3" |
17 | url_serde = "0.2.0" | 17 | url_serde = "0.2.0" |
18 | lsp-types = "0.56.0" | 18 | lsp-types = "0.57.0" |
19 | rustc-hash = "1.0" | 19 | rustc-hash = "1.0" |
20 | parking_lot = "0.7.0" | 20 | parking_lot = "0.7.0" |
21 | 21 | ||
diff --git a/crates/ra_lsp_server/src/caps.rs b/crates/ra_lsp_server/src/caps.rs index 2af2b89fe..f6d2b75e7 100644 --- a/crates/ra_lsp_server/src/caps.rs +++ b/crates/ra_lsp_server/src/caps.rs | |||
@@ -2,7 +2,7 @@ use lsp_types::{ | |||
2 | CodeActionProviderCapability, CodeLensOptions, CompletionOptions, DocumentOnTypeFormattingOptions, | 2 | CodeActionProviderCapability, CodeLensOptions, CompletionOptions, DocumentOnTypeFormattingOptions, |
3 | ExecuteCommandOptions, FoldingRangeProviderCapability, RenameOptions, RenameProviderCapability, | 3 | ExecuteCommandOptions, FoldingRangeProviderCapability, RenameOptions, RenameProviderCapability, |
4 | ServerCapabilities, SignatureHelpOptions, TextDocumentSyncCapability, TextDocumentSyncKind, | 4 | ServerCapabilities, SignatureHelpOptions, TextDocumentSyncCapability, TextDocumentSyncKind, |
5 | TextDocumentSyncOptions, ImplementationProviderCapability, | 5 | TextDocumentSyncOptions, ImplementationProviderCapability, GenericCapability, |
6 | }; | 6 | }; |
7 | 7 | ||
8 | pub fn server_capabilities() -> ServerCapabilities { | 8 | pub fn server_capabilities() -> ServerCapabilities { |
@@ -37,6 +37,7 @@ pub fn server_capabilities() -> ServerCapabilities { | |||
37 | first_trigger_character: "=".to_string(), | 37 | first_trigger_character: "=".to_string(), |
38 | more_trigger_character: Some(vec![".".to_string()]), | 38 | more_trigger_character: Some(vec![".".to_string()]), |
39 | }), | 39 | }), |
40 | selection_range_provider: Some(GenericCapability::default()), | ||
40 | folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)), | 41 | folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)), |
41 | rename_provider: Some(RenameProviderCapability::Options(RenameOptions { | 42 | rename_provider: Some(RenameProviderCapability::Options(RenameOptions { |
42 | prepare_provider: Some(true), | 43 | prepare_provider: Some(true), |
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index 07ac4917a..dc1f8f3f7 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs | |||
@@ -297,6 +297,7 @@ fn on_request( | |||
297 | .on::<req::AnalyzerStatus>(handlers::handle_analyzer_status)? | 297 | .on::<req::AnalyzerStatus>(handlers::handle_analyzer_status)? |
298 | .on::<req::SyntaxTree>(handlers::handle_syntax_tree)? | 298 | .on::<req::SyntaxTree>(handlers::handle_syntax_tree)? |
299 | .on::<req::ExtendSelection>(handlers::handle_extend_selection)? | 299 | .on::<req::ExtendSelection>(handlers::handle_extend_selection)? |
300 | .on::<req::SelectionRangeRequest>(handlers::handle_selection_range)? | ||
300 | .on::<req::FindMatchingBrace>(handlers::handle_find_matching_brace)? | 301 | .on::<req::FindMatchingBrace>(handlers::handle_find_matching_brace)? |
301 | .on::<req::JoinLines>(handlers::handle_join_lines)? | 302 | .on::<req::JoinLines>(handlers::handle_join_lines)? |
302 | .on::<req::OnEnter>(handlers::handle_on_enter)? | 303 | .on::<req::OnEnter>(handlers::handle_on_enter)? |
diff --git a/crates/ra_lsp_server/src/main_loop/handlers.rs b/crates/ra_lsp_server/src/main_loop/handlers.rs index eb8a53545..530081494 100644 --- a/crates/ra_lsp_server/src/main_loop/handlers.rs +++ b/crates/ra_lsp_server/src/main_loop/handlers.rs | |||
@@ -11,7 +11,7 @@ use ra_ide_api::{ | |||
11 | FileId, FilePosition, FileRange, FoldKind, Query, RangeInfo, RunnableKind, Severity, Cancelable, | 11 | FileId, FilePosition, FileRange, FoldKind, Query, RangeInfo, RunnableKind, Severity, Cancelable, |
12 | AssistId, | 12 | AssistId, |
13 | }; | 13 | }; |
14 | use ra_syntax::{AstNode, SyntaxKind, TextUnit}; | 14 | use ra_syntax::{AstNode, SyntaxKind, TextUnit, TextRange}; |
15 | use ra_prof::profile; | 15 | use ra_prof::profile; |
16 | use rustc_hash::FxHashMap; | 16 | use rustc_hash::FxHashMap; |
17 | use serde::{Serialize, Deserialize}; | 17 | use serde::{Serialize, Deserialize}; |
@@ -39,10 +39,15 @@ pub fn handle_syntax_tree(world: ServerWorld, params: req::SyntaxTreeParams) -> | |||
39 | Ok(res) | 39 | Ok(res) |
40 | } | 40 | } |
41 | 41 | ||
42 | // FIXME: drop this API | ||
42 | pub fn handle_extend_selection( | 43 | pub fn handle_extend_selection( |
43 | world: ServerWorld, | 44 | world: ServerWorld, |
44 | params: req::ExtendSelectionParams, | 45 | params: req::ExtendSelectionParams, |
45 | ) -> Result<req::ExtendSelectionResult> { | 46 | ) -> Result<req::ExtendSelectionResult> { |
47 | log::error!( | ||
48 | "extend selection is deprecated and will be removed soon, | ||
49 | use the new selection range API in LSP", | ||
50 | ); | ||
46 | let file_id = params.text_document.try_conv_with(&world)?; | 51 | let file_id = params.text_document.try_conv_with(&world)?; |
47 | let line_index = world.analysis().file_line_index(file_id); | 52 | let line_index = world.analysis().file_line_index(file_id); |
48 | let selections = params | 53 | let selections = params |
@@ -55,6 +60,46 @@ pub fn handle_extend_selection( | |||
55 | Ok(req::ExtendSelectionResult { selections }) | 60 | Ok(req::ExtendSelectionResult { selections }) |
56 | } | 61 | } |
57 | 62 | ||
63 | pub fn handle_selection_range( | ||
64 | world: ServerWorld, | ||
65 | params: req::SelectionRangeParams, | ||
66 | ) -> Result<Vec<req::SelectionRange>> { | ||
67 | let file_id = params.text_document.try_conv_with(&world)?; | ||
68 | let line_index = world.analysis().file_line_index(file_id); | ||
69 | params | ||
70 | .positions | ||
71 | .into_iter() | ||
72 | .map_conv_with(&line_index) | ||
73 | .map(|position| { | ||
74 | let mut ranges = Vec::new(); | ||
75 | { | ||
76 | let mut range = TextRange::from_to(position, position); | ||
77 | loop { | ||
78 | ranges.push(range); | ||
79 | let frange = FileRange { file_id, range }; | ||
80 | let next = world.analysis().extend_selection(frange)?; | ||
81 | if next == range { | ||
82 | break; | ||
83 | } else { | ||
84 | range = next | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | let mut range = req::SelectionRange { | ||
89 | range: ranges.last().unwrap().conv_with(&line_index), | ||
90 | parent: None, | ||
91 | }; | ||
92 | for r in ranges.iter().rev().skip(1) { | ||
93 | range = req::SelectionRange { | ||
94 | range: r.conv_with(&line_index), | ||
95 | parent: Some(Box::new(range)), | ||
96 | } | ||
97 | } | ||
98 | Ok(range) | ||
99 | }) | ||
100 | .collect() | ||
101 | } | ||
102 | |||
58 | pub fn handle_find_matching_brace( | 103 | pub fn handle_find_matching_brace( |
59 | world: ServerWorld, | 104 | world: ServerWorld, |
60 | params: req::FindMatchingBraceParams, | 105 | params: req::FindMatchingBraceParams, |
diff --git a/crates/ra_lsp_server/src/req.rs b/crates/ra_lsp_server/src/req.rs index 4f35ab9b5..6090eb7b9 100644 --- a/crates/ra_lsp_server/src/req.rs +++ b/crates/ra_lsp_server/src/req.rs | |||
@@ -64,6 +64,28 @@ pub struct ExtendSelectionResult { | |||
64 | pub selections: Vec<Range>, | 64 | pub selections: Vec<Range>, |
65 | } | 65 | } |
66 | 66 | ||
67 | pub enum SelectionRangeRequest {} | ||
68 | |||
69 | impl Request for SelectionRangeRequest { | ||
70 | type Params = SelectionRangeParams; | ||
71 | type Result = Vec<SelectionRange>; | ||
72 | const METHOD: &'static str = "textDocument/selectionRange"; | ||
73 | } | ||
74 | |||
75 | #[derive(Deserialize, Debug)] | ||
76 | #[serde(rename_all = "camelCase")] | ||
77 | pub struct SelectionRangeParams { | ||
78 | pub text_document: TextDocumentIdentifier, | ||
79 | pub positions: Vec<Position>, | ||
80 | } | ||
81 | |||
82 | #[derive(Serialize, Debug)] | ||
83 | #[serde(rename_all = "camelCase")] | ||
84 | pub struct SelectionRange { | ||
85 | pub range: Range, | ||
86 | pub parent: Option<Box<SelectionRange>>, | ||
87 | } | ||
88 | |||
67 | pub enum FindMatchingBrace {} | 89 | pub enum FindMatchingBrace {} |
68 | 90 | ||
69 | impl Request for FindMatchingBrace { | 91 | impl Request for FindMatchingBrace { |
diff --git a/crates/ra_syntax/src/ast/extensions.rs b/crates/ra_syntax/src/ast/extensions.rs index ca33b43e7..5c4c0ffc1 100644 --- a/crates/ra_syntax/src/ast/extensions.rs +++ b/crates/ra_syntax/src/ast/extensions.rs | |||
@@ -65,6 +65,20 @@ impl ast::Attr { | |||
65 | None | 65 | None |
66 | } | 66 | } |
67 | } | 67 | } |
68 | |||
69 | pub fn as_key_value(&self) -> Option<(SmolStr, SmolStr)> { | ||
70 | let tt = self.value()?; | ||
71 | let tt_node = tt.syntax(); | ||
72 | let attr = tt_node.children_with_tokens().nth(1)?; | ||
73 | if attr.kind() == IDENT { | ||
74 | let key = attr.as_token()?.text().clone(); | ||
75 | let val_node = tt_node.children_with_tokens().find(|t| t.kind() == STRING)?; | ||
76 | let val = val_node.as_token()?.text().trim_start_matches("\"").trim_end_matches("\""); | ||
77 | Some((key, SmolStr::new(val))) | ||
78 | } else { | ||
79 | None | ||
80 | } | ||
81 | } | ||
68 | } | 82 | } |
69 | 83 | ||
70 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] | 84 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] |
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index 17de4f058..fae371509 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs | |||
@@ -1325,6 +1325,7 @@ impl ToOwned for ImplBlock { | |||
1325 | 1325 | ||
1326 | 1326 | ||
1327 | impl ast::TypeParamsOwner for ImplBlock {} | 1327 | impl ast::TypeParamsOwner for ImplBlock {} |
1328 | impl ast::AttrsOwner for ImplBlock {} | ||
1328 | impl ImplBlock { | 1329 | impl ImplBlock { |
1329 | pub fn item_list(&self) -> Option<&ItemList> { | 1330 | pub fn item_list(&self) -> Option<&ItemList> { |
1330 | super::child_opt(self) | 1331 | super::child_opt(self) |
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index 663e3a2f9..5bdcf9c84 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron | |||
@@ -345,7 +345,7 @@ Grammar( | |||
345 | ], | 345 | ], |
346 | options: ["TypeRef"] | 346 | options: ["TypeRef"] |
347 | ), | 347 | ), |
348 | "ImplBlock": (options: ["ItemList"], traits: ["TypeParamsOwner"]), | 348 | "ImplBlock": (options: ["ItemList"], traits: ["TypeParamsOwner", "AttrsOwner"]), |
349 | 349 | ||
350 | "ParenType": (options: ["TypeRef"]), | 350 | "ParenType": (options: ["TypeRef"]), |
351 | "TupleType": ( collections: [["fields", "TypeRef"]] ), | 351 | "TupleType": ( collections: [["fields", "TypeRef"]] ), |
diff --git a/docs/dev/lsp-features.md b/docs/dev/lsp-features.md index 212d132ee..57015293c 100644 --- a/docs/dev/lsp-features.md +++ b/docs/dev/lsp-features.md | |||
@@ -52,8 +52,8 @@ This list documents LSP features, supported by rust-analyzer. | |||
52 | - [x] [textDocument/documentHighlight](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight) | 52 | - [x] [textDocument/documentHighlight](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight) |
53 | - [x] [textDocument/documentSymbol](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol) | 53 | - [x] [textDocument/documentSymbol](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol) |
54 | - [x] [textDocument/codeAction](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction) | 54 | - [x] [textDocument/codeAction](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction) |
55 | - [x] [textDocument/selectionRange](https://github.com/Microsoft/language-server-protocol/issues/613) | ||
55 | - rust-analyzer.syntaxTree | 56 | - rust-analyzer.syntaxTree |
56 | - rust-analyzer.extendSelection | ||
57 | - rust-analyzer.matchingBrace | 57 | - rust-analyzer.matchingBrace |
58 | - rust-analyzer.parentModule | 58 | - rust-analyzer.parentModule |
59 | - rust-analyzer.joinLines | 59 | - rust-analyzer.joinLines |
diff --git a/docs/user/features.md b/docs/user/features.md index 09a7f5a43..b44a3fce1 100644 --- a/docs/user/features.md +++ b/docs/user/features.md | |||
@@ -34,14 +34,15 @@ Some features trigger on typing certain characters: | |||
34 | - Enter inside comments automatically inserts `///` | 34 | - Enter inside comments automatically inserts `///` |
35 | - typing `.` in a chain method call auto-indents | 35 | - typing `.` in a chain method call auto-indents |
36 | 36 | ||
37 | ### Commands <kbd>ctrl+shift+p</kbd> | 37 | ### Extend Selection |
38 | |||
39 | #### Extend Selection | ||
40 | 38 | ||
41 | Extends the current selection to the encompassing syntactic construct | 39 | Extends the current selection to the encompassing syntactic construct |
42 | (expression, statement, item, module, etc). It works with multiple cursors. Do | 40 | (expression, statement, item, module, etc). It works with multiple cursors. This |
43 | bind this command to a key, it's super-useful! Expected to be upstreamed to LSP | 41 | is a relatively new feature of LSP: |
44 | soonish: https://github.com/Microsoft/language-server-protocol/issues/613 | 42 | https://github.com/Microsoft/language-server-protocol/issues/613, check your |
43 | editor's LSP library to see if this feature is supported. | ||
44 | |||
45 | ### Commands <kbd>ctrl+shift+p</kbd> | ||
45 | 46 | ||
46 | #### Run | 47 | #### Run |
47 | 48 | ||
@@ -76,6 +77,14 @@ Shows internal statistic about memory usage of rust-analyzer | |||
76 | 77 | ||
77 | Manually triggers GC | 78 | Manually triggers GC |
78 | 79 | ||
80 | #### Start Cargo Watch | ||
81 | |||
82 | Start `cargo watch` for live error highlighting. Will prompt to install if it's not already installed. | ||
83 | |||
84 | #### Stop Cargo Watch | ||
85 | |||
86 | Stop `cargo watch` | ||
87 | |||
79 | ### Code Actions (Assists) | 88 | ### Code Actions (Assists) |
80 | 89 | ||
81 | These are triggered in a particular context via light bulb. We use custom code on | 90 | These are triggered in a particular context via light bulb. We use custom code on |
diff --git a/editors/code/package-lock.json b/editors/code/package-lock.json index 008df6f52..29cd260a4 100644 --- a/editors/code/package-lock.json +++ b/editors/code/package-lock.json | |||
@@ -4,22 +4,51 @@ | |||
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
7 | "@babel/code-frame": { | ||
8 | "version": "7.0.0", | ||
9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", | ||
10 | "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", | ||
11 | "dev": true, | ||
12 | "requires": { | ||
13 | "@babel/highlight": "^7.0.0" | ||
14 | } | ||
15 | }, | ||
16 | "@babel/highlight": { | ||
17 | "version": "7.0.0", | ||
18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", | ||
19 | "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", | ||
20 | "dev": true, | ||
21 | "requires": { | ||
22 | "chalk": "^2.0.0", | ||
23 | "esutils": "^2.0.2", | ||
24 | "js-tokens": "^4.0.0" | ||
25 | } | ||
26 | }, | ||
7 | "@types/mocha": { | 27 | "@types/mocha": { |
8 | "version": "5.2.5", | 28 | "version": "5.2.6", |
9 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz", | 29 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.6.tgz", |
10 | "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", | 30 | "integrity": "sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==", |
11 | "dev": true | 31 | "dev": true |
12 | }, | 32 | }, |
13 | "@types/node": { | 33 | "@types/node": { |
14 | "version": "10.12.24", | 34 | "version": "10.14.5", |
15 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.24.tgz", | 35 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.5.tgz", |
16 | "integrity": "sha512-GWWbvt+z9G5otRBW8rssOFgRY87J9N/qbhqfjMZ+gUuL6zoL+Hm6gP/8qQBG4jjimqdaNLCehcVapZ/Fs2WjCQ==", | 36 | "integrity": "sha512-Ja7d4s0qyGFxjGeDq5S7Si25OFibSAHUi6i17UWnwNnpitADN7hah9q0Tl25gxuV5R1u2Bx+np6w4LHXfHyj/g==", |
17 | "dev": true | 37 | "dev": true |
18 | }, | 38 | }, |
39 | "agent-base": { | ||
40 | "version": "4.2.1", | ||
41 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", | ||
42 | "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", | ||
43 | "dev": true, | ||
44 | "requires": { | ||
45 | "es6-promisify": "^5.0.0" | ||
46 | } | ||
47 | }, | ||
19 | "ajv": { | 48 | "ajv": { |
20 | "version": "6.8.1", | 49 | "version": "6.10.0", |
21 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", | 50 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", |
22 | "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", | 51 | "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", |
23 | "dev": true, | 52 | "dev": true, |
24 | "requires": { | 53 | "requires": { |
25 | "fast-deep-equal": "^2.0.1", | 54 | "fast-deep-equal": "^2.0.1", |
@@ -28,49 +57,13 @@ | |||
28 | "uri-js": "^4.2.2" | 57 | "uri-js": "^4.2.2" |
29 | } | 58 | } |
30 | }, | 59 | }, |
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-regex": { | ||
50 | "version": "2.1.1", | ||
51 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", | ||
52 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", | ||
53 | "dev": true | ||
54 | }, | ||
55 | "ansi-styles": { | 60 | "ansi-styles": { |
56 | "version": "2.2.1", | 61 | "version": "3.2.1", |
57 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", | 62 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", |
58 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", | 63 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", |
59 | "dev": true | ||
60 | }, | ||
61 | "ansi-wrap": { | ||
62 | "version": "0.1.0", | ||
63 | "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", | ||
64 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", | ||
65 | "dev": true | ||
66 | }, | ||
67 | "append-buffer": { | ||
68 | "version": "1.0.2", | ||
69 | "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", | ||
70 | "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", | ||
71 | "dev": true, | 64 | "dev": true, |
72 | "requires": { | 65 | "requires": { |
73 | "buffer-equal": "^1.0.0" | 66 | "color-convert": "^1.9.0" |
74 | } | 67 | } |
75 | }, | 68 | }, |
76 | "argparse": { | 69 | "argparse": { |
@@ -82,61 +75,6 @@ | |||
82 | "sprintf-js": "~1.0.2" | 75 | "sprintf-js": "~1.0.2" |
83 | } | 76 | } |
84 | }, | 77 | }, |
85 | "arr-diff": { | ||
86 | "version": "1.1.0", | ||
87 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", | ||
88 | "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", | ||
89 | "dev": true, | ||
90 | "requires": { | ||
91 | "arr-flatten": "^1.0.1", | ||
92 | "array-slice": "^0.2.3" | ||
93 | } | ||
94 | }, | ||
95 | "arr-flatten": { | ||
96 | "version": "1.1.0", | ||
97 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", | ||
98 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", | ||
99 | "dev": true | ||
100 | }, | ||
101 | "arr-union": { | ||
102 | "version": "2.1.0", | ||
103 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", | ||
104 | "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", | ||
105 | "dev": true | ||
106 | }, | ||
107 | "array-differ": { | ||
108 | "version": "1.0.0", | ||
109 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", | ||
110 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", | ||
111 | "dev": true | ||
112 | }, | ||
113 | "array-slice": { | ||
114 | "version": "0.2.3", | ||
115 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", | ||
116 | "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", | ||
117 | "dev": true | ||
118 | }, | ||
119 | "array-union": { | ||
120 | "version": "1.0.2", | ||
121 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", | ||
122 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", | ||
123 | "dev": true, | ||
124 | "requires": { | ||
125 | "array-uniq": "^1.0.1" | ||
126 | } | ||
127 | }, | ||
128 | "array-uniq": { | ||
129 | "version": "1.0.3", | ||
130 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", | ||
131 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", | ||
132 | "dev": true | ||
133 | }, | ||
134 | "arrify": { | ||
135 | "version": "1.0.1", | ||
136 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", | ||
137 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", | ||
138 | "dev": true | ||
139 | }, | ||
140 | "asn1": { | 78 | "asn1": { |
141 | "version": "0.2.4", | 79 | "version": "0.2.4", |
142 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", | 80 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", |
@@ -170,32 +108,6 @@ | |||
170 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", | 108 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", |
171 | "dev": true | 109 | "dev": true |
172 | }, | 110 | }, |
173 | "babel-code-frame": { | ||
174 | "version": "6.26.0", | ||
175 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", | ||
176 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", | ||
177 | "dev": true, | ||
178 | "requires": { | ||
179 | "chalk": "^1.1.3", | ||
180 | "esutils": "^2.0.2", | ||
181 | "js-tokens": "^3.0.2" | ||
182 | }, | ||
183 | "dependencies": { | ||
184 | "chalk": { | ||
185 | "version": "1.1.3", | ||
186 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", | ||
187 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", | ||
188 | "dev": true, | ||
189 | "requires": { | ||
190 | "ansi-styles": "^2.2.1", | ||
191 | "escape-string-regexp": "^1.0.2", | ||
192 | "has-ansi": "^2.0.0", | ||
193 | "strip-ansi": "^3.0.0", | ||
194 | "supports-color": "^2.0.0" | ||
195 | } | ||
196 | } | ||
197 | } | ||
198 | }, | ||
199 | "balanced-match": { | 111 | "balanced-match": { |
200 | "version": "1.0.0", | 112 | "version": "1.0.0", |
201 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | 113 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
@@ -211,15 +123,6 @@ | |||
211 | "tweetnacl": "^0.14.3" | 123 | "tweetnacl": "^0.14.3" |
212 | } | 124 | } |
213 | }, | 125 | }, |
214 | "block-stream": { | ||
215 | "version": "0.0.9", | ||
216 | "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", | ||
217 | "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", | ||
218 | "dev": true, | ||
219 | "requires": { | ||
220 | "inherits": "~2.0.0" | ||
221 | } | ||
222 | }, | ||
223 | "boolbase": { | 126 | "boolbase": { |
224 | "version": "1.0.0", | 127 | "version": "1.0.0", |
225 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", | 128 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", |
@@ -248,12 +151,6 @@ | |||
248 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", | 151 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", |
249 | "dev": true | 152 | "dev": true |
250 | }, | 153 | }, |
251 | "buffer-equal": { | ||
252 | "version": "1.0.0", | ||
253 | "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", | ||
254 | "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", | ||
255 | "dev": true | ||
256 | }, | ||
257 | "buffer-from": { | 154 | "buffer-from": { |
258 | "version": "1.1.1", | 155 | "version": "1.1.1", |
259 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", | 156 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", |
@@ -281,97 +178,22 @@ | |||
281 | "ansi-styles": "^3.2.1", | 178 | "ansi-styles": "^3.2.1", |
282 | "escape-string-regexp": "^1.0.5", | 179 | "escape-string-regexp": "^1.0.5", |
283 | "supports-color": "^5.3.0" | 180 | "supports-color": "^5.3.0" |
284 | }, | ||
285 | "dependencies": { | ||
286 | "ansi-styles": { | ||
287 | "version": "3.2.1", | ||
288 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||
289 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||
290 | "dev": true, | ||
291 | "requires": { | ||
292 | "color-convert": "^1.9.0" | ||
293 | } | ||
294 | }, | ||
295 | "supports-color": { | ||
296 | "version": "5.5.0", | ||
297 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||
298 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||
299 | "dev": true, | ||
300 | "requires": { | ||
301 | "has-flag": "^3.0.0" | ||
302 | } | ||
303 | } | ||
304 | } | 181 | } |
305 | }, | 182 | }, |
306 | "cheerio": { | 183 | "cheerio": { |
307 | "version": "1.0.0-rc.2", | 184 | "version": "1.0.0-rc.3", |
308 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", | 185 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", |
309 | "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", | 186 | "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", |
310 | "dev": true, | 187 | "dev": true, |
311 | "requires": { | 188 | "requires": { |
312 | "css-select": "~1.2.0", | 189 | "css-select": "~1.2.0", |
313 | "dom-serializer": "~0.1.0", | 190 | "dom-serializer": "~0.1.1", |
314 | "entities": "~1.1.1", | 191 | "entities": "~1.1.1", |
315 | "htmlparser2": "^3.9.1", | 192 | "htmlparser2": "^3.9.1", |
316 | "lodash": "^4.15.0", | 193 | "lodash": "^4.15.0", |
317 | "parse5": "^3.0.1" | 194 | "parse5": "^3.0.1" |
318 | } | 195 | } |
319 | }, | 196 | }, |
320 | "clone": { | ||
321 | "version": "0.2.0", | ||
322 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", | ||
323 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", | ||
324 | "dev": true | ||
325 | }, | ||
326 | "clone-buffer": { | ||
327 | "version": "1.0.0", | ||
328 | "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", | ||
329 | "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", | ||
330 | "dev": true | ||
331 | }, | ||
332 | "clone-stats": { | ||
333 | "version": "0.0.1", | ||
334 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", | ||
335 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", | ||
336 | "dev": true | ||
337 | }, | ||
338 | "cloneable-readable": { | ||
339 | "version": "1.1.2", | ||
340 | "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", | ||
341 | "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", | ||
342 | "dev": true, | ||
343 | "requires": { | ||
344 | "inherits": "^2.0.1", | ||
345 | "process-nextick-args": "^2.0.0", | ||
346 | "readable-stream": "^2.3.5" | ||
347 | }, | ||
348 | "dependencies": { | ||
349 | "readable-stream": { | ||
350 | "version": "2.3.6", | ||
351 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
352 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
353 | "dev": true, | ||
354 | "requires": { | ||
355 | "core-util-is": "~1.0.0", | ||
356 | "inherits": "~2.0.3", | ||
357 | "isarray": "~1.0.0", | ||
358 | "process-nextick-args": "~2.0.0", | ||
359 | "safe-buffer": "~5.1.1", | ||
360 | "string_decoder": "~1.1.1", | ||
361 | "util-deprecate": "~1.0.1" | ||
362 | } | ||
363 | }, | ||
364 | "string_decoder": { | ||
365 | "version": "1.1.1", | ||
366 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
367 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
368 | "dev": true, | ||
369 | "requires": { | ||
370 | "safe-buffer": "~5.1.0" | ||
371 | } | ||
372 | } | ||
373 | } | ||
374 | }, | ||
375 | "color-convert": { | 197 | "color-convert": { |
376 | "version": "1.9.3", | 198 | "version": "1.9.3", |
377 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | 199 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", |
@@ -397,9 +219,9 @@ | |||
397 | } | 219 | } |
398 | }, | 220 | }, |
399 | "commander": { | 221 | "commander": { |
400 | "version": "2.19.0", | 222 | "version": "2.20.0", |
401 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", | 223 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", |
402 | "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", | 224 | "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", |
403 | "dev": true | 225 | "dev": true |
404 | }, | 226 | }, |
405 | "concat-map": { | 227 | "concat-map": { |
@@ -408,15 +230,6 @@ | |||
408 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", | 230 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |
409 | "dev": true | 231 | "dev": true |
410 | }, | 232 | }, |
411 | "convert-source-map": { | ||
412 | "version": "1.6.0", | ||
413 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", | ||
414 | "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", | ||
415 | "dev": true, | ||
416 | "requires": { | ||
417 | "safe-buffer": "~5.1.1" | ||
418 | } | ||
419 | }, | ||
420 | "core-util-is": { | 233 | "core-util-is": { |
421 | "version": "1.0.2", | 234 | "version": "1.0.2", |
422 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | 235 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", |
@@ -436,9 +249,9 @@ | |||
436 | } | 249 | } |
437 | }, | 250 | }, |
438 | "css-what": { | 251 | "css-what": { |
439 | "version": "2.1.2", | 252 | "version": "2.1.3", |
440 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", | 253 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", |
441 | "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", | 254 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", |
442 | "dev": true | 255 | "dev": true |
443 | }, | 256 | }, |
444 | "dashdash": { | 257 | "dashdash": { |
@@ -459,24 +272,6 @@ | |||
459 | "ms": "2.0.0" | 272 | "ms": "2.0.0" |
460 | } | 273 | } |
461 | }, | 274 | }, |
462 | "deep-assign": { | ||
463 | "version": "1.0.0", | ||
464 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-1.0.0.tgz", | ||
465 | "integrity": "sha1-sJJ0O+hCfcYh6gBnzex+cN0Z83s=", | ||
466 | "dev": true, | ||
467 | "requires": { | ||
468 | "is-obj": "^1.0.0" | ||
469 | } | ||
470 | }, | ||
471 | "define-properties": { | ||
472 | "version": "1.1.3", | ||
473 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", | ||
474 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", | ||
475 | "dev": true, | ||
476 | "requires": { | ||
477 | "object-keys": "^1.0.12" | ||
478 | } | ||
479 | }, | ||
480 | "delayed-stream": { | 275 | "delayed-stream": { |
481 | "version": "1.0.0", | 276 | "version": "1.0.0", |
482 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | 277 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |
@@ -496,21 +291,13 @@ | |||
496 | "dev": true | 291 | "dev": true |
497 | }, | 292 | }, |
498 | "dom-serializer": { | 293 | "dom-serializer": { |
499 | "version": "0.1.0", | 294 | "version": "0.1.1", |
500 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", | 295 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", |
501 | "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", | 296 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", |
502 | "dev": true, | 297 | "dev": true, |
503 | "requires": { | 298 | "requires": { |
504 | "domelementtype": "~1.1.1", | 299 | "domelementtype": "^1.3.0", |
505 | "entities": "~1.1.1" | 300 | "entities": "^1.1.1" |
506 | }, | ||
507 | "dependencies": { | ||
508 | "domelementtype": { | ||
509 | "version": "1.1.3", | ||
510 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", | ||
511 | "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", | ||
512 | "dev": true | ||
513 | } | ||
514 | } | 301 | } |
515 | }, | 302 | }, |
516 | "domelementtype": { | 303 | "domelementtype": { |
@@ -538,50 +325,6 @@ | |||
538 | "domelementtype": "1" | 325 | "domelementtype": "1" |
539 | } | 326 | } |
540 | }, | 327 | }, |
541 | "duplexer": { | ||
542 | "version": "0.1.1", | ||
543 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", | ||
544 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", | ||
545 | "dev": true | ||
546 | }, | ||
547 | "duplexify": { | ||
548 | "version": "3.7.1", | ||
549 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", | ||
550 | "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", | ||
551 | "dev": true, | ||
552 | "requires": { | ||
553 | "end-of-stream": "^1.0.0", | ||
554 | "inherits": "^2.0.1", | ||
555 | "readable-stream": "^2.0.0", | ||
556 | "stream-shift": "^1.0.0" | ||
557 | }, | ||
558 | "dependencies": { | ||
559 | "readable-stream": { | ||
560 | "version": "2.3.6", | ||
561 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
562 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
563 | "dev": true, | ||
564 | "requires": { | ||
565 | "core-util-is": "~1.0.0", | ||
566 | "inherits": "~2.0.3", | ||
567 | "isarray": "~1.0.0", | ||
568 | "process-nextick-args": "~2.0.0", | ||
569 | "safe-buffer": "~5.1.1", | ||
570 | "string_decoder": "~1.1.1", | ||
571 | "util-deprecate": "~1.0.1" | ||
572 | } | ||
573 | }, | ||
574 | "string_decoder": { | ||
575 | "version": "1.1.1", | ||
576 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
577 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
578 | "dev": true, | ||
579 | "requires": { | ||
580 | "safe-buffer": "~5.1.0" | ||
581 | } | ||
582 | } | ||
583 | } | ||
584 | }, | ||
585 | "ecc-jsbn": { | 328 | "ecc-jsbn": { |
586 | "version": "0.1.2", | 329 | "version": "0.1.2", |
587 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | 330 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", |
@@ -592,15 +335,6 @@ | |||
592 | "safer-buffer": "^2.1.0" | 335 | "safer-buffer": "^2.1.0" |
593 | } | 336 | } |
594 | }, | 337 | }, |
595 | "end-of-stream": { | ||
596 | "version": "1.4.1", | ||
597 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", | ||
598 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", | ||
599 | "dev": true, | ||
600 | "requires": { | ||
601 | "once": "^1.4.0" | ||
602 | } | ||
603 | }, | ||
604 | "entities": { | 338 | "entities": { |
605 | "version": "1.1.2", | 339 | "version": "1.1.2", |
606 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", | 340 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", |
@@ -613,6 +347,21 @@ | |||
613 | "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", | 347 | "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=", |
614 | "dev": true | 348 | "dev": true |
615 | }, | 349 | }, |
350 | "es6-promise": { | ||
351 | "version": "4.2.6", | ||
352 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", | ||
353 | "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", | ||
354 | "dev": true | ||
355 | }, | ||
356 | "es6-promisify": { | ||
357 | "version": "5.0.0", | ||
358 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", | ||
359 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", | ||
360 | "dev": true, | ||
361 | "requires": { | ||
362 | "es6-promise": "^4.0.3" | ||
363 | } | ||
364 | }, | ||
616 | "escape-string-regexp": { | 365 | "escape-string-regexp": { |
617 | "version": "1.0.5", | 366 | "version": "1.0.5", |
618 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | 367 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", |
@@ -631,36 +380,12 @@ | |||
631 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", | 380 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", |
632 | "dev": true | 381 | "dev": true |
633 | }, | 382 | }, |
634 | "event-stream": { | ||
635 | "version": "3.3.4", | ||
636 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", | ||
637 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", | ||
638 | "dev": true, | ||
639 | "requires": { | ||
640 | "duplexer": "~0.1.1", | ||
641 | "from": "~0", | ||
642 | "map-stream": "~0.1.0", | ||
643 | "pause-stream": "0.0.11", | ||
644 | "split": "0.3", | ||
645 | "stream-combiner": "~0.0.4", | ||
646 | "through": "~2.3.1" | ||
647 | } | ||
648 | }, | ||
649 | "extend": { | 383 | "extend": { |
650 | "version": "3.0.2", | 384 | "version": "3.0.2", |
651 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", | 385 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", |
652 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", | 386 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", |
653 | "dev": true | 387 | "dev": true |
654 | }, | 388 | }, |
655 | "extend-shallow": { | ||
656 | "version": "1.1.4", | ||
657 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", | ||
658 | "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", | ||
659 | "dev": true, | ||
660 | "requires": { | ||
661 | "kind-of": "^1.1.0" | ||
662 | } | ||
663 | }, | ||
664 | "extsprintf": { | 389 | "extsprintf": { |
665 | "version": "1.3.0", | 390 | "version": "1.3.0", |
666 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", | 391 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", |
@@ -688,16 +413,6 @@ | |||
688 | "pend": "~1.2.0" | 413 | "pend": "~1.2.0" |
689 | } | 414 | } |
690 | }, | 415 | }, |
691 | "flush-write-stream": { | ||
692 | "version": "1.1.0", | ||
693 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.0.tgz", | ||
694 | "integrity": "sha512-6MHED/cmsyux1G4/Cek2Z776y9t7WCNd3h2h/HW91vFeU7pzMhA8XvAlDhHcanG5IWuIh/xcC7JASY4WQpG6xg==", | ||
695 | "dev": true, | ||
696 | "requires": { | ||
697 | "inherits": "^2.0.3", | ||
698 | "readable-stream": "^3.1.1" | ||
699 | } | ||
700 | }, | ||
701 | "forever-agent": { | 416 | "forever-agent": { |
702 | "version": "0.6.1", | 417 | "version": "0.6.1", |
703 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | 418 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", |
@@ -715,46 +430,12 @@ | |||
715 | "mime-types": "^2.1.12" | 430 | "mime-types": "^2.1.12" |
716 | } | 431 | } |
717 | }, | 432 | }, |
718 | "from": { | ||
719 | "version": "0.1.7", | ||
720 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", | ||
721 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", | ||
722 | "dev": true | ||
723 | }, | ||
724 | "fs-mkdirp-stream": { | ||
725 | "version": "1.0.0", | ||
726 | "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", | ||
727 | "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", | ||
728 | "dev": true, | ||
729 | "requires": { | ||
730 | "graceful-fs": "^4.1.11", | ||
731 | "through2": "^2.0.3" | ||
732 | } | ||
733 | }, | ||
734 | "fs.realpath": { | 433 | "fs.realpath": { |
735 | "version": "1.0.0", | 434 | "version": "1.0.0", |
736 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | 435 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
737 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", | 436 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", |
738 | "dev": true | 437 | "dev": true |
739 | }, | 438 | }, |
740 | "fstream": { | ||
741 | "version": "1.0.11", | ||
742 | "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", | ||
743 | "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", | ||
744 | "dev": true, | ||
745 | "requires": { | ||
746 | "graceful-fs": "^4.1.2", | ||
747 | "inherits": "~2.0.0", | ||
748 | "mkdirp": ">=0.5 0", | ||
749 | "rimraf": "2" | ||
750 | } | ||
751 | }, | ||
752 | "function-bind": { | ||
753 | "version": "1.1.1", | ||
754 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", | ||
755 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", | ||
756 | "dev": true | ||
757 | }, | ||
758 | "getpass": { | 439 | "getpass": { |
759 | "version": "0.1.7", | 440 | "version": "0.1.7", |
760 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", | 441 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", |
@@ -778,262 +459,12 @@ | |||
778 | "path-is-absolute": "^1.0.0" | 459 | "path-is-absolute": "^1.0.0" |
779 | } | 460 | } |
780 | }, | 461 | }, |
781 | "glob-parent": { | ||
782 | "version": "3.1.0", | ||
783 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", | ||
784 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", | ||
785 | "dev": true, | ||
786 | "requires": { | ||
787 | "is-glob": "^3.1.0", | ||
788 | "path-dirname": "^1.0.0" | ||
789 | } | ||
790 | }, | ||
791 | "glob-stream": { | ||
792 | "version": "6.1.0", | ||
793 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", | ||
794 | "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", | ||
795 | "dev": true, | ||
796 | "requires": { | ||
797 | "extend": "^3.0.0", | ||
798 | "glob": "^7.1.1", | ||
799 | "glob-parent": "^3.1.0", | ||
800 | "is-negated-glob": "^1.0.0", | ||
801 | "ordered-read-streams": "^1.0.0", | ||
802 | "pumpify": "^1.3.5", | ||
803 | "readable-stream": "^2.1.5", | ||
804 | "remove-trailing-separator": "^1.0.1", | ||
805 | "to-absolute-glob": "^2.0.0", | ||
806 | "unique-stream": "^2.0.2" | ||
807 | }, | ||
808 | "dependencies": { | ||
809 | "readable-stream": { | ||
810 | "version": "2.3.6", | ||
811 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
812 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
813 | "dev": true, | ||
814 | "requires": { | ||
815 | "core-util-is": "~1.0.0", | ||
816 | "inherits": "~2.0.3", | ||
817 | "isarray": "~1.0.0", | ||
818 | "process-nextick-args": "~2.0.0", | ||
819 | "safe-buffer": "~5.1.1", | ||
820 | "string_decoder": "~1.1.1", | ||
821 | "util-deprecate": "~1.0.1" | ||
822 | } | ||
823 | }, | ||
824 | "string_decoder": { | ||
825 | "version": "1.1.1", | ||
826 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
827 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
828 | "dev": true, | ||
829 | "requires": { | ||
830 | "safe-buffer": "~5.1.0" | ||
831 | } | ||
832 | } | ||
833 | } | ||
834 | }, | ||
835 | "graceful-fs": { | ||
836 | "version": "4.1.15", | ||
837 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", | ||
838 | "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", | ||
839 | "dev": true | ||
840 | }, | ||
841 | "growl": { | 462 | "growl": { |
842 | "version": "1.10.3", | 463 | "version": "1.10.3", |
843 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", | 464 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", |
844 | "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", | 465 | "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", |
845 | "dev": true | 466 | "dev": true |
846 | }, | 467 | }, |
847 | "gulp-chmod": { | ||
848 | "version": "2.0.0", | ||
849 | "resolved": "https://registry.npmjs.org/gulp-chmod/-/gulp-chmod-2.0.0.tgz", | ||
850 | "integrity": "sha1-AMOQuSigeZslGsz2MaoJ4BzGKZw=", | ||
851 | "dev": true, | ||
852 | "requires": { | ||
853 | "deep-assign": "^1.0.0", | ||
854 | "stat-mode": "^0.2.0", | ||
855 | "through2": "^2.0.0" | ||
856 | } | ||
857 | }, | ||
858 | "gulp-filter": { | ||
859 | "version": "5.1.0", | ||
860 | "resolved": "https://registry.npmjs.org/gulp-filter/-/gulp-filter-5.1.0.tgz", | ||
861 | "integrity": "sha1-oF4Rr/sHz33PQafeHLe2OsN4PnM=", | ||
862 | "dev": true, | ||
863 | "requires": { | ||
864 | "multimatch": "^2.0.0", | ||
865 | "plugin-error": "^0.1.2", | ||
866 | "streamfilter": "^1.0.5" | ||
867 | } | ||
868 | }, | ||
869 | "gulp-gunzip": { | ||
870 | "version": "1.0.0", | ||
871 | "resolved": "https://registry.npmjs.org/gulp-gunzip/-/gulp-gunzip-1.0.0.tgz", | ||
872 | "integrity": "sha1-FbdBFF6Dqcb1CIYkG1fMWHHxUak=", | ||
873 | "dev": true, | ||
874 | "requires": { | ||
875 | "through2": "~0.6.5", | ||
876 | "vinyl": "~0.4.6" | ||
877 | }, | ||
878 | "dependencies": { | ||
879 | "isarray": { | ||
880 | "version": "0.0.1", | ||
881 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", | ||
882 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", | ||
883 | "dev": true | ||
884 | }, | ||
885 | "readable-stream": { | ||
886 | "version": "1.0.34", | ||
887 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", | ||
888 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", | ||
889 | "dev": true, | ||
890 | "requires": { | ||
891 | "core-util-is": "~1.0.0", | ||
892 | "inherits": "~2.0.1", | ||
893 | "isarray": "0.0.1", | ||
894 | "string_decoder": "~0.10.x" | ||
895 | } | ||
896 | }, | ||
897 | "string_decoder": { | ||
898 | "version": "0.10.31", | ||
899 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", | ||
900 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", | ||
901 | "dev": true | ||
902 | }, | ||
903 | "through2": { | ||
904 | "version": "0.6.5", | ||
905 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", | ||
906 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", | ||
907 | "dev": true, | ||
908 | "requires": { | ||
909 | "readable-stream": ">=1.0.33-1 <1.1.0-0", | ||
910 | "xtend": ">=4.0.0 <4.1.0-0" | ||
911 | } | ||
912 | } | ||
913 | } | ||
914 | }, | ||
915 | "gulp-remote-src-vscode": { | ||
916 | "version": "0.5.1", | ||
917 | "resolved": "https://registry.npmjs.org/gulp-remote-src-vscode/-/gulp-remote-src-vscode-0.5.1.tgz", | ||
918 | "integrity": "sha512-mw4OGjtC/jlCWJFhbcAlel4YPvccChlpsl3JceNiB/DLJi24/UPxXt53/N26lgI3dknEqd4ErfdHrO8sJ5bATQ==", | ||
919 | "dev": true, | ||
920 | "requires": { | ||
921 | "event-stream": "3.3.4", | ||
922 | "node.extend": "^1.1.2", | ||
923 | "request": "^2.79.0", | ||
924 | "through2": "^2.0.3", | ||
925 | "vinyl": "^2.0.1" | ||
926 | }, | ||
927 | "dependencies": { | ||
928 | "clone": { | ||
929 | "version": "2.1.2", | ||
930 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", | ||
931 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", | ||
932 | "dev": true | ||
933 | }, | ||
934 | "clone-stats": { | ||
935 | "version": "1.0.0", | ||
936 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", | ||
937 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", | ||
938 | "dev": true | ||
939 | }, | ||
940 | "vinyl": { | ||
941 | "version": "2.2.0", | ||
942 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", | ||
943 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", | ||
944 | "dev": true, | ||
945 | "requires": { | ||
946 | "clone": "^2.1.1", | ||
947 | "clone-buffer": "^1.0.0", | ||
948 | "clone-stats": "^1.0.0", | ||
949 | "cloneable-readable": "^1.0.0", | ||
950 | "remove-trailing-separator": "^1.0.1", | ||
951 | "replace-ext": "^1.0.0" | ||
952 | } | ||
953 | } | ||
954 | } | ||
955 | }, | ||
956 | "gulp-untar": { | ||
957 | "version": "0.0.7", | ||
958 | "resolved": "https://registry.npmjs.org/gulp-untar/-/gulp-untar-0.0.7.tgz", | ||
959 | "integrity": "sha512-0QfbCH2a1k2qkTLWPqTX+QO4qNsHn3kC546YhAP3/n0h+nvtyGITDuDrYBMDZeW4WnFijmkOvBWa5HshTic1tw==", | ||
960 | "dev": true, | ||
961 | "requires": { | ||
962 | "event-stream": "~3.3.4", | ||
963 | "streamifier": "~0.1.1", | ||
964 | "tar": "^2.2.1", | ||
965 | "through2": "~2.0.3", | ||
966 | "vinyl": "^1.2.0" | ||
967 | }, | ||
968 | "dependencies": { | ||
969 | "clone": { | ||
970 | "version": "1.0.4", | ||
971 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", | ||
972 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", | ||
973 | "dev": true | ||
974 | }, | ||
975 | "replace-ext": { | ||
976 | "version": "0.0.1", | ||
977 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", | ||
978 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", | ||
979 | "dev": true | ||
980 | }, | ||
981 | "vinyl": { | ||
982 | "version": "1.2.0", | ||
983 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", | ||
984 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", | ||
985 | "dev": true, | ||
986 | "requires": { | ||
987 | "clone": "^1.0.0", | ||
988 | "clone-stats": "^0.0.1", | ||
989 | "replace-ext": "0.0.1" | ||
990 | } | ||
991 | } | ||
992 | } | ||
993 | }, | ||
994 | "gulp-vinyl-zip": { | ||
995 | "version": "2.1.2", | ||
996 | "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.2.tgz", | ||
997 | "integrity": "sha512-wJn09jsb8PyvUeyFF7y7ImEJqJwYy40BqL9GKfJs6UGpaGW9A+N68Q+ajsIpb9AeR6lAdjMbIdDPclIGo1/b7Q==", | ||
998 | "dev": true, | ||
999 | "requires": { | ||
1000 | "event-stream": "3.3.4", | ||
1001 | "queue": "^4.2.1", | ||
1002 | "through2": "^2.0.3", | ||
1003 | "vinyl": "^2.0.2", | ||
1004 | "vinyl-fs": "^3.0.3", | ||
1005 | "yauzl": "^2.2.1", | ||
1006 | "yazl": "^2.2.1" | ||
1007 | }, | ||
1008 | "dependencies": { | ||
1009 | "clone": { | ||
1010 | "version": "2.1.2", | ||
1011 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", | ||
1012 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", | ||
1013 | "dev": true | ||
1014 | }, | ||
1015 | "clone-stats": { | ||
1016 | "version": "1.0.0", | ||
1017 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", | ||
1018 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", | ||
1019 | "dev": true | ||
1020 | }, | ||
1021 | "vinyl": { | ||
1022 | "version": "2.2.0", | ||
1023 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", | ||
1024 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", | ||
1025 | "dev": true, | ||
1026 | "requires": { | ||
1027 | "clone": "^2.1.1", | ||
1028 | "clone-buffer": "^1.0.0", | ||
1029 | "clone-stats": "^1.0.0", | ||
1030 | "cloneable-readable": "^1.0.0", | ||
1031 | "remove-trailing-separator": "^1.0.1", | ||
1032 | "replace-ext": "^1.0.0" | ||
1033 | } | ||
1034 | } | ||
1035 | } | ||
1036 | }, | ||
1037 | "har-schema": { | 468 | "har-schema": { |
1038 | "version": "2.0.0", | 469 | "version": "2.0.0", |
1039 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", | 470 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", |
@@ -1050,36 +481,12 @@ | |||
1050 | "har-schema": "^2.0.0" | 481 | "har-schema": "^2.0.0" |
1051 | } | 482 | } |
1052 | }, | 483 | }, |
1053 | "has": { | ||
1054 | "version": "1.0.3", | ||
1055 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", | ||
1056 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", | ||
1057 | "dev": true, | ||
1058 | "requires": { | ||
1059 | "function-bind": "^1.1.1" | ||
1060 | } | ||
1061 | }, | ||
1062 | "has-ansi": { | ||
1063 | "version": "2.0.0", | ||
1064 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", | ||
1065 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", | ||
1066 | "dev": true, | ||
1067 | "requires": { | ||
1068 | "ansi-regex": "^2.0.0" | ||
1069 | } | ||
1070 | }, | ||
1071 | "has-flag": { | 484 | "has-flag": { |
1072 | "version": "3.0.0", | 485 | "version": "3.0.0", |
1073 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | 486 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |
1074 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", | 487 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", |
1075 | "dev": true | 488 | "dev": true |
1076 | }, | 489 | }, |
1077 | "has-symbols": { | ||
1078 | "version": "1.0.0", | ||
1079 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", | ||
1080 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", | ||
1081 | "dev": true | ||
1082 | }, | ||
1083 | "he": { | 490 | "he": { |
1084 | "version": "1.1.1", | 491 | "version": "1.1.1", |
1085 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", | 492 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", |
@@ -1087,17 +494,27 @@ | |||
1087 | "dev": true | 494 | "dev": true |
1088 | }, | 495 | }, |
1089 | "htmlparser2": { | 496 | "htmlparser2": { |
1090 | "version": "3.10.0", | 497 | "version": "3.10.1", |
1091 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", | 498 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", |
1092 | "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", | 499 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", |
1093 | "dev": true, | 500 | "dev": true, |
1094 | "requires": { | 501 | "requires": { |
1095 | "domelementtype": "^1.3.0", | 502 | "domelementtype": "^1.3.1", |
1096 | "domhandler": "^2.3.0", | 503 | "domhandler": "^2.3.0", |
1097 | "domutils": "^1.5.1", | 504 | "domutils": "^1.5.1", |
1098 | "entities": "^1.1.1", | 505 | "entities": "^1.1.1", |
1099 | "inherits": "^2.0.1", | 506 | "inherits": "^2.0.1", |
1100 | "readable-stream": "^3.0.6" | 507 | "readable-stream": "^3.1.1" |
508 | } | ||
509 | }, | ||
510 | "http-proxy-agent": { | ||
511 | "version": "2.1.0", | ||
512 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", | ||
513 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", | ||
514 | "dev": true, | ||
515 | "requires": { | ||
516 | "agent-base": "4", | ||
517 | "debug": "3.1.0" | ||
1101 | } | 518 | } |
1102 | }, | 519 | }, |
1103 | "http-signature": { | 520 | "http-signature": { |
@@ -1111,6 +528,16 @@ | |||
1111 | "sshpk": "^1.7.0" | 528 | "sshpk": "^1.7.0" |
1112 | } | 529 | } |
1113 | }, | 530 | }, |
531 | "https-proxy-agent": { | ||
532 | "version": "2.2.1", | ||
533 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", | ||
534 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", | ||
535 | "dev": true, | ||
536 | "requires": { | ||
537 | "agent-base": "^4.1.0", | ||
538 | "debug": "^3.1.0" | ||
539 | } | ||
540 | }, | ||
1114 | "inflight": { | 541 | "inflight": { |
1115 | "version": "1.0.6", | 542 | "version": "1.0.6", |
1116 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | 543 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
@@ -1133,103 +560,12 @@ | |||
1133 | "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", | 560 | "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", |
1134 | "dev": true | 561 | "dev": true |
1135 | }, | 562 | }, |
1136 | "is": { | ||
1137 | "version": "3.3.0", | ||
1138 | "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", | ||
1139 | "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", | ||
1140 | "dev": true | ||
1141 | }, | ||
1142 | "is-absolute": { | ||
1143 | "version": "1.0.0", | ||
1144 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", | ||
1145 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", | ||
1146 | "dev": true, | ||
1147 | "requires": { | ||
1148 | "is-relative": "^1.0.0", | ||
1149 | "is-windows": "^1.0.1" | ||
1150 | } | ||
1151 | }, | ||
1152 | "is-buffer": { | ||
1153 | "version": "1.1.6", | ||
1154 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", | ||
1155 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", | ||
1156 | "dev": true | ||
1157 | }, | ||
1158 | "is-extglob": { | ||
1159 | "version": "2.1.1", | ||
1160 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | ||
1161 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", | ||
1162 | "dev": true | ||
1163 | }, | ||
1164 | "is-glob": { | ||
1165 | "version": "3.1.0", | ||
1166 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", | ||
1167 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", | ||
1168 | "dev": true, | ||
1169 | "requires": { | ||
1170 | "is-extglob": "^2.1.0" | ||
1171 | } | ||
1172 | }, | ||
1173 | "is-negated-glob": { | ||
1174 | "version": "1.0.0", | ||
1175 | "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", | ||
1176 | "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", | ||
1177 | "dev": true | ||
1178 | }, | ||
1179 | "is-obj": { | ||
1180 | "version": "1.0.1", | ||
1181 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", | ||
1182 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", | ||
1183 | "dev": true | ||
1184 | }, | ||
1185 | "is-relative": { | ||
1186 | "version": "1.0.0", | ||
1187 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", | ||
1188 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", | ||
1189 | "dev": true, | ||
1190 | "requires": { | ||
1191 | "is-unc-path": "^1.0.0" | ||
1192 | } | ||
1193 | }, | ||
1194 | "is-typedarray": { | 563 | "is-typedarray": { |
1195 | "version": "1.0.0", | 564 | "version": "1.0.0", |
1196 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", | 565 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", |
1197 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", | 566 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", |
1198 | "dev": true | 567 | "dev": true |
1199 | }, | 568 | }, |
1200 | "is-unc-path": { | ||
1201 | "version": "1.0.0", | ||
1202 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", | ||
1203 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", | ||
1204 | "dev": true, | ||
1205 | "requires": { | ||
1206 | "unc-path-regex": "^0.1.2" | ||
1207 | } | ||
1208 | }, | ||
1209 | "is-utf8": { | ||
1210 | "version": "0.2.1", | ||
1211 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", | ||
1212 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", | ||
1213 | "dev": true | ||
1214 | }, | ||
1215 | "is-valid-glob": { | ||
1216 | "version": "1.0.0", | ||
1217 | "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", | ||
1218 | "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", | ||
1219 | "dev": true | ||
1220 | }, | ||
1221 | "is-windows": { | ||
1222 | "version": "1.0.2", | ||
1223 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", | ||
1224 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", | ||
1225 | "dev": true | ||
1226 | }, | ||
1227 | "isarray": { | ||
1228 | "version": "1.0.0", | ||
1229 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
1230 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", | ||
1231 | "dev": true | ||
1232 | }, | ||
1233 | "isstream": { | 569 | "isstream": { |
1234 | "version": "0.1.2", | 570 | "version": "0.1.2", |
1235 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", | 571 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", |
@@ -1237,15 +573,15 @@ | |||
1237 | "dev": true | 573 | "dev": true |
1238 | }, | 574 | }, |
1239 | "js-tokens": { | 575 | "js-tokens": { |
1240 | "version": "3.0.2", | 576 | "version": "4.0.0", |
1241 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", | 577 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", |
1242 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", | 578 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", |
1243 | "dev": true | 579 | "dev": true |
1244 | }, | 580 | }, |
1245 | "js-yaml": { | 581 | "js-yaml": { |
1246 | "version": "3.12.1", | 582 | "version": "3.13.1", |
1247 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", | 583 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", |
1248 | "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", | 584 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", |
1249 | "dev": true, | 585 | "dev": true, |
1250 | "requires": { | 586 | "requires": { |
1251 | "argparse": "^1.0.7", | 587 | "argparse": "^1.0.7", |
@@ -1270,12 +606,6 @@ | |||
1270 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", | 606 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", |
1271 | "dev": true | 607 | "dev": true |
1272 | }, | 608 | }, |
1273 | "json-stable-stringify-without-jsonify": { | ||
1274 | "version": "1.0.1", | ||
1275 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", | ||
1276 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", | ||
1277 | "dev": true | ||
1278 | }, | ||
1279 | "json-stringify-safe": { | 609 | "json-stringify-safe": { |
1280 | "version": "5.0.1", | 610 | "version": "5.0.1", |
1281 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", | 611 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", |
@@ -1294,56 +624,6 @@ | |||
1294 | "verror": "1.10.0" | 624 | "verror": "1.10.0" |
1295 | } | 625 | } |
1296 | }, | 626 | }, |
1297 | "kind-of": { | ||
1298 | "version": "1.1.0", | ||
1299 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", | ||
1300 | "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", | ||
1301 | "dev": true | ||
1302 | }, | ||
1303 | "lazystream": { | ||
1304 | "version": "1.0.0", | ||
1305 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", | ||
1306 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", | ||
1307 | "dev": true, | ||
1308 | "requires": { | ||
1309 | "readable-stream": "^2.0.5" | ||
1310 | }, | ||
1311 | "dependencies": { | ||
1312 | "readable-stream": { | ||
1313 | "version": "2.3.6", | ||
1314 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
1315 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
1316 | "dev": true, | ||
1317 | "requires": { | ||
1318 | "core-util-is": "~1.0.0", | ||
1319 | "inherits": "~2.0.3", | ||
1320 | "isarray": "~1.0.0", | ||
1321 | "process-nextick-args": "~2.0.0", | ||
1322 | "safe-buffer": "~5.1.1", | ||
1323 | "string_decoder": "~1.1.1", | ||
1324 | "util-deprecate": "~1.0.1" | ||
1325 | } | ||
1326 | }, | ||
1327 | "string_decoder": { | ||
1328 | "version": "1.1.1", | ||
1329 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
1330 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
1331 | "dev": true, | ||
1332 | "requires": { | ||
1333 | "safe-buffer": "~5.1.0" | ||
1334 | } | ||
1335 | } | ||
1336 | } | ||
1337 | }, | ||
1338 | "lead": { | ||
1339 | "version": "1.0.0", | ||
1340 | "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", | ||
1341 | "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", | ||
1342 | "dev": true, | ||
1343 | "requires": { | ||
1344 | "flush-write-stream": "^1.0.2" | ||
1345 | } | ||
1346 | }, | ||
1347 | "linkify-it": { | 627 | "linkify-it": { |
1348 | "version": "2.1.0", | 628 | "version": "2.1.0", |
1349 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", | 629 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", |
@@ -1359,12 +639,6 @@ | |||
1359 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", | 639 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", |
1360 | "dev": true | 640 | "dev": true |
1361 | }, | 641 | }, |
1362 | "map-stream": { | ||
1363 | "version": "0.1.0", | ||
1364 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", | ||
1365 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", | ||
1366 | "dev": true | ||
1367 | }, | ||
1368 | "markdown-it": { | 642 | "markdown-it": { |
1369 | "version": "8.4.2", | 643 | "version": "8.4.2", |
1370 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", | 644 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", |
@@ -1391,18 +665,18 @@ | |||
1391 | "dev": true | 665 | "dev": true |
1392 | }, | 666 | }, |
1393 | "mime-db": { | 667 | "mime-db": { |
1394 | "version": "1.37.0", | 668 | "version": "1.40.0", |
1395 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", | 669 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", |
1396 | "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", | 670 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", |
1397 | "dev": true | 671 | "dev": true |
1398 | }, | 672 | }, |
1399 | "mime-types": { | 673 | "mime-types": { |
1400 | "version": "2.1.21", | 674 | "version": "2.1.24", |
1401 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", | 675 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", |
1402 | "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", | 676 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", |
1403 | "dev": true, | 677 | "dev": true, |
1404 | "requires": { | 678 | "requires": { |
1405 | "mime-db": "~1.37.0" | 679 | "mime-db": "1.40.0" |
1406 | } | 680 | } |
1407 | }, | 681 | }, |
1408 | "minimatch": { | 682 | "minimatch": { |
@@ -1496,52 +770,12 @@ | |||
1496 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", | 770 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", |
1497 | "dev": true | 771 | "dev": true |
1498 | }, | 772 | }, |
1499 | "multimatch": { | ||
1500 | "version": "2.1.0", | ||
1501 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", | ||
1502 | "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", | ||
1503 | "dev": true, | ||
1504 | "requires": { | ||
1505 | "array-differ": "^1.0.0", | ||
1506 | "array-union": "^1.0.1", | ||
1507 | "arrify": "^1.0.0", | ||
1508 | "minimatch": "^3.0.0" | ||
1509 | } | ||
1510 | }, | ||
1511 | "mute-stream": { | 773 | "mute-stream": { |
1512 | "version": "0.0.8", | 774 | "version": "0.0.8", |
1513 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", | 775 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", |
1514 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", | 776 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", |
1515 | "dev": true | 777 | "dev": true |
1516 | }, | 778 | }, |
1517 | "node.extend": { | ||
1518 | "version": "1.1.8", | ||
1519 | "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", | ||
1520 | "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", | ||
1521 | "dev": true, | ||
1522 | "requires": { | ||
1523 | "has": "^1.0.3", | ||
1524 | "is": "^3.2.1" | ||
1525 | } | ||
1526 | }, | ||
1527 | "normalize-path": { | ||
1528 | "version": "2.1.1", | ||
1529 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", | ||
1530 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", | ||
1531 | "dev": true, | ||
1532 | "requires": { | ||
1533 | "remove-trailing-separator": "^1.0.1" | ||
1534 | } | ||
1535 | }, | ||
1536 | "now-and-later": { | ||
1537 | "version": "2.0.0", | ||
1538 | "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", | ||
1539 | "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", | ||
1540 | "dev": true, | ||
1541 | "requires": { | ||
1542 | "once": "^1.3.2" | ||
1543 | } | ||
1544 | }, | ||
1545 | "nth-check": { | 779 | "nth-check": { |
1546 | "version": "1.0.2", | 780 | "version": "1.0.2", |
1547 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", | 781 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", |
@@ -1557,24 +791,6 @@ | |||
1557 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", | 791 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", |
1558 | "dev": true | 792 | "dev": true |
1559 | }, | 793 | }, |
1560 | "object-keys": { | ||
1561 | "version": "1.0.12", | ||
1562 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", | ||
1563 | "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", | ||
1564 | "dev": true | ||
1565 | }, | ||
1566 | "object.assign": { | ||
1567 | "version": "4.1.0", | ||
1568 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", | ||
1569 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", | ||
1570 | "dev": true, | ||
1571 | "requires": { | ||
1572 | "define-properties": "^1.1.2", | ||
1573 | "function-bind": "^1.1.1", | ||
1574 | "has-symbols": "^1.0.0", | ||
1575 | "object-keys": "^1.0.11" | ||
1576 | } | ||
1577 | }, | ||
1578 | "once": { | 794 | "once": { |
1579 | "version": "1.4.0", | 795 | "version": "1.4.0", |
1580 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | 796 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
@@ -1584,41 +800,6 @@ | |||
1584 | "wrappy": "1" | 800 | "wrappy": "1" |
1585 | } | 801 | } |
1586 | }, | 802 | }, |
1587 | "ordered-read-streams": { | ||
1588 | "version": "1.0.1", | ||
1589 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", | ||
1590 | "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", | ||
1591 | "dev": true, | ||
1592 | "requires": { | ||
1593 | "readable-stream": "^2.0.1" | ||
1594 | }, | ||
1595 | "dependencies": { | ||
1596 | "readable-stream": { | ||
1597 | "version": "2.3.6", | ||
1598 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
1599 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
1600 | "dev": true, | ||
1601 | "requires": { | ||
1602 | "core-util-is": "~1.0.0", | ||
1603 | "inherits": "~2.0.3", | ||
1604 | "isarray": "~1.0.0", | ||
1605 | "process-nextick-args": "~2.0.0", | ||
1606 | "safe-buffer": "~5.1.1", | ||
1607 | "string_decoder": "~1.1.1", | ||
1608 | "util-deprecate": "~1.0.1" | ||
1609 | } | ||
1610 | }, | ||
1611 | "string_decoder": { | ||
1612 | "version": "1.1.1", | ||
1613 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
1614 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
1615 | "dev": true, | ||
1616 | "requires": { | ||
1617 | "safe-buffer": "~5.1.0" | ||
1618 | } | ||
1619 | } | ||
1620 | } | ||
1621 | }, | ||
1622 | "os-homedir": { | 803 | "os-homedir": { |
1623 | "version": "1.0.2", | 804 | "version": "1.0.2", |
1624 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", | 805 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", |
@@ -1659,12 +840,6 @@ | |||
1659 | "@types/node": "*" | 840 | "@types/node": "*" |
1660 | } | 841 | } |
1661 | }, | 842 | }, |
1662 | "path-dirname": { | ||
1663 | "version": "1.0.2", | ||
1664 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", | ||
1665 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", | ||
1666 | "dev": true | ||
1667 | }, | ||
1668 | "path-is-absolute": { | 843 | "path-is-absolute": { |
1669 | "version": "1.0.1", | 844 | "version": "1.0.1", |
1670 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", | 845 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |
@@ -1677,15 +852,6 @@ | |||
1677 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", | 852 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", |
1678 | "dev": true | 853 | "dev": true |
1679 | }, | 854 | }, |
1680 | "pause-stream": { | ||
1681 | "version": "0.0.11", | ||
1682 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", | ||
1683 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", | ||
1684 | "dev": true, | ||
1685 | "requires": { | ||
1686 | "through": "~2.3" | ||
1687 | } | ||
1688 | }, | ||
1689 | "pend": { | 855 | "pend": { |
1690 | "version": "1.2.0", | 856 | "version": "1.2.0", |
1691 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", | 857 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", |
@@ -1698,29 +864,10 @@ | |||
1698 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", | 864 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", |
1699 | "dev": true | 865 | "dev": true |
1700 | }, | 866 | }, |
1701 | "plugin-error": { | ||
1702 | "version": "0.1.2", | ||
1703 | "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", | ||
1704 | "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", | ||
1705 | "dev": true, | ||
1706 | "requires": { | ||
1707 | "ansi-cyan": "^0.1.1", | ||
1708 | "ansi-red": "^0.1.1", | ||
1709 | "arr-diff": "^1.0.1", | ||
1710 | "arr-union": "^2.0.1", | ||
1711 | "extend-shallow": "^1.1.2" | ||
1712 | } | ||
1713 | }, | ||
1714 | "prettier": { | 867 | "prettier": { |
1715 | "version": "1.16.4", | 868 | "version": "1.17.0", |
1716 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.4.tgz", | 869 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", |
1717 | "integrity": "sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==", | 870 | "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", |
1718 | "dev": true | ||
1719 | }, | ||
1720 | "process-nextick-args": { | ||
1721 | "version": "2.0.0", | ||
1722 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", | ||
1723 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", | ||
1724 | "dev": true | 871 | "dev": true |
1725 | }, | 872 | }, |
1726 | "psl": { | 873 | "psl": { |
@@ -1729,27 +876,6 @@ | |||
1729 | "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", | 876 | "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", |
1730 | "dev": true | 877 | "dev": true |
1731 | }, | 878 | }, |
1732 | "pump": { | ||
1733 | "version": "2.0.1", | ||
1734 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", | ||
1735 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", | ||
1736 | "dev": true, | ||
1737 | "requires": { | ||
1738 | "end-of-stream": "^1.1.0", | ||
1739 | "once": "^1.3.1" | ||
1740 | } | ||
1741 | }, | ||
1742 | "pumpify": { | ||
1743 | "version": "1.5.1", | ||
1744 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", | ||
1745 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", | ||
1746 | "dev": true, | ||
1747 | "requires": { | ||
1748 | "duplexify": "^3.6.0", | ||
1749 | "inherits": "^2.0.3", | ||
1750 | "pump": "^2.0.0" | ||
1751 | } | ||
1752 | }, | ||
1753 | "punycode": { | 879 | "punycode": { |
1754 | "version": "2.1.1", | 880 | "version": "2.1.1", |
1755 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", | 881 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", |
@@ -1769,20 +895,11 @@ | |||
1769 | "dev": true | 895 | "dev": true |
1770 | }, | 896 | }, |
1771 | "querystringify": { | 897 | "querystringify": { |
1772 | "version": "2.1.0", | 898 | "version": "2.1.1", |
1773 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", | 899 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", |
1774 | "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", | 900 | "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", |
1775 | "dev": true | 901 | "dev": true |
1776 | }, | 902 | }, |
1777 | "queue": { | ||
1778 | "version": "4.5.1", | ||
1779 | "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz", | ||
1780 | "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==", | ||
1781 | "dev": true, | ||
1782 | "requires": { | ||
1783 | "inherits": "~2.0.0" | ||
1784 | } | ||
1785 | }, | ||
1786 | "read": { | 903 | "read": { |
1787 | "version": "1.0.7", | 904 | "version": "1.0.7", |
1788 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", | 905 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", |
@@ -1793,9 +910,9 @@ | |||
1793 | } | 910 | } |
1794 | }, | 911 | }, |
1795 | "readable-stream": { | 912 | "readable-stream": { |
1796 | "version": "3.1.1", | 913 | "version": "3.3.0", |
1797 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", | 914 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", |
1798 | "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", | 915 | "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", |
1799 | "dev": true, | 916 | "dev": true, |
1800 | "requires": { | 917 | "requires": { |
1801 | "inherits": "^2.0.3", | 918 | "inherits": "^2.0.3", |
@@ -1812,39 +929,6 @@ | |||
1812 | "resolve": "^1.1.6" | 929 | "resolve": "^1.1.6" |
1813 | } | 930 | } |
1814 | }, | 931 | }, |
1815 | "remove-bom-buffer": { | ||
1816 | "version": "3.0.0", | ||
1817 | "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", | ||
1818 | "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", | ||
1819 | "dev": true, | ||
1820 | "requires": { | ||
1821 | "is-buffer": "^1.1.5", | ||
1822 | "is-utf8": "^0.2.1" | ||
1823 | } | ||
1824 | }, | ||
1825 | "remove-bom-stream": { | ||
1826 | "version": "1.2.0", | ||
1827 | "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", | ||
1828 | "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", | ||
1829 | "dev": true, | ||
1830 | "requires": { | ||
1831 | "remove-bom-buffer": "^3.0.0", | ||
1832 | "safe-buffer": "^5.1.0", | ||
1833 | "through2": "^2.0.3" | ||
1834 | } | ||
1835 | }, | ||
1836 | "remove-trailing-separator": { | ||
1837 | "version": "1.1.0", | ||
1838 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", | ||
1839 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", | ||
1840 | "dev": true | ||
1841 | }, | ||
1842 | "replace-ext": { | ||
1843 | "version": "1.0.0", | ||
1844 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", | ||
1845 | "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", | ||
1846 | "dev": true | ||
1847 | }, | ||
1848 | "request": { | 932 | "request": { |
1849 | "version": "2.88.0", | 933 | "version": "2.88.0", |
1850 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", | 934 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", |
@@ -1888,24 +972,6 @@ | |||
1888 | "path-parse": "^1.0.6" | 972 | "path-parse": "^1.0.6" |
1889 | } | 973 | } |
1890 | }, | 974 | }, |
1891 | "resolve-options": { | ||
1892 | "version": "1.1.0", | ||
1893 | "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", | ||
1894 | "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", | ||
1895 | "dev": true, | ||
1896 | "requires": { | ||
1897 | "value-or-function": "^3.0.0" | ||
1898 | } | ||
1899 | }, | ||
1900 | "rimraf": { | ||
1901 | "version": "2.6.3", | ||
1902 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", | ||
1903 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", | ||
1904 | "dev": true, | ||
1905 | "requires": { | ||
1906 | "glob": "^7.1.3" | ||
1907 | } | ||
1908 | }, | ||
1909 | "safe-buffer": { | 975 | "safe-buffer": { |
1910 | "version": "5.1.2", | 976 | "version": "5.1.2", |
1911 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | 977 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
@@ -1919,9 +985,9 @@ | |||
1919 | "dev": true | 985 | "dev": true |
1920 | }, | 986 | }, |
1921 | "semver": { | 987 | "semver": { |
1922 | "version": "5.6.0", | 988 | "version": "5.7.0", |
1923 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", | 989 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", |
1924 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" | 990 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" |
1925 | }, | 991 | }, |
1926 | "shelljs": { | 992 | "shelljs": { |
1927 | "version": "0.8.3", | 993 | "version": "0.8.3", |
@@ -1960,24 +1026,15 @@ | |||
1960 | "dev": true | 1026 | "dev": true |
1961 | }, | 1027 | }, |
1962 | "source-map-support": { | 1028 | "source-map-support": { |
1963 | "version": "0.5.10", | 1029 | "version": "0.5.12", |
1964 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", | 1030 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", |
1965 | "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", | 1031 | "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", |
1966 | "dev": true, | 1032 | "dev": true, |
1967 | "requires": { | 1033 | "requires": { |
1968 | "buffer-from": "^1.0.0", | 1034 | "buffer-from": "^1.0.0", |
1969 | "source-map": "^0.6.0" | 1035 | "source-map": "^0.6.0" |
1970 | } | 1036 | } |
1971 | }, | 1037 | }, |
1972 | "split": { | ||
1973 | "version": "0.3.3", | ||
1974 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", | ||
1975 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", | ||
1976 | "dev": true, | ||
1977 | "requires": { | ||
1978 | "through": "2" | ||
1979 | } | ||
1980 | }, | ||
1981 | "sprintf-js": { | 1038 | "sprintf-js": { |
1982 | "version": "1.0.3", | 1039 | "version": "1.0.3", |
1983 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | 1040 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
@@ -2001,68 +1058,6 @@ | |||
2001 | "tweetnacl": "~0.14.0" | 1058 | "tweetnacl": "~0.14.0" |
2002 | } | 1059 | } |
2003 | }, | 1060 | }, |
2004 | "stat-mode": { | ||
2005 | "version": "0.2.2", | ||
2006 | "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", | ||
2007 | "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", | ||
2008 | "dev": true | ||
2009 | }, | ||
2010 | "stream-combiner": { | ||
2011 | "version": "0.0.4", | ||
2012 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", | ||
2013 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", | ||
2014 | "dev": true, | ||
2015 | "requires": { | ||
2016 | "duplexer": "~0.1.1" | ||
2017 | } | ||
2018 | }, | ||
2019 | "stream-shift": { | ||
2020 | "version": "1.0.0", | ||
2021 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", | ||
2022 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", | ||
2023 | "dev": true | ||
2024 | }, | ||
2025 | "streamfilter": { | ||
2026 | "version": "1.0.7", | ||
2027 | "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", | ||
2028 | "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", | ||
2029 | "dev": true, | ||
2030 | "requires": { | ||
2031 | "readable-stream": "^2.0.2" | ||
2032 | }, | ||
2033 | "dependencies": { | ||
2034 | "readable-stream": { | ||
2035 | "version": "2.3.6", | ||
2036 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
2037 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
2038 | "dev": true, | ||
2039 | "requires": { | ||
2040 | "core-util-is": "~1.0.0", | ||
2041 | "inherits": "~2.0.3", | ||
2042 | "isarray": "~1.0.0", | ||
2043 | "process-nextick-args": "~2.0.0", | ||
2044 | "safe-buffer": "~5.1.1", | ||
2045 | "string_decoder": "~1.1.1", | ||
2046 | "util-deprecate": "~1.0.1" | ||
2047 | } | ||
2048 | }, | ||
2049 | "string_decoder": { | ||
2050 | "version": "1.1.1", | ||
2051 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
2052 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
2053 | "dev": true, | ||
2054 | "requires": { | ||
2055 | "safe-buffer": "~5.1.0" | ||
2056 | } | ||
2057 | } | ||
2058 | } | ||
2059 | }, | ||
2060 | "streamifier": { | ||
2061 | "version": "0.1.1", | ||
2062 | "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", | ||
2063 | "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=", | ||
2064 | "dev": true | ||
2065 | }, | ||
2066 | "string_decoder": { | 1061 | "string_decoder": { |
2067 | "version": "1.2.0", | 1062 | "version": "1.2.0", |
2068 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", | 1063 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", |
@@ -2072,82 +1067,13 @@ | |||
2072 | "safe-buffer": "~5.1.0" | 1067 | "safe-buffer": "~5.1.0" |
2073 | } | 1068 | } |
2074 | }, | 1069 | }, |
2075 | "strip-ansi": { | ||
2076 | "version": "3.0.1", | ||
2077 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | ||
2078 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", | ||
2079 | "dev": true, | ||
2080 | "requires": { | ||
2081 | "ansi-regex": "^2.0.0" | ||
2082 | } | ||
2083 | }, | ||
2084 | "supports-color": { | 1070 | "supports-color": { |
2085 | "version": "2.0.0", | 1071 | "version": "5.5.0", |
2086 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", | 1072 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", |
2087 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", | 1073 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", |
2088 | "dev": true | ||
2089 | }, | ||
2090 | "tar": { | ||
2091 | "version": "2.2.1", | ||
2092 | "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", | ||
2093 | "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", | ||
2094 | "dev": true, | ||
2095 | "requires": { | ||
2096 | "block-stream": "*", | ||
2097 | "fstream": "^1.0.2", | ||
2098 | "inherits": "2" | ||
2099 | } | ||
2100 | }, | ||
2101 | "through": { | ||
2102 | "version": "2.3.8", | ||
2103 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | ||
2104 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", | ||
2105 | "dev": true | ||
2106 | }, | ||
2107 | "through2": { | ||
2108 | "version": "2.0.5", | ||
2109 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", | ||
2110 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", | ||
2111 | "dev": true, | ||
2112 | "requires": { | ||
2113 | "readable-stream": "~2.3.6", | ||
2114 | "xtend": "~4.0.1" | ||
2115 | }, | ||
2116 | "dependencies": { | ||
2117 | "readable-stream": { | ||
2118 | "version": "2.3.6", | ||
2119 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
2120 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
2121 | "dev": true, | ||
2122 | "requires": { | ||
2123 | "core-util-is": "~1.0.0", | ||
2124 | "inherits": "~2.0.3", | ||
2125 | "isarray": "~1.0.0", | ||
2126 | "process-nextick-args": "~2.0.0", | ||
2127 | "safe-buffer": "~5.1.1", | ||
2128 | "string_decoder": "~1.1.1", | ||
2129 | "util-deprecate": "~1.0.1" | ||
2130 | } | ||
2131 | }, | ||
2132 | "string_decoder": { | ||
2133 | "version": "1.1.1", | ||
2134 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
2135 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
2136 | "dev": true, | ||
2137 | "requires": { | ||
2138 | "safe-buffer": "~5.1.0" | ||
2139 | } | ||
2140 | } | ||
2141 | } | ||
2142 | }, | ||
2143 | "through2-filter": { | ||
2144 | "version": "3.0.0", | ||
2145 | "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", | ||
2146 | "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", | ||
2147 | "dev": true, | 1074 | "dev": true, |
2148 | "requires": { | 1075 | "requires": { |
2149 | "through2": "~2.0.0", | 1076 | "has-flag": "^3.0.0" |
2150 | "xtend": "~4.0.0" | ||
2151 | } | 1077 | } |
2152 | }, | 1078 | }, |
2153 | "tmp": { | 1079 | "tmp": { |
@@ -2159,25 +1085,6 @@ | |||
2159 | "os-tmpdir": "~1.0.1" | 1085 | "os-tmpdir": "~1.0.1" |
2160 | } | 1086 | } |
2161 | }, | 1087 | }, |
2162 | "to-absolute-glob": { | ||
2163 | "version": "2.0.2", | ||
2164 | "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", | ||
2165 | "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", | ||
2166 | "dev": true, | ||
2167 | "requires": { | ||
2168 | "is-absolute": "^1.0.0", | ||
2169 | "is-negated-glob": "^1.0.0" | ||
2170 | } | ||
2171 | }, | ||
2172 | "to-through": { | ||
2173 | "version": "2.0.0", | ||
2174 | "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", | ||
2175 | "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", | ||
2176 | "dev": true, | ||
2177 | "requires": { | ||
2178 | "through2": "^2.0.3" | ||
2179 | } | ||
2180 | }, | ||
2181 | "tough-cookie": { | 1088 | "tough-cookie": { |
2182 | "version": "2.4.3", | 1089 | "version": "2.4.3", |
2183 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", | 1090 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", |
@@ -2203,23 +1110,24 @@ | |||
2203 | "dev": true | 1110 | "dev": true |
2204 | }, | 1111 | }, |
2205 | "tslint": { | 1112 | "tslint": { |
2206 | "version": "5.12.1", | 1113 | "version": "5.16.0", |
2207 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.12.1.tgz", | 1114 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz", |
2208 | "integrity": "sha512-sfodBHOucFg6egff8d1BvuofoOQ/nOeYNfbp7LDlKBcLNrL3lmS5zoiDGyOMdT7YsEXAwWpTdAHwOGOc8eRZAw==", | 1115 | "integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==", |
2209 | "dev": true, | 1116 | "dev": true, |
2210 | "requires": { | 1117 | "requires": { |
2211 | "babel-code-frame": "^6.22.0", | 1118 | "@babel/code-frame": "^7.0.0", |
2212 | "builtin-modules": "^1.1.1", | 1119 | "builtin-modules": "^1.1.1", |
2213 | "chalk": "^2.3.0", | 1120 | "chalk": "^2.3.0", |
2214 | "commander": "^2.12.1", | 1121 | "commander": "^2.12.1", |
2215 | "diff": "^3.2.0", | 1122 | "diff": "^3.2.0", |
2216 | "glob": "^7.1.1", | 1123 | "glob": "^7.1.1", |
2217 | "js-yaml": "^3.7.0", | 1124 | "js-yaml": "^3.13.0", |
2218 | "minimatch": "^3.0.4", | 1125 | "minimatch": "^3.0.4", |
1126 | "mkdirp": "^0.5.1", | ||
2219 | "resolve": "^1.3.2", | 1127 | "resolve": "^1.3.2", |
2220 | "semver": "^5.3.0", | 1128 | "semver": "^5.3.0", |
2221 | "tslib": "^1.8.0", | 1129 | "tslib": "^1.8.0", |
2222 | "tsutils": "^2.27.2" | 1130 | "tsutils": "^2.29.0" |
2223 | } | 1131 | } |
2224 | }, | 1132 | }, |
2225 | "tslint-config-prettier": { | 1133 | "tslint-config-prettier": { |
@@ -2277,9 +1185,9 @@ | |||
2277 | } | 1185 | } |
2278 | }, | 1186 | }, |
2279 | "typescript": { | 1187 | "typescript": { |
2280 | "version": "3.3.3", | 1188 | "version": "3.4.4", |
2281 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3.tgz", | 1189 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", |
2282 | "integrity": "sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A==", | 1190 | "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", |
2283 | "dev": true | 1191 | "dev": true |
2284 | }, | 1192 | }, |
2285 | "uc.micro": { | 1193 | "uc.micro": { |
@@ -2288,28 +1196,12 @@ | |||
2288 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", | 1196 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", |
2289 | "dev": true | 1197 | "dev": true |
2290 | }, | 1198 | }, |
2291 | "unc-path-regex": { | ||
2292 | "version": "0.1.2", | ||
2293 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", | ||
2294 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", | ||
2295 | "dev": true | ||
2296 | }, | ||
2297 | "underscore": { | 1199 | "underscore": { |
2298 | "version": "1.9.1", | 1200 | "version": "1.9.1", |
2299 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", | 1201 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", |
2300 | "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", | 1202 | "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", |
2301 | "dev": true | 1203 | "dev": true |
2302 | }, | 1204 | }, |
2303 | "unique-stream": { | ||
2304 | "version": "2.3.1", | ||
2305 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", | ||
2306 | "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", | ||
2307 | "dev": true, | ||
2308 | "requires": { | ||
2309 | "json-stable-stringify-without-jsonify": "^1.0.1", | ||
2310 | "through2-filter": "^3.0.0" | ||
2311 | } | ||
2312 | }, | ||
2313 | "uri-js": { | 1205 | "uri-js": { |
2314 | "version": "4.2.2", | 1206 | "version": "4.2.2", |
2315 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", | 1207 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", |
@@ -2326,9 +1218,9 @@ | |||
2326 | "dev": true | 1218 | "dev": true |
2327 | }, | 1219 | }, |
2328 | "url-parse": { | 1220 | "url-parse": { |
2329 | "version": "1.4.4", | 1221 | "version": "1.4.6", |
2330 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", | 1222 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.6.tgz", |
2331 | "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", | 1223 | "integrity": "sha512-/B8AD9iQ01seoXmXf9z/MjLZQIdOoYl/+gvsQF6+mpnxaTfG9P7srYaiqaDMyKkR36XMXfhqSHss5MyFAO8lew==", |
2332 | "dev": true, | 1224 | "dev": true, |
2333 | "requires": { | 1225 | "requires": { |
2334 | "querystringify": "^2.0.0", | 1226 | "querystringify": "^2.0.0", |
@@ -2347,12 +1239,6 @@ | |||
2347 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", | 1239 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", |
2348 | "dev": true | 1240 | "dev": true |
2349 | }, | 1241 | }, |
2350 | "value-or-function": { | ||
2351 | "version": "3.0.0", | ||
2352 | "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", | ||
2353 | "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", | ||
2354 | "dev": true | ||
2355 | }, | ||
2356 | "verror": { | 1242 | "verror": { |
2357 | "version": "1.10.0", | 1243 | "version": "1.10.0", |
2358 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | 1244 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", |
@@ -2364,150 +1250,10 @@ | |||
2364 | "extsprintf": "^1.2.0" | 1250 | "extsprintf": "^1.2.0" |
2365 | } | 1251 | } |
2366 | }, | 1252 | }, |
2367 | "vinyl": { | ||
2368 | "version": "0.4.6", | ||
2369 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", | ||
2370 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", | ||
2371 | "dev": true, | ||
2372 | "requires": { | ||
2373 | "clone": "^0.2.0", | ||
2374 | "clone-stats": "^0.0.1" | ||
2375 | } | ||
2376 | }, | ||
2377 | "vinyl-fs": { | ||
2378 | "version": "3.0.3", | ||
2379 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", | ||
2380 | "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", | ||
2381 | "dev": true, | ||
2382 | "requires": { | ||
2383 | "fs-mkdirp-stream": "^1.0.0", | ||
2384 | "glob-stream": "^6.1.0", | ||
2385 | "graceful-fs": "^4.0.0", | ||
2386 | "is-valid-glob": "^1.0.0", | ||
2387 | "lazystream": "^1.0.0", | ||
2388 | "lead": "^1.0.0", | ||
2389 | "object.assign": "^4.0.4", | ||
2390 | "pumpify": "^1.3.5", | ||
2391 | "readable-stream": "^2.3.3", | ||
2392 | "remove-bom-buffer": "^3.0.0", | ||
2393 | "remove-bom-stream": "^1.2.0", | ||
2394 | "resolve-options": "^1.1.0", | ||
2395 | "through2": "^2.0.0", | ||
2396 | "to-through": "^2.0.0", | ||
2397 | "value-or-function": "^3.0.0", | ||
2398 | "vinyl": "^2.0.0", | ||
2399 | "vinyl-sourcemap": "^1.1.0" | ||
2400 | }, | ||
2401 | "dependencies": { | ||
2402 | "clone": { | ||
2403 | "version": "2.1.2", | ||
2404 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", | ||
2405 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", | ||
2406 | "dev": true | ||
2407 | }, | ||
2408 | "clone-stats": { | ||
2409 | "version": "1.0.0", | ||
2410 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", | ||
2411 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", | ||
2412 | "dev": true | ||
2413 | }, | ||
2414 | "readable-stream": { | ||
2415 | "version": "2.3.6", | ||
2416 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||
2417 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||
2418 | "dev": true, | ||
2419 | "requires": { | ||
2420 | "core-util-is": "~1.0.0", | ||
2421 | "inherits": "~2.0.3", | ||
2422 | "isarray": "~1.0.0", | ||
2423 | "process-nextick-args": "~2.0.0", | ||
2424 | "safe-buffer": "~5.1.1", | ||
2425 | "string_decoder": "~1.1.1", | ||
2426 | "util-deprecate": "~1.0.1" | ||
2427 | } | ||
2428 | }, | ||
2429 | "string_decoder": { | ||
2430 | "version": "1.1.1", | ||
2431 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
2432 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
2433 | "dev": true, | ||
2434 | "requires": { | ||
2435 | "safe-buffer": "~5.1.0" | ||
2436 | } | ||
2437 | }, | ||
2438 | "vinyl": { | ||
2439 | "version": "2.2.0", | ||
2440 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", | ||
2441 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", | ||
2442 | "dev": true, | ||
2443 | "requires": { | ||
2444 | "clone": "^2.1.1", | ||
2445 | "clone-buffer": "^1.0.0", | ||
2446 | "clone-stats": "^1.0.0", | ||
2447 | "cloneable-readable": "^1.0.0", | ||
2448 | "remove-trailing-separator": "^1.0.1", | ||
2449 | "replace-ext": "^1.0.0" | ||
2450 | } | ||
2451 | } | ||
2452 | } | ||
2453 | }, | ||
2454 | "vinyl-source-stream": { | ||
2455 | "version": "1.1.2", | ||
2456 | "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", | ||
2457 | "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", | ||
2458 | "dev": true, | ||
2459 | "requires": { | ||
2460 | "through2": "^2.0.3", | ||
2461 | "vinyl": "^0.4.3" | ||
2462 | } | ||
2463 | }, | ||
2464 | "vinyl-sourcemap": { | ||
2465 | "version": "1.1.0", | ||
2466 | "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", | ||
2467 | "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", | ||
2468 | "dev": true, | ||
2469 | "requires": { | ||
2470 | "append-buffer": "^1.0.2", | ||
2471 | "convert-source-map": "^1.5.0", | ||
2472 | "graceful-fs": "^4.1.6", | ||
2473 | "normalize-path": "^2.1.1", | ||
2474 | "now-and-later": "^2.0.0", | ||
2475 | "remove-bom-buffer": "^3.0.0", | ||
2476 | "vinyl": "^2.0.0" | ||
2477 | }, | ||
2478 | "dependencies": { | ||
2479 | "clone": { | ||
2480 | "version": "2.1.2", | ||
2481 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", | ||
2482 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", | ||
2483 | "dev": true | ||
2484 | }, | ||
2485 | "clone-stats": { | ||
2486 | "version": "1.0.0", | ||
2487 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", | ||
2488 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", | ||
2489 | "dev": true | ||
2490 | }, | ||
2491 | "vinyl": { | ||
2492 | "version": "2.2.0", | ||
2493 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", | ||
2494 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", | ||
2495 | "dev": true, | ||
2496 | "requires": { | ||
2497 | "clone": "^2.1.1", | ||
2498 | "clone-buffer": "^1.0.0", | ||
2499 | "clone-stats": "^1.0.0", | ||
2500 | "cloneable-readable": "^1.0.0", | ||
2501 | "remove-trailing-separator": "^1.0.1", | ||
2502 | "replace-ext": "^1.0.0" | ||
2503 | } | ||
2504 | } | ||
2505 | } | ||
2506 | }, | ||
2507 | "vsce": { | 1253 | "vsce": { |
2508 | "version": "1.57.0", | 1254 | "version": "1.59.0", |
2509 | "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.57.0.tgz", | 1255 | "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.59.0.tgz", |
2510 | "integrity": "sha512-ULiWDQBt0XZAA5PI7XL0TxeKZ6cXk3e3ZH/lL9xk93WeckqWzR79D3xNsf0GRacOGYU+UmbhXWRtP8C6wnDNmg==", | 1256 | "integrity": "sha512-tkB97885k5ce25Brbe9AZTCAXAkBh7oa5EOzY0BCJQ51W/mfRaQuCluCd9gZpWdgiU4AbPvwxtoVKKsenlSt8w==", |
2511 | "dev": true, | 1257 | "dev": true, |
2512 | "requires": { | 1258 | "requires": { |
2513 | "chalk": "^2.4.2", | 1259 | "chalk": "^2.4.2", |
@@ -2531,54 +1277,57 @@ | |||
2531 | } | 1277 | } |
2532 | }, | 1278 | }, |
2533 | "vscode": { | 1279 | "vscode": { |
2534 | "version": "1.1.29", | 1280 | "version": "1.1.33", |
2535 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.29.tgz", | 1281 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.33.tgz", |
2536 | "integrity": "sha512-E6hzqGtCD65BnBxdZzSIi8FPCM4seEEK/bbTeYdJntg+4D5R6GLbdYFySE9DNTtMJF4iB9UGoucKU/p8Guts1g==", | 1282 | "integrity": "sha512-sXedp2oF6y4ZvqrrFiZpeMzaCLSWV+PpYkIxjG/iYquNZ9KrLL2LujltGxPLvzn49xu2sZkyC+avVNFgcJD1Iw==", |
2537 | "dev": true, | 1283 | "dev": true, |
2538 | "requires": { | 1284 | "requires": { |
2539 | "glob": "^7.1.2", | 1285 | "glob": "^7.1.2", |
2540 | "gulp-chmod": "^2.0.0", | ||
2541 | "gulp-filter": "^5.0.1", | ||
2542 | "gulp-gunzip": "1.0.0", | ||
2543 | "gulp-remote-src-vscode": "^0.5.1", | ||
2544 | "gulp-untar": "^0.0.7", | ||
2545 | "gulp-vinyl-zip": "^2.1.2", | ||
2546 | "mocha": "^4.0.1", | 1286 | "mocha": "^4.0.1", |
2547 | "request": "^2.88.0", | 1287 | "request": "^2.88.0", |
2548 | "semver": "^5.4.1", | 1288 | "semver": "^5.4.1", |
2549 | "source-map-support": "^0.5.0", | 1289 | "source-map-support": "^0.5.0", |
2550 | "url-parse": "^1.4.3", | 1290 | "url-parse": "^1.4.4", |
2551 | "vinyl-fs": "^3.0.3", | 1291 | "vscode-test": "^0.1.4" |
2552 | "vinyl-source-stream": "^1.1.0" | ||
2553 | } | 1292 | } |
2554 | }, | 1293 | }, |
2555 | "vscode-jsonrpc": { | 1294 | "vscode-jsonrpc": { |
2556 | "version": "4.0.0", | 1295 | "version": "4.1.0-next.1", |
2557 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", | 1296 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.1.tgz", |
2558 | "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" | 1297 | "integrity": "sha512-FzNkvHmg3GXpzZAlnGnpdRbQQX6LDRb0bvc+oxxjMUwIJ66kTO/DyeE2bwU0fsiOEGfsJTCzvjESVl368jZ0/g==" |
2559 | }, | 1298 | }, |
2560 | "vscode-languageclient": { | 1299 | "vscode-languageclient": { |
2561 | "version": "5.3.0-next.1", | 1300 | "version": "5.3.0-next.4", |
2562 | "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.3.0-next.1.tgz", | 1301 | "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.3.0-next.4.tgz", |
2563 | "integrity": "sha512-q5o6vHHDi+HjFOFUNC288Dee5jyAO4mEufoOaF2wKCjVP1qoJGbnBalTNGuakJThrdn0RDa0XdHZgXKFyZomCQ==", | 1302 | "integrity": "sha512-RODuzXErVpJRSgHv+Xei8fwQtZ/iZOWPCqlLl07NTtkzgTAepJf9r4EioZVuTviGJ5DEJ9xs0bjrit8shKtW6Q==", |
2564 | "requires": { | 1303 | "requires": { |
2565 | "semver": "^5.5.0", | 1304 | "semver": "^5.5.0", |
2566 | "vscode-languageserver-protocol": "3.15.0-next.1" | 1305 | "vscode-languageserver-protocol": "3.15.0-next.4" |
2567 | } | 1306 | } |
2568 | }, | 1307 | }, |
2569 | "vscode-languageserver-protocol": { | 1308 | "vscode-languageserver-protocol": { |
2570 | "version": "3.15.0-next.1", | 1309 | "version": "3.15.0-next.4", |
2571 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.1.tgz", | 1310 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.4.tgz", |
2572 | "integrity": "sha512-LXF0d9s3vxFBxVQ4aKl/XghdEMAncGt3dh4urIYa9Is43g3MfIQL9fC44YZtP+XXOrI2rpZU8lRNN01U1V6CDg==", | 1311 | "integrity": "sha512-4AgisQ8GWa3irdRu3/UNr3brcSSm0oobmoV1eSOnV7JM32lYyXDnSKB7RuTTXvaAjD/0xQJLEGhkyGHS5gbywA==", |
2573 | "requires": { | 1312 | "requires": { |
2574 | "vscode-jsonrpc": "^4.0.0", | 1313 | "vscode-jsonrpc": "^4.1.0-next.1", |
2575 | "vscode-languageserver-types": "3.14.0" | 1314 | "vscode-languageserver-types": "3.15.0-next.1" |
2576 | } | 1315 | } |
2577 | }, | 1316 | }, |
2578 | "vscode-languageserver-types": { | 1317 | "vscode-languageserver-types": { |
2579 | "version": "3.14.0", | 1318 | "version": "3.15.0-next.1", |
2580 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", | 1319 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.1.tgz", |
2581 | "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==" | 1320 | "integrity": "sha512-R0kzmaI8gOGEoU7b9huYQAzgZzRQ/5Q8HKjsIUdfz0MjXcBZ4tr1ik1So1p1O5kGrI1VTCd22Fw/wI7ECGoIPw==" |
1321 | }, | ||
1322 | "vscode-test": { | ||
1323 | "version": "0.1.5", | ||
1324 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.1.5.tgz", | ||
1325 | "integrity": "sha512-s+lbF1Dtasc0yXVB9iQTexBe2JK6HJAUJe3fWezHKIjq+xRw5ZwCMEMBaonFIPy7s95qg2HPTRDR5W4h4kbxGw==", | ||
1326 | "dev": true, | ||
1327 | "requires": { | ||
1328 | "http-proxy-agent": "^2.1.0", | ||
1329 | "https-proxy-agent": "^2.2.1" | ||
1330 | } | ||
2582 | }, | 1331 | }, |
2583 | "vso-node-api": { | 1332 | "vso-node-api": { |
2584 | "version": "6.1.2-preview", | 1333 | "version": "6.1.2-preview", |
@@ -2598,12 +1347,6 @@ | |||
2598 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", | 1347 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", |
2599 | "dev": true | 1348 | "dev": true |
2600 | }, | 1349 | }, |
2601 | "xtend": { | ||
2602 | "version": "4.0.1", | ||
2603 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", | ||
2604 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", | ||
2605 | "dev": true | ||
2606 | }, | ||
2607 | "yauzl": { | 1350 | "yauzl": { |
2608 | "version": "2.10.0", | 1351 | "version": "2.10.0", |
2609 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", | 1352 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", |
diff --git a/editors/code/package.json b/editors/code/package.json index a0454191a..015b912b3 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -13,7 +13,7 @@ | |||
13 | "Other" | 13 | "Other" |
14 | ], | 14 | ], |
15 | "engines": { | 15 | "engines": { |
16 | "vscode": "^1.31.0" | 16 | "vscode": "^1.33.0" |
17 | }, | 17 | }, |
18 | "scripts": { | 18 | "scripts": { |
19 | "vscode:prepublish": "npm run compile", | 19 | "vscode:prepublish": "npm run compile", |
@@ -31,18 +31,18 @@ | |||
31 | "singleQuote": true | 31 | "singleQuote": true |
32 | }, | 32 | }, |
33 | "dependencies": { | 33 | "dependencies": { |
34 | "vscode-languageclient": "^5.3.0-next.1" | 34 | "vscode-languageclient": "^5.3.0-next.4" |
35 | }, | 35 | }, |
36 | "devDependencies": { | 36 | "devDependencies": { |
37 | "@types/mocha": "^5.2.5", | 37 | "@types/mocha": "^5.2.6", |
38 | "@types/node": "^10.12.24", | 38 | "@types/node": "^10.14.5", |
39 | "prettier": "^1.16.4", | 39 | "prettier": "^1.17.0", |
40 | "tslint": "^5.12.1", | 40 | "shx": "^0.3.1", |
41 | "tslint": "^5.16.0", | ||
41 | "tslint-config-prettier": "^1.18.0", | 42 | "tslint-config-prettier": "^1.18.0", |
42 | "typescript": "^3.3.1", | 43 | "typescript": "^3.4.4", |
43 | "vsce": "^1.57.0", | 44 | "vsce": "^1.59.0", |
44 | "vscode": "^1.1.29", | 45 | "vscode": "^1.1.33" |
45 | "shx": "^0.3.1" | ||
46 | }, | 46 | }, |
47 | "activationEvents": [ | 47 | "activationEvents": [ |
48 | "onLanguage:rust", | 48 | "onLanguage:rust", |
@@ -81,11 +81,6 @@ | |||
81 | "category": "Rust Analyzer" | 81 | "category": "Rust Analyzer" |
82 | }, | 82 | }, |
83 | { | 83 | { |
84 | "command": "rust-analyzer.extendSelection", | ||
85 | "title": "Extend selection", | ||
86 | "category": "Rust Analyzer" | ||
87 | }, | ||
88 | { | ||
89 | "command": "rust-analyzer.matchingBrace", | 84 | "command": "rust-analyzer.matchingBrace", |
90 | "title": "Find matching brace", | 85 | "title": "Find matching brace", |
91 | "category": "Rust Analyzer" | 86 | "category": "Rust Analyzer" |
@@ -119,6 +114,16 @@ | |||
119 | "command": "rust-analyzer.reload", | 114 | "command": "rust-analyzer.reload", |
120 | "title": "Restart server", | 115 | "title": "Restart server", |
121 | "category": "Rust Analyzer" | 116 | "category": "Rust Analyzer" |
117 | }, | ||
118 | { | ||
119 | "command": "rust-analyzer.startCargoWatch", | ||
120 | "title": "Start Cargo Watch", | ||
121 | "category": "Rust Analyzer" | ||
122 | }, | ||
123 | { | ||
124 | "command": "rust-analyzer.stopCargoWatch", | ||
125 | "title": "Stop Cargo Watch", | ||
126 | "category": "Rust Analyzer" | ||
122 | } | 127 | } |
123 | ], | 128 | ], |
124 | "keybindings": [ | 129 | "keybindings": [ |
@@ -250,6 +255,18 @@ | |||
250 | "${workspaceRoot}" | 255 | "${workspaceRoot}" |
251 | ], | 256 | ], |
252 | "pattern": "$rustc" | 257 | "pattern": "$rustc" |
258 | }, | ||
259 | { | ||
260 | "name": "rustc-watch", | ||
261 | "fileLocation": [ | ||
262 | "relative", | ||
263 | "${workspaceRoot}" | ||
264 | ], | ||
265 | "background": { | ||
266 | "beginsPattern": "^\\[Running\\b", | ||
267 | "endsPattern": "^\\[Finished running\\b" | ||
268 | }, | ||
269 | "pattern": "$rustc" | ||
253 | } | 270 | } |
254 | ] | 271 | ] |
255 | } | 272 | } |
diff --git a/editors/code/src/commands/cargo_watch.ts b/editors/code/src/commands/cargo_watch.ts index 32bd38a1c..1d939e28c 100644 --- a/editors/code/src/commands/cargo_watch.ts +++ b/editors/code/src/commands/cargo_watch.ts | |||
@@ -7,44 +7,55 @@ import { terminate } from '../utils/processes'; | |||
7 | import { LineBuffer } from './line_buffer'; | 7 | import { LineBuffer } from './line_buffer'; |
8 | import { StatusDisplay } from './watch_status'; | 8 | import { StatusDisplay } from './watch_status'; |
9 | 9 | ||
10 | export class CargoWatchProvider { | 10 | export function registerCargoWatchProvider( |
11 | private diagnosticCollection?: vscode.DiagnosticCollection; | 11 | subscriptions: vscode.Disposable[] |
12 | private cargoProcess?: child_process.ChildProcess; | 12 | ): CargoWatchProvider | undefined { |
13 | private outBuffer: string = ''; | 13 | let cargoExists = false; |
14 | private statusDisplay?: StatusDisplay; | 14 | const cargoTomlFile = path.join(vscode.workspace.rootPath!, 'Cargo.toml'); |
15 | private outputChannel?: vscode.OutputChannel; | 15 | // Check if the working directory is valid cargo root path |
16 | 16 | try { | |
17 | public activate(subscriptions: vscode.Disposable[]) { | 17 | if (fs.existsSync(cargoTomlFile)) { |
18 | let cargoExists = false; | 18 | cargoExists = true; |
19 | const cargoTomlFile = path.join( | 19 | } |
20 | vscode.workspace.rootPath!, | 20 | } catch (err) { |
21 | 'Cargo.toml' | 21 | cargoExists = false; |
22 | } | ||
23 | |||
24 | if (!cargoExists) { | ||
25 | vscode.window.showErrorMessage( | ||
26 | `Couldn\'t find \'Cargo.toml\' in ${cargoTomlFile}` | ||
22 | ); | 27 | ); |
23 | // Check if the working directory is valid cargo root path | 28 | return; |
24 | try { | 29 | } |
25 | if (fs.existsSync(cargoTomlFile)) { | ||
26 | cargoExists = true; | ||
27 | } | ||
28 | } catch (err) { | ||
29 | cargoExists = false; | ||
30 | } | ||
31 | 30 | ||
32 | if (!cargoExists) { | 31 | const provider = new CargoWatchProvider(); |
33 | vscode.window.showErrorMessage( | 32 | subscriptions.push(provider); |
34 | `Couldn\'t find \'Cargo.toml\' in ${cargoTomlFile}` | 33 | return provider; |
35 | ); | 34 | } |
36 | return; | ||
37 | } | ||
38 | 35 | ||
39 | subscriptions.push(this); | 36 | export class CargoWatchProvider implements vscode.Disposable { |
37 | private readonly diagnosticCollection: vscode.DiagnosticCollection; | ||
38 | private readonly statusDisplay: StatusDisplay; | ||
39 | private readonly outputChannel: vscode.OutputChannel; | ||
40 | private cargoProcess?: child_process.ChildProcess; | ||
41 | |||
42 | constructor() { | ||
40 | this.diagnosticCollection = vscode.languages.createDiagnosticCollection( | 43 | this.diagnosticCollection = vscode.languages.createDiagnosticCollection( |
41 | 'rustc' | 44 | 'rustc' |
42 | ); | 45 | ); |
43 | 46 | this.statusDisplay = new StatusDisplay(); | |
44 | this.statusDisplay = new StatusDisplay(subscriptions); | ||
45 | this.outputChannel = vscode.window.createOutputChannel( | 47 | this.outputChannel = vscode.window.createOutputChannel( |
46 | 'Cargo Watch Trace' | 48 | 'Cargo Watch Trace' |
47 | ); | 49 | ); |
50 | } | ||
51 | |||
52 | public start() { | ||
53 | if (this.cargoProcess) { | ||
54 | vscode.window.showInformationMessage( | ||
55 | 'Cargo Watch is already running' | ||
56 | ); | ||
57 | return; | ||
58 | } | ||
48 | 59 | ||
49 | let args = 'check --message-format json'; | 60 | let args = 'check --message-format json'; |
50 | if (Server.config.cargoWatchOptions.checkArguments.length > 0) { | 61 | if (Server.config.cargoWatchOptions.checkArguments.length > 0) { |
@@ -95,25 +106,28 @@ export class CargoWatchProvider { | |||
95 | this.logInfo('cargo-watch started.'); | 106 | this.logInfo('cargo-watch started.'); |
96 | } | 107 | } |
97 | 108 | ||
98 | public dispose(): void { | 109 | public stop() { |
99 | if (this.diagnosticCollection) { | ||
100 | this.diagnosticCollection.clear(); | ||
101 | this.diagnosticCollection.dispose(); | ||
102 | } | ||
103 | |||
104 | if (this.cargoProcess) { | 110 | if (this.cargoProcess) { |
105 | this.cargoProcess.kill(); | 111 | this.cargoProcess.kill(); |
106 | terminate(this.cargoProcess); | 112 | terminate(this.cargoProcess); |
113 | this.cargoProcess = undefined; | ||
114 | } else { | ||
115 | vscode.window.showInformationMessage('Cargo Watch is not running'); | ||
107 | } | 116 | } |
117 | } | ||
108 | 118 | ||
109 | if (this.outputChannel) { | 119 | public dispose(): void { |
110 | this.outputChannel.dispose(); | 120 | this.stop(); |
111 | } | 121 | |
122 | this.diagnosticCollection.clear(); | ||
123 | this.diagnosticCollection.dispose(); | ||
124 | this.outputChannel.dispose(); | ||
125 | this.statusDisplay.dispose(); | ||
112 | } | 126 | } |
113 | 127 | ||
114 | private logInfo(line: string) { | 128 | private logInfo(line: string) { |
115 | if (Server.config.cargoWatchOptions.trace === 'verbose') { | 129 | if (Server.config.cargoWatchOptions.trace === 'verbose') { |
116 | this.outputChannel!.append(line); | 130 | this.outputChannel.append(line); |
117 | } | 131 | } |
118 | } | 132 | } |
119 | 133 | ||
@@ -122,18 +136,18 @@ export class CargoWatchProvider { | |||
122 | Server.config.cargoWatchOptions.trace === 'error' || | 136 | Server.config.cargoWatchOptions.trace === 'error' || |
123 | Server.config.cargoWatchOptions.trace === 'verbose' | 137 | Server.config.cargoWatchOptions.trace === 'verbose' |
124 | ) { | 138 | ) { |
125 | this.outputChannel!.append(line); | 139 | this.outputChannel.append(line); |
126 | } | 140 | } |
127 | } | 141 | } |
128 | 142 | ||
129 | private parseLine(line: string) { | 143 | private parseLine(line: string) { |
130 | if (line.startsWith('[Running')) { | 144 | if (line.startsWith('[Running')) { |
131 | this.diagnosticCollection!.clear(); | 145 | this.diagnosticCollection.clear(); |
132 | this.statusDisplay!.show(); | 146 | this.statusDisplay.show(); |
133 | } | 147 | } |
134 | 148 | ||
135 | if (line.startsWith('[Finished running')) { | 149 | if (line.startsWith('[Finished running')) { |
136 | this.statusDisplay!.hide(); | 150 | this.statusDisplay.hide(); |
137 | } | 151 | } |
138 | 152 | ||
139 | function getLevel(s: string): vscode.DiagnosticSeverity { | 153 | function getLevel(s: string): vscode.DiagnosticSeverity { |
@@ -193,7 +207,7 @@ export class CargoWatchProvider { | |||
193 | 207 | ||
194 | // The format of the package_id is "{name} {version} ({source_id})", | 208 | // The format of the package_id is "{name} {version} ({source_id})", |
195 | // https://github.com/rust-lang/cargo/blob/37ad03f86e895bb80b474c1c088322634f4725f5/src/cargo/core/package_id.rs#L53 | 209 | // https://github.com/rust-lang/cargo/blob/37ad03f86e895bb80b474c1c088322634f4725f5/src/cargo/core/package_id.rs#L53 |
196 | this.statusDisplay!.packageName = msg.package_id.split(' ')[0]; | 210 | this.statusDisplay.packageName = msg.package_id.split(' ')[0]; |
197 | } else if (data.reason === 'compiler-message') { | 211 | } else if (data.reason === 'compiler-message') { |
198 | const msg = data.message as RustDiagnostic; | 212 | const msg = data.message as RustDiagnostic; |
199 | 213 | ||
diff --git a/editors/code/src/commands/extend_selection.ts b/editors/code/src/commands/extend_selection.ts deleted file mode 100644 index 6f4187d15..000000000 --- a/editors/code/src/commands/extend_selection.ts +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | import * as vscode from 'vscode'; | ||
2 | |||
3 | import { Range, TextDocumentIdentifier } from 'vscode-languageclient'; | ||
4 | import { Server } from '../server'; | ||
5 | |||
6 | interface ExtendSelectionParams { | ||
7 | textDocument: TextDocumentIdentifier; | ||
8 | selections: Range[]; | ||
9 | } | ||
10 | |||
11 | interface ExtendSelectionResult { | ||
12 | selections: Range[]; | ||
13 | } | ||
14 | |||
15 | export async function handle() { | ||
16 | const editor = vscode.window.activeTextEditor; | ||
17 | if (editor == null || editor.document.languageId !== 'rust') { | ||
18 | return; | ||
19 | } | ||
20 | const request: ExtendSelectionParams = { | ||
21 | selections: editor.selections.map(s => | ||
22 | Server.client.code2ProtocolConverter.asRange(s) | ||
23 | ), | ||
24 | textDocument: { uri: editor.document.uri.toString() } | ||
25 | }; | ||
26 | const response = await Server.client.sendRequest<ExtendSelectionResult>( | ||
27 | 'rust-analyzer/extendSelection', | ||
28 | request | ||
29 | ); | ||
30 | editor.selections = response.selections.map((range: Range) => { | ||
31 | const r = Server.client.protocol2CodeConverter.asRange(range); | ||
32 | return new vscode.Selection(r.start, r.end); | ||
33 | }); | ||
34 | } | ||
diff --git a/editors/code/src/commands/index.ts b/editors/code/src/commands/index.ts index f36c4b040..194658497 100644 --- a/editors/code/src/commands/index.ts +++ b/editors/code/src/commands/index.ts | |||
@@ -1,6 +1,5 @@ | |||
1 | import * as analyzerStatus from './analyzer_status'; | 1 | import * as analyzerStatus from './analyzer_status'; |
2 | import * as applySourceChange from './apply_source_change'; | 2 | import * as applySourceChange from './apply_source_change'; |
3 | import * as extendSelection from './extend_selection'; | ||
4 | import * as joinLines from './join_lines'; | 3 | import * as joinLines from './join_lines'; |
5 | import * as matchingBrace from './matching_brace'; | 4 | import * as matchingBrace from './matching_brace'; |
6 | import * as onEnter from './on_enter'; | 5 | import * as onEnter from './on_enter'; |
@@ -11,7 +10,6 @@ import * as syntaxTree from './syntaxTree'; | |||
11 | export { | 10 | export { |
12 | analyzerStatus, | 11 | analyzerStatus, |
13 | applySourceChange, | 12 | applySourceChange, |
14 | extendSelection, | ||
15 | joinLines, | 13 | joinLines, |
16 | matchingBrace, | 14 | matchingBrace, |
17 | parentModule, | 15 | parentModule, |
diff --git a/editors/code/src/commands/runnables.ts b/editors/code/src/commands/runnables.ts index c4df24c79..26372c1e8 100644 --- a/editors/code/src/commands/runnables.ts +++ b/editors/code/src/commands/runnables.ts | |||
@@ -5,7 +5,7 @@ import * as vscode from 'vscode'; | |||
5 | import * as lc from 'vscode-languageclient'; | 5 | import * as lc from 'vscode-languageclient'; |
6 | 6 | ||
7 | import { Server } from '../server'; | 7 | import { Server } from '../server'; |
8 | import { CargoWatchProvider } from './cargo_watch'; | 8 | import { CargoWatchProvider, registerCargoWatchProvider } from './cargo_watch'; |
9 | 9 | ||
10 | interface RunnablesParams { | 10 | interface RunnablesParams { |
11 | textDocument: lc.TextDocumentIdentifier; | 11 | textDocument: lc.TextDocumentIdentifier; |
@@ -137,7 +137,7 @@ export async function handleSingle(runnable: Runnable) { | |||
137 | */ | 137 | */ |
138 | export async function interactivelyStartCargoWatch( | 138 | export async function interactivelyStartCargoWatch( |
139 | context: vscode.ExtensionContext | 139 | context: vscode.ExtensionContext |
140 | ) { | 140 | ): Promise<CargoWatchProvider | undefined> { |
141 | if (Server.config.cargoWatchOptions.enableOnStartup === 'disabled') { | 141 | if (Server.config.cargoWatchOptions.enableOnStartup === 'disabled') { |
142 | return; | 142 | return; |
143 | } | 143 | } |
@@ -153,6 +153,12 @@ export async function interactivelyStartCargoWatch( | |||
153 | } | 153 | } |
154 | } | 154 | } |
155 | 155 | ||
156 | return startCargoWatch(context); | ||
157 | } | ||
158 | |||
159 | export async function startCargoWatch( | ||
160 | context: vscode.ExtensionContext | ||
161 | ): Promise<CargoWatchProvider | undefined> { | ||
156 | const execPromise = util.promisify(child_process.exec); | 162 | const execPromise = util.promisify(child_process.exec); |
157 | 163 | ||
158 | const { stderr } = await execPromise('cargo watch --version').catch(e => e); | 164 | const { stderr } = await execPromise('cargo watch --version').catch(e => e); |
@@ -197,6 +203,9 @@ export async function interactivelyStartCargoWatch( | |||
197 | } | 203 | } |
198 | } | 204 | } |
199 | 205 | ||
200 | const validater = new CargoWatchProvider(); | 206 | const provider = await registerCargoWatchProvider(context.subscriptions); |
201 | validater.activate(context.subscriptions); | 207 | if (provider) { |
208 | provider.start(); | ||
209 | } | ||
210 | return provider; | ||
202 | } | 211 | } |
diff --git a/editors/code/src/commands/watch_status.ts b/editors/code/src/commands/watch_status.ts index 86ae821de..a3b0178f2 100644 --- a/editors/code/src/commands/watch_status.ts +++ b/editors/code/src/commands/watch_status.ts | |||
@@ -2,19 +2,18 @@ import * as vscode from 'vscode'; | |||
2 | 2 | ||
3 | const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; | 3 | const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; |
4 | 4 | ||
5 | export class StatusDisplay { | 5 | export class StatusDisplay implements vscode.Disposable { |
6 | public packageName?: string; | 6 | public packageName?: string; |
7 | 7 | ||
8 | private i = 0; | 8 | private i = 0; |
9 | private statusBarItem: vscode.StatusBarItem; | 9 | private statusBarItem: vscode.StatusBarItem; |
10 | private timer?: NodeJS.Timeout; | 10 | private timer?: NodeJS.Timeout; |
11 | 11 | ||
12 | constructor(subscriptions: vscode.Disposable[]) { | 12 | constructor() { |
13 | this.statusBarItem = vscode.window.createStatusBarItem( | 13 | this.statusBarItem = vscode.window.createStatusBarItem( |
14 | vscode.StatusBarAlignment.Left, | 14 | vscode.StatusBarAlignment.Left, |
15 | 10 | 15 | 10 |
16 | ); | 16 | ); |
17 | subscriptions.push(this.statusBarItem); | ||
18 | this.statusBarItem.hide(); | 17 | this.statusBarItem.hide(); |
19 | } | 18 | } |
20 | 19 | ||
@@ -33,7 +32,7 @@ export class StatusDisplay { | |||
33 | } | 32 | } |
34 | }, 300); | 33 | }, 300); |
35 | 34 | ||
36 | this.statusBarItem!.show(); | 35 | this.statusBarItem.show(); |
37 | } | 36 | } |
38 | 37 | ||
39 | public hide() { | 38 | public hide() { |
@@ -42,7 +41,16 @@ export class StatusDisplay { | |||
42 | this.timer = undefined; | 41 | this.timer = undefined; |
43 | } | 42 | } |
44 | 43 | ||
45 | this.statusBarItem!.hide(); | 44 | this.statusBarItem.hide(); |
45 | } | ||
46 | |||
47 | public dispose() { | ||
48 | if (this.timer) { | ||
49 | clearInterval(this.timer); | ||
50 | this.timer = undefined; | ||
51 | } | ||
52 | |||
53 | this.statusBarItem.dispose(); | ||
46 | } | 54 | } |
47 | 55 | ||
48 | private frame() { | 56 | private frame() { |
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts index 1073a36a0..c8c3004a7 100644 --- a/editors/code/src/extension.ts +++ b/editors/code/src/extension.ts | |||
@@ -2,7 +2,11 @@ import * as vscode from 'vscode'; | |||
2 | import * as lc from 'vscode-languageclient'; | 2 | import * as lc from 'vscode-languageclient'; |
3 | 3 | ||
4 | import * as commands from './commands'; | 4 | import * as commands from './commands'; |
5 | import { interactivelyStartCargoWatch } from './commands/runnables'; | 5 | import { CargoWatchProvider } from './commands/cargo_watch'; |
6 | import { | ||
7 | interactivelyStartCargoWatch, | ||
8 | startCargoWatch | ||
9 | } from './commands/runnables'; | ||
6 | import { SyntaxTreeContentProvider } from './commands/syntaxTree'; | 10 | import { SyntaxTreeContentProvider } from './commands/syntaxTree'; |
7 | import * as events from './events'; | 11 | import * as events from './events'; |
8 | import * as notifications from './notifications'; | 12 | import * as notifications from './notifications'; |
@@ -54,10 +58,6 @@ export function activate(context: vscode.ExtensionContext) { | |||
54 | Server.client.sendRequest<null>('rust-analyzer/collectGarbage', null) | 58 | Server.client.sendRequest<null>('rust-analyzer/collectGarbage', null) |
55 | ); | 59 | ); |
56 | registerCommand( | 60 | registerCommand( |
57 | 'rust-analyzer.extendSelection', | ||
58 | commands.extendSelection.handle | ||
59 | ); | ||
60 | registerCommand( | ||
61 | 'rust-analyzer.matchingBrace', | 61 | 'rust-analyzer.matchingBrace', |
62 | commands.matchingBrace.handle | 62 | commands.matchingBrace.handle |
63 | ); | 63 | ); |
@@ -126,7 +126,24 @@ export function activate(context: vscode.ExtensionContext) { | |||
126 | vscode.commands.registerCommand('rust-analyzer.reload', reloadCommand); | 126 | vscode.commands.registerCommand('rust-analyzer.reload', reloadCommand); |
127 | 127 | ||
128 | // Executing `cargo watch` provides us with inline diagnostics on save | 128 | // Executing `cargo watch` provides us with inline diagnostics on save |
129 | interactivelyStartCargoWatch(context); | 129 | let provider: CargoWatchProvider | undefined; |
130 | interactivelyStartCargoWatch(context).then(p => { | ||
131 | provider = p; | ||
132 | }); | ||
133 | registerCommand('rust-analyzer.startCargoWatch', () => { | ||
134 | if (provider) { | ||
135 | provider.start(); | ||
136 | } else { | ||
137 | startCargoWatch(context).then(p => { | ||
138 | provider = p; | ||
139 | }); | ||
140 | } | ||
141 | }); | ||
142 | registerCommand('rust-analyzer.stopCargoWatch', () => { | ||
143 | if (provider) { | ||
144 | provider.stop(); | ||
145 | } | ||
146 | }); | ||
130 | 147 | ||
131 | // Start the language server, finally! | 148 | // Start the language server, finally! |
132 | startServer(); | 149 | startServer(); |
diff --git a/editors/code/src/server.ts b/editors/code/src/server.ts index 5e9a19340..81c2b3fff 100644 --- a/editors/code/src/server.ts +++ b/editors/code/src/server.ts | |||
@@ -74,6 +74,7 @@ export class Server { | |||
74 | } | 74 | } |
75 | } | 75 | } |
76 | }; | 76 | }; |
77 | Server.client.registerProposedFeatures(); | ||
77 | Server.client.onReady().then(() => { | 78 | Server.client.onReady().then(() => { |
78 | for (const [type, handler] of notificationHandlers) { | 79 | for (const [type, handler] of notificationHandlers) { |
79 | Server.client.onNotification(type, handler); | 80 | Server.client.onNotification(type, handler); |