{"version":3,"sources":["../../src/functions/constantCase/constantCase.ts"],"names":[],"mappings":";AAIO,SAAS,aAA+B,QAA4B;AACzE,MAAI,CAAC,UAAU,KAAK,MAAM,GAAG;AAC3B,WAAO;AAAA,EACT;AAGA,SAAO,OACJ,QAAQ,mBAAmB,OAAO,EAClC,QAAQ,WAAW,GAAG,EACtB,YAAY;AACjB","sourcesContent":["/**\n * Changes the casing of a string to constant case.\n * e.g. `\"fooBar\"` -> `\"FOO_BAR\"` or `\"foo bar\"` -> `\"FOO_BAR\"` or `\"foo-bar\"` -> `\"FOO_BAR\"`\n */\nexport function constantCase<S extends string>(string: S): ConstantCase<S> {\n  if (!/[a-z]+/i.test(string)) {\n    return '' as ConstantCase<S>;\n  }\n\n  // return string.replace(/[\\W_]+/g, '_').toUpperCase() as ConstantCase<S>;\n  return string\n    .replace(/([a-z])([A-Z])/g, '$1_$2')\n    .replace(/[\\s-]+/g, '_')\n    .toUpperCase() as ConstantCase<S>;\n}\n\nexport type ConstantCase<S extends string> = Uppercase<\n  S extends `${infer S1}${infer S2}`\n    ? `${S1 extends '-'\n        ? '_'\n        : S1 extends ' '\n        ? '_'\n        : S1 extends '_'\n        ? '_'\n        : S1 extends Capitalize<S1>\n        ? `_${Lowercase<S1>}`\n        : S1}${ConstantCase<S2>}`\n    : S\n>;\n"]}