@@ -45,12 +45,12 @@ class ClassCompletionItemProvider implements CompletionItemProvider {
4545 }
4646 }
4747
48- fetchRemoteStyleSheet ( key : string ) : Thenable < Map < string , CompletionItem > > {
48+ fetchRemoteStyleSheet ( key : string ) : Thenable < string > {
4949 return new Promise ( resolve => {
5050 const items = this . cache . get ( key ) ;
5151
5252 if ( items ) {
53- resolve ( items ) ;
53+ resolve ( key ) ;
5454 } else {
5555 const items = new Map < string , CompletionItem > ( ) ;
5656
@@ -63,22 +63,22 @@ class ClassCompletionItemProvider implements CompletionItemProvider {
6363 } ;
6464 } ) ;
6565 this . cache . set ( key , items ) ;
66- resolve ( items ) ;
66+ resolve ( key ) ;
6767 } , ( ) => {
68- resolve ( items ) ;
68+ resolve ( "" ) ;
6969 } ) ;
7070 } else {
71- resolve ( items ) ;
71+ resolve ( "" ) ;
7272 }
73- } , ( ) => resolve ( items ) ) ;
73+ } , ( ) => resolve ( "" ) ) ;
7474 }
7575 } ) ;
7676 }
7777
78- findDocumentLinks ( text : string ) : Thenable < Map < string , CompletionItem > > {
78+ findDocumentLinks ( text : string ) : Thenable < Set < string > > {
7979 return new Promise ( resolve => {
80- const items = new Map < string , CompletionItem > ( ) ;
8180 const findLinks = / < l i n k ( [ ^ > ] + ) > / gi;
81+ const keys = new Set < string > ( ) ;
8282 const promises = [ ] ;
8383
8484 let link ;
@@ -90,29 +90,25 @@ class ClassCompletionItemProvider implements CompletionItemProvider {
9090 const href = this . findLinkHref . exec ( link [ 1 ] ) ;
9191
9292 if ( href && href [ 2 ] . startsWith ( "http" ) ) {
93- promises . push ( this . fetchRemoteStyleSheet ( href [ 2 ] ) . then ( items => {
94- items . forEach ( ( value , key ) => items . set ( key , value ) ) ;
95- } ) ) ;
93+ promises . push ( this . fetchRemoteStyleSheet ( href [ 2 ] ) . then ( key => keys . add ( key ) ) ) ;
9694 }
9795 }
9896 }
9997
100- Promise . all ( promises ) . then ( ( ) => resolve ( items ) ) ;
98+ Promise . all ( promises ) . then ( ( ) => resolve ( keys ) ) ;
10199 } ) ;
102100 }
103101
104- findRemoteStyles ( ) : Thenable < Map < string , CompletionItem > > {
102+ findRemoteStyles ( ) : Thenable < Set < string > > {
105103 return new Promise ( resolve => {
106- const items = new Map < string , CompletionItem > ( ) ;
104+ const keys = new Set < string > ( ) ;
107105 const promises = [ ] ;
108106
109107 for ( let i = 0 ; i < this . remoteStyles . length ; i ++ ) {
110- promises . push ( this . fetchRemoteStyleSheet ( this . remoteStyles [ i ] ) . then ( found => {
111- found . forEach ( ( value , key ) => items . set ( key , value ) ) ;
112- } ) ) ;
108+ promises . push ( this . fetchRemoteStyleSheet ( this . remoteStyles [ i ] ) . then ( key => keys . add ( key ) ) ) ;
113109 }
114110
115- Promise . all ( promises ) . then ( ( ) => resolve ( items ) ) ;
111+ Promise . all ( promises ) . then ( ( ) => resolve ( keys ) ) ;
116112 } ) ;
117113 }
118114
@@ -145,13 +141,13 @@ class ClassCompletionItemProvider implements CompletionItemProvider {
145141 const canComplete = this . canComplete . test ( text ) ;
146142
147143 if ( canComplete ) {
148- const styles = this . findDocumentStyles ( text ) ;
149-
150- this . findRemoteStyles ( ) . then ( items => {
151- styles . forEach ( ( value , key ) => items . set ( key , value ) ) ;
144+ const items = this . findDocumentStyles ( text ) ;
152145
146+ this . findRemoteStyles ( ) . then ( styles => {
153147 this . findDocumentLinks ( text ) . then ( links => {
154- links . forEach ( ( value , key ) => items . set ( key , value ) ) ;
148+ links . forEach ( key => styles . add ( key ) ) ;
149+
150+ styles . forEach ( key => this . cache . get ( key ) ?. forEach ( ( value , name ) => items . set ( name , value ) ) ) ;
155151
156152 resolve ( [ ...items . values ( ) ] ) ;
157153 } ) ;
0 commit comments