import type { SplitIncludingDelimiters } from "./delimiter-case"; import type { SnakeCase } from "./snake-case"; import type { Includes } from "./includes"; /** Returns a boolean for whether the string is screaming snake case. */ type IsScreamingSnakeCase = Value extends Uppercase ? Includes, "_">, "_"> extends true ? true : false : false; /** Convert a string literal to screaming-snake-case. This can be useful when, for example, converting a camel-cased object property to a screaming-snake-cased SQL column name. @example ``` import {ScreamingSnakeCase} from 'type-fest'; const someVariable: ScreamingSnakeCase<'fooBar'> = 'FOO_BAR'; ``` @category Template Literals */ export type ScreamingSnakeCase = Value extends string ? IsScreamingSnakeCase extends true ? Value : Uppercase> : Value;