UNPKG

@crnk/angular-ngrx

Version:

Angular helper library for ngrx-json-api and crnk:

49 lines 1.61 kB
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