HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/javago_test/node_modules/node-input-validator/lib/util/obj.js
let wildcardIterations = 1000;


function esc(key, options) {
  if (typeof options.escape === 'function') {
    return options.escape(key, options);
  }
  return key.split(options.separator).join(`\\${options.separator}`);
}

exports.setStrNotationRepetition = (repetition) => wildcardIterations = repetition;

exports.strNotations = function strNotations(target, customize = {}) {
  const options = {
    separator: '.',
    repetition: wildcardIterations,
    values: true,
    ...customize,
  };
  const sep = options.separator;
  const values = {};
  const keys = [];

  let currentRep = 0;

  function parse(obj, prev) {
    currentRep++;

    if (currentRep >= options.repetition) {
      // eslint-disable-next-line no-console
      throw new Error(`Max(${options.repetition}) repetation was reached.`);
    }

    const objKeys = Object.keys(obj);

    objKeys.forEach((k) => {
      const val = obj[k];
      const key = (prev ? prev + sep : '') + esc(k, options);

      if (Array.isArray(val) || (val !== null && typeof val === 'object')) {
        parse(val, key);
        keys.push(key);
        values[key] = val;
      } else {
        keys.push(key);
        values[key] = val;
      }
    });
  }

  parse(target);
  return options.values ? values : keys;
};