{"version":3,"file":"map_keys.cjs","names":[],"sources":["../../src/load/map_keys.ts"],"sourcesContent":["const UPPER_TO_WORD_BOUNDARY = /([A-Z]+)([A-Z][a-z0-9]+)/g;\nconst LOWER_TO_UPPER_BOUNDARY = /([a-z0-9])([A-Z])/g;\nconst SEPARATORS = /[-_\\s]+/g;\n\nfunction snakeCase(key: string): string {\n  return key\n    .replace(UPPER_TO_WORD_BOUNDARY, \"$1_$2\")\n    .replace(LOWER_TO_UPPER_BOUNDARY, \"$1_$2\")\n    .replace(SEPARATORS, \"_\")\n    .toLowerCase();\n}\n\nfunction camelCase(key: string): string {\n  const trimmed = key.trim();\n  if (!/[-_\\s]/.test(trimmed)) {\n    return trimmed;\n  }\n  return trimmed\n    .replace(SEPARATORS, \"_\")\n    .toLowerCase()\n    .replace(/_+([a-z0-9])/g, (_, char: string) => char.toUpperCase());\n}\n\nexport interface SerializedFields {\n  // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n}\n\nexport interface SerializedKeyAlias {\n  [key: string]: string;\n}\n\nexport function keyToJson(key: string, map?: SerializedKeyAlias): string {\n  return map?.[key] || snakeCase(key);\n}\n\nexport function keyFromJson(key: string, map?: SerializedKeyAlias): string {\n  return map?.[key] || camelCase(key);\n}\n\nexport function mapKeys(\n  fields: SerializedFields,\n  mapper: typeof keyToJson,\n  map?: SerializedKeyAlias\n): SerializedFields {\n  const mapped: SerializedFields = {};\n\n  for (const key in fields) {\n    if (Object.hasOwn(fields, key)) {\n      mapped[mapper(key, map)] = fields[key];\n    }\n  }\n\n  return mapped;\n}\n"],"mappings":";AAAA,MAAM,yBAAyB;AAC/B,MAAM,0BAA0B;AAChC,MAAM,aAAa;AAEnB,SAAS,UAAU,KAAqB;AACtC,QAAO,IACJ,QAAQ,wBAAwB,QAAQ,CACxC,QAAQ,yBAAyB,QAAQ,CACzC,QAAQ,YAAY,IAAI,CACxB,aAAa;;AAGlB,SAAS,UAAU,KAAqB;CACtC,MAAM,UAAU,IAAI,MAAM;AAC1B,KAAI,CAAC,SAAS,KAAK,QAAQ,CACzB,QAAO;AAET,QAAO,QACJ,QAAQ,YAAY,IAAI,CACxB,aAAa,CACb,QAAQ,kBAAkB,GAAG,SAAiB,KAAK,aAAa,CAAC;;AAYtE,SAAgB,UAAU,KAAa,KAAkC;AACvE,QAAO,MAAM,QAAQ,UAAU,IAAI;;AAGrC,SAAgB,YAAY,KAAa,KAAkC;AACzE,QAAO,MAAM,QAAQ,UAAU,IAAI;;AAGrC,SAAgB,QACd,QACA,QACA,KACkB;CAClB,MAAM,SAA2B,EAAE;AAEnC,MAAK,MAAM,OAAO,OAChB,KAAI,OAAO,OAAO,QAAQ,IAAI,CAC5B,QAAO,OAAO,KAAK,IAAI,IAAI,OAAO;AAItC,QAAO"}