UNPKG

@kit-data-manager/pid-component

Version:

The PID-Component is a web component that can be used to evaluate and display FAIR Digital Objects, PIDs, ORCiDs, and possibly other identifiers in a user-friendly way. It is easily extensible to support other identifier types.

65 lines (64 loc) 2.09 kB
/*! * * Copyright 2024-2026 Karlsruhe Institute of Technology. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ let cacheInstance; async function open() { if ('caches' in self) { cacheInstance = await caches.open('pid-component'); } } export async function cachedFetch(url, init) { await open(); if (cacheInstance) { const response = await cacheInstance.match(url); if (response) { return response.json(); } else { let response; try { const parts = url.split('://'); if (parts.length > 1 && parts[0] !== 'https') { response = await fetch(`https://${parts[1]}`, init); if (!response) { console.log(`404 for https://${parts[1]} - trying http://${parts[1]}`); response = await fetch(`http://${parts[1]}`, init); } } else { response = await fetch(url, init); } } catch (error) { console.error('Fetch failed:', error); throw error; } await cacheInstance.put(url, response.clone()); return response.json(); } } else { const response = await fetch(url, init); return response.json(); } } export async function clearCache() { if (cacheInstance) { await cacheInstance.delete('pid-component'); } } //# sourceMappingURL=DataCache.js.map