@granito/ngx-hal-client
Version:
A HAL client to be used in Angular projects
33 lines • 4 kB
JavaScript
import { Collection } from './internal';
/**
* Convert any item, be that a {@link Resource} or {@link Collection}
* to a plain {@link Object} or {@link Array}. On conversion
* HAL-related properties (`_client`, `_links`, `_embedded`)
* are not included in the resulting object. Primitive types
* as well as `null` or `undefined` are returned unchanged.
* If the argument is an array, every item of the returned array
* is converted recursively. For {@link Collection} it returns
* the array of values where each item is converted recursively.
*
* @param item the item to convert
* @returns an object, array, primitive value, `undefined` or `null`
*/
export function objectFrom(item) {
if (typeof item !== 'object' || item === null)
return item;
if (item instanceof Collection)
return objectFrom(item.values);
if (Array.isArray(item))
return item.map(x => objectFrom(x));
const { _client, _links, _embedded, ...object } = item;
return object;
}
/**
* @param arg argument to test
* @returns `false` if the argument is `null` or `undefined` and `true`
* otherwise
*/
export function isDefined(arg) {
return arg !== undefined && arg !== null;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxZQUFZLENBQUM7QUFFbEQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFTO0lBQ2hDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBRWhCLElBQUksSUFBSSxZQUFZLFVBQVU7UUFDMUIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRW5DLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRXZELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxHQUF5QjtJQUVsRCxPQUFPLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvbiwgUmVzb3VyY2UgfSBmcm9tICcuL2ludGVybmFsJztcblxuLyoqXG4gKiBDb252ZXJ0IGFueSBpdGVtLCBiZSB0aGF0IGEge0BsaW5rIFJlc291cmNlfSBvciB7QGxpbmsgQ29sbGVjdGlvbn1cbiAqIHRvIGEgcGxhaW4ge0BsaW5rIE9iamVjdH0gb3Ige0BsaW5rIEFycmF5fS4gT24gY29udmVyc2lvblxuICogSEFMLXJlbGF0ZWQgcHJvcGVydGllcyAoYF9jbGllbnRgLCBgX2xpbmtzYCwgYF9lbWJlZGRlZGApXG4gKiBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LiBQcmltaXRpdmUgdHlwZXNcbiAqIGFzIHdlbGwgYXMgYG51bGxgIG9yIGB1bmRlZmluZWRgIGFyZSByZXR1cm5lZCB1bmNoYW5nZWQuXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gYXJyYXksIGV2ZXJ5IGl0ZW0gb2YgdGhlIHJldHVybmVkIGFycmF5XG4gKiBpcyBjb252ZXJ0ZWQgcmVjdXJzaXZlbHkuIEZvciB7QGxpbmsgQ29sbGVjdGlvbn0gaXQgcmV0dXJuc1xuICogdGhlIGFycmF5IG9mIHZhbHVlcyB3aGVyZSBlYWNoIGl0ZW0gaXMgY29udmVydGVkIHJlY3Vyc2l2ZWx5LlxuICpcbiAqIEBwYXJhbSBpdGVtIHRoZSBpdGVtIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIGFuIG9iamVjdCwgYXJyYXksIHByaW1pdGl2ZSB2YWx1ZSwgYHVuZGVmaW5lZGAgb3IgYG51bGxgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RGcm9tKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnb2JqZWN0JyB8fCBpdGVtID09PSBudWxsKVxuICAgICAgICByZXR1cm4gaXRlbTtcblxuICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQ29sbGVjdGlvbilcbiAgICAgICAgcmV0dXJuIG9iamVjdEZyb20oaXRlbS52YWx1ZXMpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpXG4gICAgICAgIHJldHVybiBpdGVtLm1hcCh4ID0+IG9iamVjdEZyb20oeCkpO1xuXG4gICAgY29uc3QgeyBfY2xpZW50LCBfbGlua3MsIF9lbWJlZGRlZCwgLi4ub2JqZWN0IH0gPSBpdGVtO1xuXG4gICAgcmV0dXJuIG9iamVjdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gYXJnIGFyZ3VtZW50IHRvIHRlc3RcbiAqIEByZXR1cm5zIGBmYWxzZWAgaWYgdGhlIGFyZ3VtZW50IGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYCBhbmQgYHRydWVgXG4gKiBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVmaW5lZDxUPihhcmc6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTpcbiAgICBhcmcgaXMgVCBleHRlbmRzIG51bGwgfCB1bmRlZmluZWQgPyBuZXZlciA6IFQge1xuICAgIHJldHVybiBhcmcgIT09IHVuZGVmaW5lZCAmJiBhcmcgIT09IG51bGw7XG59XG4iXX0=