@data-client/rest
Version:
Quickly define typed REST resources and endpoints
16 lines • 3.41 kB
JavaScript
import { schema } from '@data-client/endpoint';
export default function mapCollection(s, mapper) {
if (typeof s !== 'object' || s === undefined) return s;
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;
objCopy[k] = mapCollection(objCopy[k], mapper);
}
return objCopy;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzY2hlbWEiLCJtYXBDb2xsZWN0aW9uIiwicyIsIm1hcHBlciIsInVuZGVmaW5lZCIsIkNvbGxlY3Rpb24iLCJvYmpDb3B5IiwiT2JqZWN0IiwiayJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXBDb2xsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjaGVtYSwgc2NoZW1hIH0gZnJvbSAnQGRhdGEtY2xpZW50L2VuZHBvaW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFwQ29sbGVjdGlvbjxcbiAgTSBleHRlbmRzIDxDIGV4dGVuZHMgc2NoZW1hLkNvbGxlY3Rpb24+KGNvbGxlY3Rpb246IEMpID0+IGFueSxcbiAgUyBleHRlbmRzIFNjaGVtYSB8IHVuZGVmaW5lZCxcbj4oXG4gIHM6IFMsXG4gIG1hcHBlcjogTSxcbik6IFMgZXh0ZW5kcyBzY2hlbWEuQ29sbGVjdGlvbiA/IFJldHVyblR5cGU8dHlwZW9mIG1hcHBlcjxTPj5cbjogUyBleHRlbmRzIHNjaGVtYS5PYmplY3Q8aW5mZXIgVD4gP1xuICB7XG4gICAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBTY2hlbWEgPyB0eXBlb2YgbWFwQ29sbGVjdGlvbjxNLCBUW0tdPiA6IFRbS107XG4gIH1cbjogUyBleHRlbmRzIHsgW0s6IHN0cmluZ106IGFueSB9ID9cbiAge1xuICAgIFtLIGluIGtleW9mIFNdOiBTW0tdIGV4dGVuZHMgU2NoZW1hID8gdHlwZW9mIG1hcENvbGxlY3Rpb248TSwgU1tLXT4gOiBTW0tdO1xuICB9XG46IFMge1xuICBpZiAodHlwZW9mIHMgIT09ICdvYmplY3QnIHx8IHMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHMgYXMgYW55O1xuICBpZiAocyBpbnN0YW5jZW9mIHNjaGVtYS5Db2xsZWN0aW9uKSB7XG4gICAgcmV0dXJuIG1hcHBlcihzIGFzIGFueSk7XG4gIH1cbiAgY29uc3Qgb2JqQ29weTogUmVjb3JkPHN0cmluZywgU2NoZW1hPiA9IHtcbiAgICAuLi4ocyBpbnN0YW5jZW9mIHNjaGVtYS5PYmplY3QgPyAocyBhcyBhbnkpLnNjaGVtYSA6IHMpLFxuICB9O1xuICBmb3IgKGNvbnN0IGsgaW4gb2JqQ29weSkge1xuICAgIGlmICghb2JqQ29weVtrXSkgY29udGludWU7XG4gICAgb2JqQ29weVtrXSA9IG1hcENvbGxlY3Rpb24ob2JqQ29weVtrXSwgbWFwcGVyKSBhcyBhbnk7XG4gIH1cbiAgcmV0dXJuIG9iakNvcHkgYXMgYW55O1xufVxuXG50eXBlIE1hcENvbGxlY3Rpb248XG4gIE0gZXh0ZW5kcyA8QyBleHRlbmRzIHNjaGVtYS5Db2xsZWN0aW9uPihjb2xsZWN0aW9uOiBDKSA9PiBhbnksXG4gIFMgZXh0ZW5kcyBTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID1cbiAgUyBleHRlbmRzIHNjaGVtYS5Db2xsZWN0aW9uID8gUmV0dXJuVHlwZTxNPlxuICA6IFMgZXh0ZW5kcyBzY2hlbWEuT2JqZWN0PGluZmVyIFQ+ID8gTWFwQ29sbGVjdGlvbjxNLCBUPlxuICA6IFMgZXh0ZW5kcyB7IFtLOiBzdHJpbmddOiBhbnkgfSA/IE1hcE9iamVjdDxNLCBTPlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBNYXBPYmplY3Q8XG4gIE0gZXh0ZW5kcyAoY29sbGVjdGlvbjogc2NoZW1hLkNvbGxlY3Rpb24pID0+IGFueSxcbiAgUyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4+ID0ge1xuICBbSyBpbiBrZXlvZiBTXTogU1tLXSBleHRlbmRzIFNjaGVtYSA/IE1hcENvbGxlY3Rpb248TSwgU1tLXT4gOiBTW0tdO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBaUJBLE1BQU0sUUFBUSx1QkFBdUI7QUFFdEQsZUFBZSxTQUFTQyxhQUFhQSxDQUluQ0MsQ0FBSSxFQUNKQyxNQUFTLEVBVVA7RUFDRixJQUFJLE9BQU9ELENBQUMsS0FBSyxRQUFRLElBQUlBLENBQUMsS0FBS0UsU0FBUyxFQUFFLE9BQU9GLENBQUM7RUFDdEQsSUFBSUEsQ0FBQyxZQUFZRixNQUFNLENBQUNLLFVBQVUsRUFBRTtJQUNsQyxPQUFPRixNQUFNLENBQUNELENBQVEsQ0FBQztFQUN6QjtFQUNBLE1BQU1JLE9BQStCLEdBQUc7SUFDdEMsSUFBSUosQ0FBQyxZQUFZRixNQUFNLENBQUNPLE1BQU0sR0FBSUwsQ0FBQyxDQUFTRixNQUFNLEdBQUdFLENBQUM7RUFDeEQsQ0FBQztFQUNELEtBQUssTUFBTU0sQ0FBQyxJQUFJRixPQUFPLEVBQUU7SUFDdkIsSUFBSSxDQUFDQSxPQUFPLENBQUNFLENBQUMsQ0FBQyxFQUFFO0lBQ2pCRixPQUFPLENBQUNFLENBQUMsQ0FBQyxHQUFHUCxhQUFhLENBQUNLLE9BQU8sQ0FBQ0UsQ0FBQyxDQUFDLEVBQUVMLE1BQU0sQ0FBUTtFQUN2RDtFQUNBLE9BQU9HLE9BQU87QUFDaEIiLCJpZ25vcmVMaXN0IjpbXX0=