Skip to content

Commit e9da115

Browse files
committed
Performance fixes
1 parent 78bf6cc commit e9da115

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

src/extension.ts

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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 = /<link([^>]+)>/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

Comments
 (0)