30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
export const DB_BASE_URL = process.env.NODE_ENV === 'development' ? '' : 'https://dbd-db.neru.rip';
|
|
|
|
const _cache = new Map<string, Promise<any>>();
|
|
|
|
export function fetchDB<T = any>(path: string): Promise<T> {
|
|
if (!_cache.has(path)) {
|
|
_cache.set(
|
|
path,
|
|
fetch(`${DB_BASE_URL}${path}`)
|
|
.then(r => {
|
|
if (!r.ok) throw new Error(`[db] ${r.status} ${path}`);
|
|
return r.json();
|
|
})
|
|
.catch(err => {
|
|
_cache.delete(path);
|
|
console.error(err);
|
|
return [];
|
|
})
|
|
);
|
|
}
|
|
return _cache.get(path)!;
|
|
}
|
|
|
|
export const fetchCharacters = () => fetchDB('/data/characters.json');
|
|
export const fetchCustomizations = () => fetchDB('/data/customization_items.json');
|
|
export const fetchItems = () => fetchDB('/data/items.json');
|
|
export const fetchOfferings = () => fetchDB('/data/offerings.json');
|
|
export const fetchDLCs = () => fetchDB('/data/dlcs.json');
|
|
export const fetchAddons = () => fetchDB('/data/addons.json');
|
|
export const fetchPerks = () => fetchDB('/data/perks.json'); |