@stackend/api
Version:
JS bindings to api.stackend.com
138 lines • 3.86 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports._objectToQueryParameters = exports._arrayToQueryParameters = exports.toQueryParameters = exports.mapGraphQLList = exports.forEachGraphQLList = exports.getPreviousCursor = exports.getNextCursor = exports.previousPage = exports.nextPage = void 0;
/**
* Create a request to the next page
* @param req
* @param after
* @param first, if not present taken from req.last or defaults to 10
*/
function nextPage(req, after, first) {
var r = __assign(__assign({}, req), { after: after, first: first || req.first || req.last || 10 });
delete r['before'];
delete r['last'];
return r;
}
exports.nextPage = nextPage;
/**
* Create a request to the previous page
* @param req
* @param before
* @param last, if not present taken from req.first or defaults to 10
*/
function previousPage(req, before, last) {
var r = __assign(__assign({}, req), { before: before, last: last || req.last || req.first || 10 });
delete r['after'];
delete r['first'];
return r;
}
exports.previousPage = previousPage;
/**
* Get the next cursor for a list, or null, if not available
* @param list
*/
function getNextCursor(list) {
if (list.pageInfo.hasNextPage && list.edges.length !== 0) {
var x = list.edges[list.edges.length - 1];
return x.cursor;
}
return null;
}
exports.getNextCursor = getNextCursor;
/**
* Get the previous cursor for a list, or null, if not available
* @param list
*/
function getPreviousCursor(list) {
if (list.pageInfo.hasPreviousPage && list.edges.length !== 0) {
var x = list.edges[0];
return x.cursor;
}
return null;
}
exports.getPreviousCursor = getPreviousCursor;
/**
* Iterate all list nodes
* @param list
* @param apply
*/
function forEachGraphQLList(list, apply) {
if (!list || !list.edges) {
return;
}
list.edges.forEach(function (n) { return apply(n.node); });
}
exports.forEachGraphQLList = forEachGraphQLList;
/**
* Map each node of a graph ql list
* @param list
* @param apply
*/
function mapGraphQLList(list, apply) {
if (!list || !list.edges) {
return [];
}
return list.edges.map(function (value, index) { return apply(value.node, index); });
}
exports.mapGraphQLList = mapGraphQLList;
/**
* Convert a js object into graphql format query
* @param o
*/
function toQueryParameters(o) {
if (o === null) {
return 'null';
}
var t = typeof o;
if (t === 'undefined') {
return 'null';
}
if (t !== 'object') {
// Primitive
return JSON.stringify(o);
}
if (Array.isArray(o)) {
return _arrayToQueryParameters(o);
}
return _objectToQueryParameters(o);
}
exports.toQueryParameters = toQueryParameters;
function _arrayToQueryParameters(a) {
var r = '[';
for (var i = 0; i < a.length; i++) {
var l = a[i];
if (i != 0) {
r += ',';
}
r += toQueryParameters(l);
}
r += ']';
return r;
}
exports._arrayToQueryParameters = _arrayToQueryParameters;
function _objectToQueryParameters(o) {
var r = '{';
Object.keys(o).forEach(function (k, i) {
if (i !== 0) {
r += ',';
}
r += k + ':';
var v = o[k];
r += toQueryParameters(v);
});
r += '}';
return r;
}
exports._objectToQueryParameters = _objectToQueryParameters;
//# sourceMappingURL=graphql.js.map