@1hive/connect-core
Version:
Access and interact with Aragon Organizations and their apps.
37 lines • 1.36 kB
JavaScript
import { ErrorInvalid } from '../errors';
import { getApmInternalAppInfo, getAragonOsInternalAppInfo, hasAppInfo, } from './overrides/index';
export function parseMetadata(name, metadata) {
try {
return JSON.parse(metadata);
}
catch (error) {
throw new ErrorInvalid(`Can’t parse ${name}: invalid JSON.`);
}
}
export async function fetchMetadata(ipfs, fileName, contentUri) {
var _a;
const cid = (_a = contentUri.match(/ipfs:(.*)/)) === null || _a === void 0 ? void 0 : _a[1];
return cid ? ipfs.json(cid, fileName) : {};
}
export async function resolveMetadata(ipfs, fileName, contentUri, metadata) {
if (metadata) {
return parseMetadata(fileName, metadata);
}
if (contentUri) {
return fetchMetadata(ipfs, fileName, contentUri);
}
return {};
}
export async function resolveManifest(ipfs, data) {
return resolveMetadata(ipfs, 'manifest.json', data.contentUri, data.manifest);
}
export async function resolveArtifact(ipfs, data) {
if (data.appId && hasAppInfo(data.appId, 'apm')) {
return getApmInternalAppInfo(data.appId);
}
if (data.appId && hasAppInfo(data.appId, 'aragon')) {
return getAragonOsInternalAppInfo(data.appId);
}
return resolveMetadata(ipfs, 'artifact.json', data.contentUri, data.artifact);
}
//# sourceMappingURL=metadata.js.map