packagist-api-client
Version:
Packgist (PHP Package Repository) API client in JavaScript.
48 lines (47 loc) • 1.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const axios_1 = __importDefault(require("axios"));
async function getPackageMetadata(vp, ifModifiedSince = '') {
try {
const response = await axios_1.default.get(`https://repo.packagist.org/p/${constructVPString(vp)}.json`, {
headers: { 'if-modified-since': ifModifiedSince },
});
return { data: response.data, lastModified: response.headers['last-modified'] };
}
catch (e) {
if (e && e.response && e.response.status === 304) {
return { data: {}, lastModified: e.response.headers['last-modified'] };
}
throw e;
}
}
exports.getPackageMetadata = getPackageMetadata;
async function getPackageDetails(vp) {
try {
const response = await axios_1.default.get(`https://packagist.org/packages/${constructVPString(vp)}.json`);
return response.data;
}
catch (e) {
throw e;
}
}
exports.getPackageDetails = getPackageDetails;
function constructVPString(vp) {
if (typeof vp === 'string') {
return vp;
}
else if (typeof vp === 'object') {
return `${vp.vendor}/${vp.package}`;
}
else {
throw Error(`Requires string ("[vendor]/[package]") or object({vendor: [vendor], package: [package]})`);
}
}
async function getPackagistStats() {
const response = await axios_1.default.get('https://packagist.org/statistics.json');
return response.data;
}
exports.getPackagistStats = getPackagistStats;