jspteroapi
Version:
A pterodactyl v1 api using undici
48 lines (47 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.paginate = exports.makeOptions = void 0;
const makeOptions = (options) => {
const query = new URLSearchParams();
if (options.page) {
query.append('page', options.page.toString());
// Also append per page just in case it's not set
// I make 75 the default becase it's a reasonable default
query.append('per_page', '75');
}
if (options.includes) {
let includes = '';
const optionsArray = Object.entries(options.includes);
if (optionsArray.some(([, value]) => value === true)) {
optionsArray.forEach(([key, value]) => {
if (value)
includes += `${key},`;
});
}
if (includes) {
query.append('include', includes.slice(0, -1));
}
}
if (options.filter)
query.append(`filter[${options.filter.filterBy}]`, options.filter.filter);
if (options.admin)
query.append('type', 'admin-all');
const queryString = query.toString();
return queryString ? `?${queryString}` : '';
};
exports.makeOptions = makeOptions;
const paginate = async (request, options) => {
const page1 = await request({ ...options, page: 1 });
let data = page1.data;
if (page1.meta.pagination.total_pages > 1) {
for (let i = 2; i <= page1.meta.pagination.total_pages; i++) {
const page = await request({
...options,
page: i
});
data = data.concat(page.data);
}
}
return data;
};
exports.paginate = paginate;