UNPKG

@sap-cloud-sdk/core

Version:
56 lines 2.68 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSelectV2 = exports.getSelect = void 0; var odata_common_1 = require("../../odata-common"); /** * Get an object containing the given Selectables as query parameter, or an empty object if none were given. * This retrieves where in addition to the selection (`select`) there is also an expansion (`expand`) needed. * @typeparam EntityT - Type of the entity to get the selection for * @param selects - The list of selectables to be transformed to query parameters * @returns An object containing the query parameters or an empty object */ function getSelect(selects) { if (selects === void 0) { selects = []; } var select = getSelectsAsStrings(selects); return select.length ? { select: filterSelects(select).join(',') } : {}; } exports.getSelect = getSelect; exports.getSelectV2 = getSelect; function selectionLevel(select) { return select.split('/').slice(0, -1).join('/'); } function filterSelects(selects) { var allFieldSelects = selects.filter(function (select) { return select.endsWith('*'); }); var selectionLevels = allFieldSelects.map(function (select) { return selectionLevel(select); }); return __spreadArray(__spreadArray([], allFieldSelects, true), selects.filter(function (select) { return !selectionLevels.includes(selectionLevel(select)); }), true); } function getSelectsAsStrings(selectables, initialSelect, parent) { if (initialSelect === void 0) { initialSelect = []; } if (parent === void 0) { parent = ''; } return selectables.reduce(function (select, selectable) { var fullFieldName = getPath(parent, selectable._fieldName); if (selectable instanceof odata_common_1.Link) { if (selectable._selects.length) { return getSelectsAsStrings(selectable._selects, select, fullFieldName); } return __spreadArray(__spreadArray([], select, true), ["".concat(fullFieldName, "/*")], false); } return __spreadArray(__spreadArray([], select, true), [fullFieldName], false); }, initialSelect); } function getPath(parent, fieldName) { if (parent) { return "".concat(parent, "/").concat(fieldName); } return fieldName; } //# sourceMappingURL=get-select.js.map