MCPcopy Index your code
hub / github.com/darkreader/darkreader / createLimiter

Function createLimiter

src/background/utils/network.ts:169–207  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

167}
168
169function createLimiter() {
170 const loadingUrls = new Set<string>();
171 const awaitingUrls = new Map<string, Set<(response: FileLoaderResponse) => void>>();
172
173 function loading(url: string) {
174 const result = loadingUrls.has(url);
175 loadingUrls.add(url);
176 return result;
177 }
178
179 async function wait(url: string) {
180 return new Promise<FileLoaderResponse>((resolve) => {
181 if (!awaitingUrls.has(url)) {
182 awaitingUrls.set(url, new Set());
183 }
184 awaitingUrls.get(url)?.add(resolve);
185 });
186 }
187
188 async function loaded(url: string, data: string) {
189 loadingUrls.delete(url);
190 if (awaitingUrls.has(url)) {
191 const response = {data};
192 awaitingUrls.get(url)!.forEach((callback) => callback(response));
193 awaitingUrls.delete(url);
194 }
195 }
196
197 async function failed(url: string, error: Error) {
198 loadingUrls.delete(url);
199 if (awaitingUrls.has(url)) {
200 const response = {error};
201 awaitingUrls.get(url)!.forEach((callback) => callback(response));
202 awaitingUrls.delete(url);
203 }
204 }
205
206 return {loading, wait, loaded, failed};
207}
208
209export interface FetchRequestParameters {
210 url: string;

Callers 1

createFileLoaderFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected