@dpkit/zenodo
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
23 lines • 2.96 kB
JavaScript
import { getFormat, getName } from "@dpkit/core";
/**
* Normalizes a Zenodo file to Frictionless Data resource format
* @param props Object containing the Zenodo file to normalize
* @returns Normalized Resource object
*/
export function normalizeZenodoResource(zenodoResource) {
const path = normalizeZenodoPath(zenodoResource.links.self);
const resource = {
path,
name: getName(zenodoResource.key) ?? zenodoResource.id,
format: getFormat(zenodoResource.key),
bytes: zenodoResource.size,
hash: zenodoResource.checksum,
"zenodo:key": zenodoResource.key,
"zenodo:url": path,
};
return resource;
}
function normalizeZenodoPath(link) {
return link.replace("/api/", "/").replace(/\/content$/, "");
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcmVzb3VyY2UvcHJvY2Vzcy9ub3JtYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHaEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxjQUE4QjtJQUNwRSxNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTNELE1BQU0sUUFBUSxHQUFHO1FBQ2YsSUFBSTtRQUNKLElBQUksRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFO1FBQ3RELE1BQU0sRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUNyQyxLQUFLLEVBQUUsY0FBYyxDQUFDLElBQUk7UUFDMUIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxRQUFRO1FBQzdCLFlBQVksRUFBRSxjQUFjLENBQUMsR0FBRztRQUNoQyxZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFBO0lBRUQsT0FBTyxRQUFRLENBQUE7QUFDakIsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsSUFBWTtJQUN2QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEZvcm1hdCwgZ2V0TmFtZSB9IGZyb20gXCJAZHBraXQvY29yZVwiXG5pbXBvcnQgdHlwZSB7IFplbm9kb1Jlc291cmNlIH0gZnJvbSBcIi4uL1Jlc291cmNlLnRzXCJcblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgWmVub2RvIGZpbGUgdG8gRnJpY3Rpb25sZXNzIERhdGEgcmVzb3VyY2UgZm9ybWF0XG4gKiBAcGFyYW0gcHJvcHMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIFplbm9kbyBmaWxlIHRvIG5vcm1hbGl6ZVxuICogQHJldHVybnMgTm9ybWFsaXplZCBSZXNvdXJjZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVplbm9kb1Jlc291cmNlKHplbm9kb1Jlc291cmNlOiBaZW5vZG9SZXNvdXJjZSkge1xuICBjb25zdCBwYXRoID0gbm9ybWFsaXplWmVub2RvUGF0aCh6ZW5vZG9SZXNvdXJjZS5saW5rcy5zZWxmKVxuXG4gIGNvbnN0IHJlc291cmNlID0ge1xuICAgIHBhdGgsXG4gICAgbmFtZTogZ2V0TmFtZSh6ZW5vZG9SZXNvdXJjZS5rZXkpID8/IHplbm9kb1Jlc291cmNlLmlkLFxuICAgIGZvcm1hdDogZ2V0Rm9ybWF0KHplbm9kb1Jlc291cmNlLmtleSksXG4gICAgYnl0ZXM6IHplbm9kb1Jlc291cmNlLnNpemUsXG4gICAgaGFzaDogemVub2RvUmVzb3VyY2UuY2hlY2tzdW0sXG4gICAgXCJ6ZW5vZG86a2V5XCI6IHplbm9kb1Jlc291cmNlLmtleSxcbiAgICBcInplbm9kbzp1cmxcIjogcGF0aCxcbiAgfVxuXG4gIHJldHVybiByZXNvdXJjZVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVaZW5vZG9QYXRoKGxpbms6IHN0cmluZykge1xuICByZXR1cm4gbGluay5yZXBsYWNlKFwiL2FwaS9cIiwgXCIvXCIpLnJlcGxhY2UoL1xcL2NvbnRlbnQkLywgXCJcIilcbn1cbiJdfQ==