synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
34 lines (32 loc) • 1.11 kB
JavaScript
/**
* Общие утилиты вычисления/записи пути по accessor'у.
*
* Используются базовым классом `Dispatcher` (`this.apiActions`/`this.keyedApiActions`).
*/ /**
* Вычисляет путь к свойству через Proxy-перехват обращений.
*
* @example resolvePath((s) => s.api.listRequest) // ['api', 'listRequest']
*/ function resolvePath(accessor) {
const path = [];
const handler = {
get (_, prop) {
if (typeof prop === 'string') {
path.push(prop);
}
return new Proxy({}, handler);
}
};
accessor(new Proxy({}, handler));
return path;
}
/**
* Записывает значение по пути в объекте (мутирует переданный draft).
*/ function setByPath(obj, path, value) {
let current = obj;
for(let i = 0; i < path.length - 1; i++){
current = current[path[i]];
}
current[path[path.length - 1]] = value;
}
export { resolvePath, setByPath };
//# sourceMappingURL=path.util.js.map