{"version":3,"file":"decompose.cjs","names":["DEFAULT_DECOMPOSE_OPTIONS","DELIMITER","LEFT_BRACKET","RIGHT_BRACKET","isPrimitive"],"sources":["../src/decompose.ts"],"sourcesContent":["import { DEFAULT_DECOMPOSE_OPTIONS } from './constants';\nimport {\n  DELIMITER,\n  LEFT_BRACKET,\n  RIGHT_BRACKET,\n} from './constants/strings';\nimport { isPrimitive } from './helpers';\nimport type { Decompose, DecomposeOptions } from './types.types';\n\nfunction ddecompose(\n  arg: any,\n  prev = '',\n  options: DecomposeOptions = DEFAULT_DECOMPOSE_OPTIONS,\n  first = true,\n) {\n  const { object } = {\n    ...DEFAULT_DECOMPOSE_OPTIONS,\n    ...options,\n  };\n  const canAddObjectKeys = object === 'both' || object === 'object';\n  const canAddKeys = object === 'both' || object === 'key';\n\n  const _prev = prev ? prev + DELIMITER : '';\n  const output: [string, any][] = [];\n\n  const isArray = Array.isArray(arg);\n  if (isArray) {\n    if (canAddObjectKeys && !first) output.push([`${prev}`, arg]);\n\n    arg.forEach((item, index) => {\n      const values = ddecompose(\n        item,\n        `${_prev}${LEFT_BRACKET}${index}${RIGHT_BRACKET}`,\n        options,\n        false,\n      );\n      output.push(...values);\n    });\n    return output;\n  }\n\n  const isPrimit = isPrimitive(arg);\n  if (isPrimit) {\n    const isFirst = !prev.includes(DELIMITER);\n    if (canAddKeys || isFirst) output.push([`${prev}`, arg]);\n    return output;\n  }\n\n  if (canAddObjectKeys && prev !== '') output.push([`${prev}`, arg]);\n\n  const entries1 = Object.entries(arg);\n  entries1.forEach(([key, value]) => {\n    const values = ddecompose(value, `${_prev}${key}`, options, false);\n    output.push(...values);\n  });\n\n  return output;\n}\n\ntype Decompose_F = <\n  T,\n  const O extends DecomposeOptions = typeof DEFAULT_DECOMPOSE_OPTIONS,\n>(\n  val: T,\n  options?: O,\n) => Decompose<T, O>;\ntype _Decompose_F = (val: any, options?: DecomposeOptions) => any;\n\nexport type Decomposer = Decompose_F & {\n  strict: Decompose_F;\n  low: _Decompose_F;\n};\n\nconst _decompose: _Decompose_F = (val, options) => {\n  const entries1 = ddecompose(val, '', options);\n\n  const { sep, start } = {\n    ...DEFAULT_DECOMPOSE_OPTIONS,\n    ...options,\n  };\n  if (entries1.length == 0) {\n    if (Array.isArray(val)) return [];\n    return {};\n  }\n\n  const regexDel = new RegExp(DELIMITER, 'g');\n  const regexLeft = new RegExp(LEFT_BRACKET, 'g');\n  const regexRight = new RegExp(RIGHT_BRACKET, 'g');\n  const entries2 = entries1.map(([__key, value]) => {\n    const _key = __key\n      .replace(regexDel, sep)\n      .replace(regexLeft, `[`)\n      .replace(regexRight, `]`);\n    const key = start ? `${sep}${_key}` : _key;\n    return [key, value];\n  });\n\n  const output = Object.fromEntries(entries2);\n  return output;\n};\n\n/* v8 ignore next 1 */\nexport const decompose: Decomposer = (val, options) =>\n  _decompose(val, options);\ndecompose.low = decompose;\ndecompose.strict = decompose;\n"],"mappings":";;;;;AASA,SAAS,WACP,KACA,OAAO,IACP,UAA4BA,0BAAAA,2BAC5B,QAAQ,MACR;CACA,MAAM,EAAE,WAAW;EACjB,GAAGA,0BAAAA;EACH,GAAG;EACJ;CACD,MAAM,mBAAmB,WAAW,UAAU,WAAW;CACzD,MAAM,aAAa,WAAW,UAAU,WAAW;CAEnD,MAAM,QAAQ,OAAO,OAAOC,0BAAAA,YAAY;CACxC,MAAM,SAA0B,EAAE;AAGlC,KADgB,MAAM,QAAQ,IAAI,EACrB;AACX,MAAI,oBAAoB,CAAC,MAAO,QAAO,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC;AAE7D,MAAI,SAAS,MAAM,UAAU;GAC3B,MAAM,SAAS,WACb,MACA,GAAG,QAAQC,0BAAAA,eAAe,QAAQC,0BAAAA,iBAClC,SACA,MACD;AACD,UAAO,KAAK,GAAG,OAAO;IACtB;AACF,SAAO;;AAIT,KADiBC,gBAAAA,YAAY,IAAI,EACnB;EACZ,MAAM,UAAU,CAAC,KAAK,SAASH,0BAAAA,UAAU;AACzC,MAAI,cAAc,QAAS,QAAO,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC;AACxD,SAAO;;AAGT,KAAI,oBAAoB,SAAS,GAAI,QAAO,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC;AAEjD,QAAO,QAAQ,IAAI,CAC3B,SAAS,CAAC,KAAK,WAAW;EACjC,MAAM,SAAS,WAAW,OAAO,GAAG,QAAQ,OAAO,SAAS,MAAM;AAClE,SAAO,KAAK,GAAG,OAAO;GACtB;AAEF,QAAO;;AAiBT,MAAM,cAA4B,KAAK,YAAY;CACjD,MAAM,WAAW,WAAW,KAAK,IAAI,QAAQ;CAE7C,MAAM,EAAE,KAAK,UAAU;EACrB,GAAGD,0BAAAA;EACH,GAAG;EACJ;AACD,KAAI,SAAS,UAAU,GAAG;AACxB,MAAI,MAAM,QAAQ,IAAI,CAAE,QAAO,EAAE;AACjC,SAAO,EAAE;;CAGX,MAAM,WAAW,IAAI,OAAOC,0BAAAA,WAAW,IAAI;CAC3C,MAAM,YAAY,IAAI,OAAOC,0BAAAA,cAAc,IAAI;CAC/C,MAAM,aAAa,IAAI,OAAOC,0BAAAA,eAAe,IAAI;CACjD,MAAM,WAAW,SAAS,KAAK,CAAC,OAAO,WAAW;EAChD,MAAM,OAAO,MACV,QAAQ,UAAU,IAAI,CACtB,QAAQ,WAAW,IAAI,CACvB,QAAQ,YAAY,IAAI;AAE3B,SAAO,CADK,QAAQ,GAAG,MAAM,SAAS,MACzB,MAAM;GACnB;AAGF,QADe,OAAO,YAAY,SAAS;;;AAK7C,MAAa,aAAyB,KAAK,YACzC,WAAW,KAAK,QAAQ;AAC1B,UAAU,MAAM;AAChB,UAAU,SAAS"}