/ node_modules / @jet / environment / json / reader / traverse.js
traverse.js
 1  "use strict";
 2  Object.defineProperty(exports, "__esModule", { value: true });
 3  exports.traverse = void 0;
 4  const optional_1 = require("../../types/optional");
 5  const key_path_1 = require("./key-path");
 6  function traverse(object, keyPath) {
 7      if (typeof object !== "object") {
 8          return object;
 9      }
10      if (!(0, optional_1.isSome)(object)) {
11          return object;
12      }
13      const keys = (0, key_path_1.keysOf)(keyPath);
14      switch (keys.length) {
15          case 0:
16              return object;
17          case 1:
18              return object[keys[0]];
19          default:
20              // eslint-disable-next-line no-case-declarations
21              let currentObject = object;
22              for (const key of keys) {
23                  const currentValue = currentObject[key];
24                  if (typeof currentValue !== "object") {
25                      return currentValue;
26                  }
27                  if (!(0, optional_1.isSome)(currentValue)) {
28                      return currentValue;
29                  }
30                  currentObject = currentValue;
31              }
32              return currentObject;
33      }
34  }
35  exports.traverse = traverse;
36  //# sourceMappingURL=traverse.js.map