var deepKeys = (module.exports.deepKeys = function deepKeys(
  object,
  options,
  prefix
) {
  options = options || {};

  if (typeof prefix === "undefined") {
    prefix = [];
  }

  var keys = [];

  for (var k in object) {
    if (!Object.hasOwnProperty.call(object, k)) {
      continue;
    }

    if (!options.leavesOnly || typeof object[k] !== "object") {
      keys.push(prefix.concat([k]));
    }

    if (typeof object[k] === "object" && object[k] !== null) {
      keys = keys.concat(
        deepKeys(
          object[k],
          { leavesOnly: options.leavesOnly },
          prefix.concat([k])
        )
      );
    }
  }

  if (options.asStrings) {
    keys = keys.map(function (e) {
      return e.join(".");
    });
  }

  return keys;
});
NVD is only using a subset of CWE for mapping instead of the entire CWE, and the weakness type is not covered by that subset.