UNPKG

packagist-api-client

Version:

Packgist (PHP Package Repository) API client in JavaScript.

66 lines (65 loc) 2.25 kB
"use strict"; 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 fetchPaginatedResult(url) { const response = await axios_1.default.get(url.toString()); if (!response.data.next) { return response.data; } return { ...response.data, next: async () => fetchPaginatedResult(response.data.next) }; } async function search({ name, tags, type, }, pageSize) { const url = new URL('https://packagist.org/search.json'); url.searchParams.append('q', name); addTagQueries(url, tags); url.searchParams.append('type', type); if (pageSize) { url.searchParams.append('per_page', pageSize.toString()); } return fetchPaginatedResult(url); } exports.search = search; async function searchByName(name, pageSize) { const url = new URL('https://packagist.org/search.json'); url.searchParams.append('q', name); if (pageSize) { url.searchParams.append('per_page', pageSize.toString()); } return fetchPaginatedResult(url); } exports.searchByName = searchByName; async function searchByTag(tags, pageSize) { const url = new URL('https://packagist.org/search.json'); addTagQueries(url, tags); if (pageSize) { url.searchParams.append('per_page', pageSize.toString()); } return fetchPaginatedResult(url); } exports.searchByTag = searchByTag; async function searchByType(type, pageSize) { const url = new URL('https://packagist.org/search.json'); url.searchParams.append('type', type); if (pageSize) { url.searchParams.append('per_page', pageSize.toString()); } return fetchPaginatedResult(url); } exports.searchByType = searchByType; function addTagQueries(url, tags) { if (typeof tags === 'string') { url.searchParams.append('tags', tags); } else if (Array.isArray(tags)) { tags.forEach((tag, i) => { url.searchParams.append(`tags[${i}]`, tag); }); } else { throw Error('tags input must be a string or an Array of strings'); } return url; }