UNPKG

@yuna0x0/anilist-node

Version:

A lightweight Node.js wrapper for the AniList API

41 lines (33 loc) 1.11 kB
/** * Build a query header for query/mutation queries with object * values. * @param {String} queryType - The type of query (ie: query or mutation) * @param {String} queryTarget - What query object is it? (SaveMediaListEntry or Media) * @param {Object} object - Object of input values to use in the header. */ const headerBuilder = function (queryType, queryTarget, object) { let query = `${queryType} { ${queryTarget} (`; const keys = Object.keys(object); const values = Object.values(object); keys.forEach((key, value) => { if (key === "startedAt" || key === "completedAt") { if (typeof values[value] !== "object") { throw new Error("Date keys are not objects!"); } query += key + ": " + JSON.stringify(values[value]).replace(/"/g, ""); if (value + 1 !== keys.length) { query += ", "; } return; } if (typeof values[value] === "object") { throw new Error("Provided object has a nested value!"); } query += key + ": " + values[value]; if (value + 1 !== keys.length) { query += ", "; } }); return query + ") {"; }; module.exports = headerBuilder;