@data-client/rest
Version:
Quickly define typed REST resources and endpoints
16 lines • 3.13 kB
JavaScript
import { schema } from '@data-client/endpoint';
export default function extractCollection(s, mapper) {
if (typeof s !== 'object' || s === undefined || Array.isArray(s)) return;
if (s instanceof schema.Collection) {
return mapper(s);
}
const objCopy = {
...(s instanceof schema.Object ? s.schema : s)
};
for (const k in objCopy) {
if (!objCopy[k]) continue;
const collection = extractCollection(objCopy[k], mapper);
if (collection) return collection;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzY2hlbWEiLCJleHRyYWN0Q29sbGVjdGlvbiIsInMiLCJtYXBwZXIiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJDb2xsZWN0aW9uIiwib2JqQ29weSIsIk9iamVjdCIsImsiLCJjb2xsZWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vc3JjL2V4dHJhY3RDb2xsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjaGVtYSwgc2NoZW1hIH0gZnJvbSAnQGRhdGEtY2xpZW50L2VuZHBvaW50JztcblxuaW1wb3J0IHsgRXh0cmFjdE9iamVjdCB9IGZyb20gJy4vZXh0cmFjdE9iamVjdC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dHJhY3RDb2xsZWN0aW9uPFxuICBNIGV4dGVuZHMgPEMgZXh0ZW5kcyBzY2hlbWEuQ29sbGVjdGlvbj4oY29sbGVjdGlvbjogQykgPT4gYW55LFxuICBTIGV4dGVuZHMgU2NoZW1hIHwgdW5kZWZpbmVkLFxuPihzOiBTLCBtYXBwZXI6IE0pOiBFeHRyYWN0Q29sbGVjdGlvbjxTPiB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcyAhPT0gJ29iamVjdCcgfHwgcyA9PT0gdW5kZWZpbmVkIHx8IEFycmF5LmlzQXJyYXkocykpIHJldHVybjtcbiAgaWYgKHMgaW5zdGFuY2VvZiBzY2hlbWEuQ29sbGVjdGlvbikge1xuICAgIHJldHVybiBtYXBwZXIocyBhcyBhbnkpO1xuICB9XG4gIGNvbnN0IG9iakNvcHk6IFJlY29yZDxzdHJpbmcsIFNjaGVtYT4gPSB7XG4gICAgLi4uKHMgaW5zdGFuY2VvZiBzY2hlbWEuT2JqZWN0ID8gKHMgYXMgYW55KS5zY2hlbWEgOiBzKSxcbiAgfTtcbiAgZm9yIChjb25zdCBrIGluIG9iakNvcHkpIHtcbiAgICBpZiAoIW9iakNvcHlba10pIGNvbnRpbnVlO1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBleHRyYWN0Q29sbGVjdGlvbihvYmpDb3B5W2tdLCBtYXBwZXIpO1xuICAgIGlmIChjb2xsZWN0aW9uKSByZXR1cm4gY29sbGVjdGlvbjtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFeHRyYWN0Q29sbGVjdGlvbjxTIGV4dGVuZHMgU2NoZW1hIHwgdW5kZWZpbmVkPiA9XG4gIFMgZXh0ZW5kcyAoXG4gICAge1xuICAgICAgcHVzaDogYW55O1xuICAgICAgdW5zaGlmdDogYW55O1xuICAgICAgYXNzaWduOiBhbnk7XG4gICAgICBzY2hlbWE6IFNjaGVtYTtcbiAgICB9XG4gICkgP1xuICAgIFNcbiAgOiBTIGV4dGVuZHMgc2NoZW1hLk9iamVjdDxpbmZlciBUPiA/IEV4dHJhY3RPYmplY3Q8VD5cbiAgOiBTIGV4dGVuZHMgRXhjbHVkZTxTY2hlbWEsIHsgW0s6IHN0cmluZ106IGFueSB9PiA/IG5ldmVyXG4gIDogUyBleHRlbmRzIHsgW0s6IHN0cmluZ106IFNjaGVtYSB9ID8gRXh0cmFjdE9iamVjdDxTPlxuICA6IG5ldmVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFpQkEsTUFBTSxRQUFRLHVCQUF1QjtBQUl0RCxlQUFlLFNBQVNDLGlCQUFpQkEsQ0FHdkNDLENBQUksRUFBRUMsTUFBUyxFQUFvQztFQUNuRCxJQUFJLE9BQU9ELENBQUMsS0FBSyxRQUFRLElBQUlBLENBQUMsS0FBS0UsU0FBUyxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osQ0FBQyxDQUFDLEVBQUU7RUFDbEUsSUFBSUEsQ0FBQyxZQUFZRixNQUFNLENBQUNPLFVBQVUsRUFBRTtJQUNsQyxPQUFPSixNQUFNLENBQUNELENBQVEsQ0FBQztFQUN6QjtFQUNBLE1BQU1NLE9BQStCLEdBQUc7SUFDdEMsSUFBSU4sQ0FBQyxZQUFZRixNQUFNLENBQUNTLE1BQU0sR0FBSVAsQ0FBQyxDQUFTRixNQUFNLEdBQUdFLENBQUM7RUFDeEQsQ0FBQztFQUNELEtBQUssTUFBTVEsQ0FBQyxJQUFJRixPQUFPLEVBQUU7SUFDdkIsSUFBSSxDQUFDQSxPQUFPLENBQUNFLENBQUMsQ0FBQyxFQUFFO0lBQ2pCLE1BQU1DLFVBQVUsR0FBR1YsaUJBQWlCLENBQUNPLE9BQU8sQ0FBQ0UsQ0FBQyxDQUFDLEVBQUVQLE1BQU0sQ0FBQztJQUN4RCxJQUFJUSxVQUFVLEVBQUUsT0FBT0EsVUFBVTtFQUNuQztBQUNGIiwiaWdub3JlTGlzdCI6W119