type-fest 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/readme.md +1 -0
- package/ts41/index.d.ts +1 -0
- package/ts41/screaming-snake-case.d.ts +40 -0
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -136,6 +136,7 @@ Click the type names for complete docs.
|
|
|
136
136
|
- [`SnakeCase`](ts41/snake-case.d.ts) – Convert a string literal to snake-case (`foo_bar`).
|
|
137
137
|
- [`SnakeCasedProperties`](ts41/snake-cased-properties-deep.d.ts) – Convert object properties to snake-case (`foo_bar`).
|
|
138
138
|
- [`SnakeCasedPropertiesDeep`](ts41/snake-cased-properties-deep.d.ts) – Convert object properties to snake-case recursively (`foo_bar`).
|
|
139
|
+
- [`ScreamingSnakeCase`](ts41/screaming-snake-case.d.ts) - Convert a string literal to screaming-snake-case (`FOO_BAR`).
|
|
139
140
|
- [`DelimiterCase`](ts41/delimiter-case.d.ts) – Convert a string literal to a custom string delimiter casing.
|
|
140
141
|
- [`DelimiterCasedProperties`](ts41/delimiter-cased-properties.d.ts) – Convert object properties to a custom string delimiter casing.
|
|
141
142
|
- [`DelimiterCasedPropertiesDeep`](ts41/delimiter-cased-properties-deep.d.ts) – Convert object properties to a custom string delimiter casing recursively.
|
package/ts41/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export {PascalCasedPropertiesDeep} from './pascal-cased-properties-deep';
|
|
|
14
14
|
export {SnakeCase} from './snake-case';
|
|
15
15
|
export {SnakeCasedProperties} from './snake-cased-properties';
|
|
16
16
|
export {SnakeCasedPropertiesDeep} from './snake-cased-properties-deep';
|
|
17
|
+
export {ScreamingSnakeCase} from './screaming-snake-case';
|
|
17
18
|
export {DelimiterCase} from './delimiter-case';
|
|
18
19
|
export {DelimiterCasedProperties} from './delimiter-cased-properties';
|
|
19
20
|
export {DelimiterCasedPropertiesDeep} from './delimiter-cased-properties-deep';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {SplitIncludingDelimiters} from './delimiter-case';
|
|
2
|
+
import {SnakeCase} from './snake-case';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
Returns a boolean for whether the given array includes the given item.
|
|
6
|
+
*/
|
|
7
|
+
type Includes<Value extends any[], Item> = {
|
|
8
|
+
[P in keyof Value & number as Value[P]]: true;
|
|
9
|
+
}[Item] extends true
|
|
10
|
+
? true
|
|
11
|
+
: false;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
Returns a boolean for whether the string is screaming snake case.
|
|
15
|
+
*/
|
|
16
|
+
type IsScreamingSnakeCase<Value extends string> = Value extends Uppercase<Value>
|
|
17
|
+
? Includes<SplitIncludingDelimiters<Lowercase<Value>, '_'>, '_'> extends true
|
|
18
|
+
? true
|
|
19
|
+
: false
|
|
20
|
+
: false;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
Convert a string literal to screaming-snake-case.
|
|
24
|
+
|
|
25
|
+
This can be useful when, for example, converting a camel-cased object property to a screaming-snake-cased SQL column name.
|
|
26
|
+
|
|
27
|
+
@example
|
|
28
|
+
```
|
|
29
|
+
import {ScreamingSnakeCase} from 'type-fest';
|
|
30
|
+
|
|
31
|
+
const someVariable: ScreamingSnakeCase<'fooBar'> = 'FOO_BAR';
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
@category Template Literals
|
|
35
|
+
*/
|
|
36
|
+
export type ScreamingSnakeCase<Value> = Value extends string
|
|
37
|
+
? IsScreamingSnakeCase<Value> extends true
|
|
38
|
+
? Value
|
|
39
|
+
: Uppercase<SnakeCase<Value>>
|
|
40
|
+
: Value;
|