UNPKG

auri

Version:

Organize package changes and releases

48 lines (47 loc) 1.35 kB
export function parsePackageJSON(data) { if (typeof data !== "object" || data === null) { throw new Error("Invalid package.json"); } let name; if ("name" in data && typeof data.name === "string") { name = data.name; } else { throw new Error("Missing or invalid 'name' field"); } let version; if ("version" in data && typeof data.version === "string") { version = data.version; } else { throw new Error("Missing or invalid 'version' field"); } if (!/^[a-zA-Z0-9-._]*$/.test(version)) { throw new Error("Missing or invalid 'version' field"); } if (version.includes("..")) { throw new Error("Missing or invalid 'version' field"); } let repository; if ("repository" in data && typeof data.repository === "object" && data.repository !== null && "url" in data.repository && typeof data.repository.url === "string") { if (data.repository.url.endsWith(".git")) { repository = data.repository.url; } else { repository = data.repository.url + ".git"; } } else { throw new Error("Missing or invalid 'repository.url' field"); } const metadata = { name, version, repository }; return metadata; }