26 lines
468 B
JavaScript
26 lines
468 B
JavaScript
|
'use strict';
|
||
|
|
||
|
module.exports = function lookupLocalFields(cur, path, val) {
|
||
|
if (cur == null) {
|
||
|
return cur;
|
||
|
}
|
||
|
|
||
|
if (cur._doc != null) {
|
||
|
cur = cur._doc;
|
||
|
}
|
||
|
|
||
|
if (arguments.length >= 3) {
|
||
|
cur[path] = val;
|
||
|
return val;
|
||
|
}
|
||
|
|
||
|
|
||
|
// Support populating paths under maps using `map.$*.subpath`
|
||
|
if (path === '$*') {
|
||
|
return cur instanceof Map ?
|
||
|
Array.from(cur.values()) :
|
||
|
Object.keys(cur).map(key => cur[key]);
|
||
|
}
|
||
|
|
||
|
return cur[path];
|
||
|
};
|