"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ODATA_PARAMS = ['select', 'expand', 'orderby', 'top', 'skip', 'filter', 'format', 'inlinecount'];
exports.DATA_ROOT = 'OData.svc';
exports.combineODataFieldParameters = (...params) => {
params.forEach((param) => {
if (typeof param === 'string') {
param = [param];
}
});
params = params.filter((param) => param && param.length > 0);
return [...new Set([].concat.apply([], params))];
};
exports.buildUrlParamString = (config, options) => {
if (!options) {
return '';
}
if (config.RequiredSelect === 'all' || config.DefaultSelect === 'all' || options.select === 'all') {
options.select = undefined;
}
else {
options.select = exports.combineODataFieldParameters(config.RequiredSelect, options.select || config.DefaultSelect);
}
options.metadata = options.metadata || config.DefaultMetadata;
options.inlinecount = options.inlinecount || config.DefaultInlineCount;
options.expand = options.expand || config.DefaultExpand;
options.top = options.top || config.DefaultTop;
const segments = [];
for (const key in options) {
const name = ODATA_PARAMS.indexOf(key) > -1 ? `$${key}` : key;
const plainValue = options[key];
let parsedValue = plainValue;
if (plainValue instanceof Array && plainValue.length && plainValue.length > 0) {
parsedValue = plainValue.map((v) => v.join && v.join(' ') || v).join(',');
}
if (name && parsedValue && parsedValue.length) {
segments.push({ name, value: parsedValue });
}
}
return segments.map((s) => `${s.name}=${s.value}`).join('&');
};
exports.getContentURLbyPath = (path) => {
if (typeof path === 'undefined' || path.indexOf('/') < 0 || path.length <= 1) {
throw new Error('This is not a valid path.');
}
if (exports.isItemPath(path)) {
return path;
}
const lastSlashPosition = path.lastIndexOf('/');
const name = path.substring(lastSlashPosition + 1);
const parentPath = path.substring(0, lastSlashPosition);
let url;
if (name.indexOf('Root') > -1) {
url = `${parentPath}/('${name}')`;
}
else {
url = `${parentPath}('${name}')`;
}
return url;
};
exports.getContentUrlbyId = (id) => {
return `/content(${id})`;
};
exports.isItemPath = (path) => {
return path.indexOf("('") >= 0 && path.indexOf("')") === path.length - 2;
};
exports.joinPaths = (...args) => {
const trimSlashes = (path) => {
if (path.endsWith('/')) {
path = path.substring(0, path.length - 1);
}
if (path.startsWith('/')) {
path = path.substring(1, path.length);
}
return path;
};
return args.map(trimSlashes).join('/');
};
//# sourceMappingURL=ODataHelper.js.map |