Files
apps.apple.com/node_modules/@jet/environment/json/reader/traverse.js
2025-11-04 05:03:50 +08:00

36 lines
1.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.traverse = void 0;
const optional_1 = require("../../types/optional");
const key_path_1 = require("./key-path");
function traverse(object, keyPath) {
if (typeof object !== "object") {
return object;
}
if (!(0, optional_1.isSome)(object)) {
return object;
}
const keys = (0, key_path_1.keysOf)(keyPath);
switch (keys.length) {
case 0:
return object;
case 1:
return object[keys[0]];
default:
// eslint-disable-next-line no-case-declarations
let currentObject = object;
for (const key of keys) {
const currentValue = currentObject[key];
if (typeof currentValue !== "object") {
return currentValue;
}
if (!(0, optional_1.isSome)(currentValue)) {
return currentValue;
}
currentObject = currentValue;
}
return currentObject;
}
}
exports.traverse = traverse;
//# sourceMappingURL=traverse.js.map