@data-client/rest
Version:
Quickly define typed REST resources and endpoints
15 lines • 3.23 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
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 = _extends({}, 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzY2hlbWEiLCJleHRyYWN0Q29sbGVjdGlvbiIsInMiLCJtYXBwZXIiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJDb2xsZWN0aW9uIiwib2JqQ29weSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiayIsImNvbGxlY3Rpb24iXSwic291cmNlcyI6WyIuLi9zcmMvZXh0cmFjdENvbGxlY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NoZW1hLCBzY2hlbWEgfSBmcm9tICdAZGF0YS1jbGllbnQvZW5kcG9pbnQnO1xuXG5pbXBvcnQgeyBFeHRyYWN0T2JqZWN0IH0gZnJvbSAnLi9leHRyYWN0T2JqZWN0LmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0cmFjdENvbGxlY3Rpb248XG4gIE0gZXh0ZW5kcyA8QyBleHRlbmRzIHNjaGVtYS5Db2xsZWN0aW9uPihjb2xsZWN0aW9uOiBDKSA9PiBhbnksXG4gIFMgZXh0ZW5kcyBTY2hlbWEgfCB1bmRlZmluZWQsXG4+KHM6IFMsIG1hcHBlcjogTSk6IEV4dHJhY3RDb2xsZWN0aW9uPFM+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBzICE9PSAnb2JqZWN0JyB8fCBzID09PSB1bmRlZmluZWQgfHwgQXJyYXkuaXNBcnJheShzKSkgcmV0dXJuO1xuICBpZiAocyBpbnN0YW5jZW9mIHNjaGVtYS5Db2xsZWN0aW9uKSB7XG4gICAgcmV0dXJuIG1hcHBlcihzIGFzIGFueSk7XG4gIH1cbiAgY29uc3Qgb2JqQ29weTogUmVjb3JkPHN0cmluZywgU2NoZW1hPiA9IHtcbiAgICAuLi4ocyBpbnN0YW5jZW9mIHNjaGVtYS5PYmplY3QgPyAocyBhcyBhbnkpLnNjaGVtYSA6IHMpLFxuICB9O1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqQ29weSkge1xuICAgIGlmICghb2JqQ29weVtrXSkgY29udGludWU7XG4gICAgY29uc3QgY29sbGVjdGlvbiA9IGV4dHJhY3RDb2xsZWN0aW9uKG9iakNvcHlba10sIG1hcHBlcik7XG4gICAgaWYgKGNvbGxlY3Rpb24pIHJldHVybiBjb2xsZWN0aW9uO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RDb2xsZWN0aW9uPFMgZXh0ZW5kcyBTY2hlbWEgfCB1bmRlZmluZWQ+ID1cbiAgUyBleHRlbmRzIChcbiAgICB7XG4gICAgICBwdXNoOiBhbnk7XG4gICAgICB1bnNoaWZ0OiBhbnk7XG4gICAgICBhc3NpZ246IGFueTtcbiAgICAgIHJlbW92ZTogYW55O1xuICAgICAgc2NoZW1hOiBTY2hlbWE7XG4gICAgfVxuICApID9cbiAgICBTXG4gIDogUyBleHRlbmRzIHNjaGVtYS5PYmplY3Q8aW5mZXIgVD4gPyBFeHRyYWN0T2JqZWN0PFQ+XG4gIDogUyBleHRlbmRzIEV4Y2x1ZGU8U2NoZW1hLCB7IFtLOiBzdHJpbmddOiBhbnkgfT4gPyBuZXZlclxuICA6IFMgZXh0ZW5kcyB7IFtLOiBzdHJpbmddOiBTY2hlbWEgfSA/IEV4dHJhY3RPYmplY3Q8Uz5cbiAgOiBuZXZlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQWlCQSxNQUFNLFFBQVEsdUJBQXVCO0FBSXRELGVBQWUsU0FBU0MsaUJBQWlCQSxDQUd2Q0MsQ0FBSSxFQUFFQyxNQUFTLEVBQW9DO0VBQ25ELElBQUksT0FBT0QsQ0FBQyxLQUFLLFFBQVEsSUFBSUEsQ0FBQyxLQUFLRSxTQUFTLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSixDQUFDLENBQUMsRUFBRTtFQUNsRSxJQUFJQSxDQUFDLFlBQVlGLE1BQU0sQ0FBQ08sVUFBVSxFQUFFO0lBQ2xDLE9BQU9KLE1BQU0sQ0FBQ0QsQ0FBUSxDQUFDO0VBQ3pCO0VBQ0EsTUFBTU0sT0FBK0IsR0FBQUMsUUFBQSxLQUMvQlAsQ0FBQyxZQUFZRixNQUFNLENBQUNVLE1BQU0sR0FBSVIsQ0FBQyxDQUFTRixNQUFNLEdBQUdFLENBQUMsQ0FDdkQ7RUFDRCxLQUFLLE1BQU1TLENBQUMsSUFBSUgsT0FBTyxFQUFFO0lBQ3ZCLElBQUksQ0FBQ0EsT0FBTyxDQUFDRyxDQUFDLENBQUMsRUFBRTtJQUNqQixNQUFNQyxVQUFVLEdBQUdYLGlCQUFpQixDQUFDTyxPQUFPLENBQUNHLENBQUMsQ0FBQyxFQUFFUixNQUFNLENBQUM7SUFDeEQsSUFBSVMsVUFBVSxFQUFFLE9BQU9BLFVBQVU7RUFDbkM7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==