From bce557cc2dc767628bed6aac87301a1be7c5431b Mon Sep 17 00:00:00 2001 From: rxliuli Date: Tue, 4 Nov 2025 05:03:50 +0800 Subject: init commit --- .../@jet/environment/json/reader/traverse.js | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 node_modules/@jet/environment/json/reader/traverse.js (limited to 'node_modules/@jet/environment/json/reader/traverse.js') diff --git a/node_modules/@jet/environment/json/reader/traverse.js b/node_modules/@jet/environment/json/reader/traverse.js new file mode 100644 index 0000000..9f5d1ad --- /dev/null +++ b/node_modules/@jet/environment/json/reader/traverse.js @@ -0,0 +1,36 @@ +"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 \ No newline at end of file -- cgit v1.2.3