@crnk/angular-ngrx
Version:
Angular helper library for ngrx-json-api and crnk:
49 lines • 1.61 kB
JavaScript
import * as _ from 'lodash';
export function extractType(it) {
if (it.charAt(0) === '[') {
var sep = it.indexOf(']');
return {
type: it.substr(1, sep - 1),
path: it.substr(sep + 1)
};
}
else {
return {
type: '',
path: it
};
}
}
function getType(it) {
return it.type;
}
function getPath(it) {
return it.path;
}
function getUrlPath(paramName, it) {
return paramName + (it[0] !== '' ? '[' + it[0] + ']' : '') + '=' + it[1].map(getPath).join(',');
}
function generateCrnkQueryParams(paramName, included) {
if (_.isEmpty(included)) {
return '';
}
var includeGroups = _.toPairs(_.groupBy(included.map(extractType), getType));
return includeGroups.map(function (it) { return getUrlPath(paramName, it); }).join('&');
}
export function generateCrnkIncludedQueryParams(included) {
return generateCrnkQueryParams('include', included);
}
export function generateCrnkFieldsQueryParams(fields) {
return generateCrnkQueryParams('fields', fields);
}
export var CRNK_URL_BUILDER = {
generateIncludedQueryParams: generateCrnkIncludedQueryParams,
generateFieldsQueryParams: generateCrnkFieldsQueryParams,
};
/* TODO
generateFilteringQueryParams: generateCrnkFilteringQueryParams,
generateFilteringQueryParams?: (params: Array<FilteringParam>) => string;
generateSortingQueryParams?: (params: Array<SortingParam>) => string;
generateQueryParams?: (...params: Array<string>) => string;
*/
//# sourceMappingURL=crnk.query.js.map