import { config } from './config.js' import fetch from 'node-fetch' import * as cache from './cache.js' import { getRedisKey } from './util.js' export async function getMergedMetadata ({ version }) { const metadata = await cache.get(getRedisKey({ version, name: 'mergedMetadata' })) if (metadata) return JSON.parse(metadata) await config.load() const newMetadata = await Promise.all(config.urls.map(async url => { const { origin } = new URL(url) try { const response = await fetch(new URL('meta.json', origin)) if (!response.ok) return return response.json() } catch (e) { // unhandled } })) newMetadata.push({ id: 'ui-middleware', name: 'UI Middleware', buildDate: process.env.BUILD_TIMESTAMP, commitSha: process.env.CI_COMMIT_SHA, version: process.env.APP_VERSION }) // only return when contains data const filtered = newMetadata.filter(Boolean) await cache.set(getRedisKey({ version, name: 'mergedMetadata' }), JSON.stringify(filtered)) return filtered }