|
@@ -16,8 +16,17 @@ import { TTL, deserializeArray, fsCache, serializeArray } from './lib/cache-file
|
|
|
|
|
|
|
|
const s = new Sema(2);
|
|
const s = new Sema(2);
|
|
|
|
|
|
|
|
-const latestTopUserAgentsPromise = fetchWithRetry('https://unpkg.com/top-user-agents@latest/src/desktop.json')
|
|
|
|
|
- .then(res => res.json<string[]>()).then(userAgents => userAgents.filter(ua => ua.startsWith('Mozilla/5.0 ')));
|
|
|
|
|
|
|
+const latestTopUserAgentsPromise = fsCache.apply(
|
|
|
|
|
+ 'https://unpkg.com/top-user-agents@latest/src/desktop.json',
|
|
|
|
|
+ () => fetchWithRetry('https://unpkg.com/top-user-agents@latest/src/desktop.json')
|
|
|
|
|
+ .then(res => res.json<string[]>())
|
|
|
|
|
+ .then(userAgents => userAgents.filter(ua => ua.startsWith('Mozilla/5.0 '))),
|
|
|
|
|
+ {
|
|
|
|
|
+ serializer: serializeArray,
|
|
|
|
|
+ deserializer: deserializeArray,
|
|
|
|
|
+ ttl: TTL.ONE_DAY()
|
|
|
|
|
+ }
|
|
|
|
|
+);
|
|
|
|
|
|
|
|
const querySpeedtestApi = async (keyword: string): Promise<Array<string | null>> => {
|
|
const querySpeedtestApi = async (keyword: string): Promise<Array<string | null>> => {
|
|
|
const topUserAgents = await latestTopUserAgentsPromise;
|
|
const topUserAgents = await latestTopUserAgentsPromise;
|