just-types
Advanced tools
Comparing version 1.1.0 to 1.2.0
@@ -1,5 +0,211 @@ | ||
export type Flatten<List extends any[][]> = List extends [infer First, ...infer Rest] ? [ | ||
...First, | ||
...Flatten<Rest> | ||
] : []; | ||
type StartsWith<Text extends string, Prefix extends string> = Text extends `${Prefix}${infer _}` ? true : false; | ||
type IndexMinusOne = [ | ||
-1, | ||
0, | ||
1, | ||
2, | ||
3, | ||
4, | ||
5, | ||
6, | ||
7, | ||
8, | ||
9, | ||
10, | ||
11, | ||
12, | ||
13, | ||
14, | ||
15, | ||
16, | ||
17, | ||
18, | ||
19, | ||
20, | ||
21, | ||
22, | ||
23, | ||
24, | ||
25, | ||
26, | ||
27, | ||
28, | ||
29, | ||
30, | ||
31, | ||
32, | ||
33, | ||
34, | ||
35, | ||
36, | ||
37, | ||
38, | ||
39, | ||
40, | ||
41, | ||
42, | ||
43, | ||
44, | ||
45, | ||
46, | ||
47, | ||
48, | ||
49, | ||
50, | ||
51, | ||
52, | ||
53, | ||
54, | ||
55, | ||
56, | ||
57, | ||
58, | ||
59, | ||
60, | ||
61, | ||
62, | ||
63, | ||
64, | ||
65, | ||
66, | ||
67, | ||
68, | ||
69, | ||
70, | ||
71, | ||
72, | ||
73, | ||
74, | ||
75, | ||
76, | ||
77, | ||
78, | ||
79, | ||
80, | ||
81, | ||
82, | ||
83, | ||
84, | ||
85, | ||
86, | ||
87, | ||
88, | ||
89, | ||
90, | ||
91, | ||
92, | ||
93, | ||
94, | ||
95, | ||
96, | ||
97, | ||
98, | ||
99 | ||
]; | ||
export type Decrement<N extends number> = StartsWith<`${N}`, '-'> extends true ? number : IndexMinusOne[N] extends number ? IndexMinusOne[N] : number; | ||
export type Flatten<List, Depth extends number = 1> = Depth extends 0 ? List : List extends [] ? [] : List extends [infer First, ...infer Rest] ? First extends any[] ? [...Flatten<First, Decrement<Depth>>, ...Flatten<Rest, Depth>] : [First, ...Flatten<Rest, Depth>] : List; | ||
type IndexPlusOne = [ | ||
1, | ||
2, | ||
3, | ||
4, | ||
5, | ||
6, | ||
7, | ||
8, | ||
9, | ||
10, | ||
11, | ||
12, | ||
13, | ||
14, | ||
15, | ||
16, | ||
17, | ||
18, | ||
19, | ||
20, | ||
21, | ||
22, | ||
23, | ||
24, | ||
25, | ||
26, | ||
27, | ||
28, | ||
29, | ||
30, | ||
31, | ||
32, | ||
33, | ||
34, | ||
35, | ||
36, | ||
37, | ||
38, | ||
39, | ||
40, | ||
41, | ||
42, | ||
43, | ||
44, | ||
45, | ||
46, | ||
47, | ||
48, | ||
49, | ||
50, | ||
51, | ||
52, | ||
53, | ||
54, | ||
55, | ||
56, | ||
57, | ||
58, | ||
59, | ||
60, | ||
61, | ||
62, | ||
63, | ||
64, | ||
65, | ||
66, | ||
67, | ||
68, | ||
69, | ||
70, | ||
71, | ||
72, | ||
73, | ||
74, | ||
75, | ||
76, | ||
77, | ||
78, | ||
79, | ||
80, | ||
81, | ||
82, | ||
83, | ||
84, | ||
85, | ||
86, | ||
87, | ||
88, | ||
89, | ||
90, | ||
91, | ||
92, | ||
93, | ||
94, | ||
95, | ||
96, | ||
97, | ||
98, | ||
99, | ||
100, | ||
101 | ||
]; | ||
export type Increment<N extends number> = StartsWith<`${N}`, '-'> extends true ? number : IndexPlusOne[N] extends number ? IndexPlusOne[N] : number; | ||
export type InsertAt<Item, Index, List extends any[], ItemsBefore extends any[] = []> = ItemsBefore['length'] extends Index ? [...ItemsBefore, Item, ...List] : List extends [infer First, ...infer Rest] ? InsertAt<Item, Index, Rest, [...ItemsBefore, First]> : [...ItemsBefore, Item]; | ||
@@ -6,0 +212,0 @@ type Literal = string | number | bigint | boolean | null | undefined; |
@@ -6,3 +6,3 @@ { | ||
"license": "MIT", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"source": "src/index.ts", | ||
@@ -9,0 +9,0 @@ "types": "dist/index.d.ts", |
@@ -13,2 +13,4 @@ # Just types | ||
- [List of Types](#list-of-types) | ||
- [Increment](#increment) | ||
- [Decrement](#decrement) | ||
- [Flatten](#flatten) | ||
@@ -42,2 +44,22 @@ - [InsertAt](#insertat) | ||
## Increment | ||
```ts | ||
Increment<0> //=> 1 | ||
Increment<1> //=> 2 | ||
Increment<100> //=> 101 | ||
Increment<101> //=> number | ||
Increment<-1> //=> number | ||
``` | ||
**Note:** Only handles possitive integers between 0 and 100. Returns `number` for other integers. | ||
## Decrement | ||
```ts | ||
Decrement<0> //=> -1 | ||
Decrement<1> //=> 0 | ||
Decrement<100> //=> 99 | ||
Decrement<101> //=> number | ||
Decrement<-10> //=> number | ||
``` | ||
**Note:** Only handles possitive integers between 0 and 100. Returns `number` for other integers. | ||
## Flatten | ||
@@ -48,3 +70,4 @@ ```ts | ||
Flatten<[[1], [2]]> // => [1, 2] | ||
Flatten<[[1], [2, 3], [[4]]]> // => [1, 2, 3, [4]] | ||
Flatten<[[1], [[2, 3]], [[4]]]> // => [1, [2, 3], [4]] | ||
Flatten<[[1], [[2, 3]], [[4]]], 2> // => [1, 2, 3, 4] | ||
``` | ||
@@ -51,0 +74,0 @@ |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
15390
224
148
1