Skip to content

Commit 71533d8

Browse files
committed
chore: refactor type utils file
1 parent 107973f commit 71533d8

8 files changed

Lines changed: 80 additions & 94 deletions

File tree

packages/table-core/src/core/cells/Cells.types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { RowData, Column, Row, Table, Cell, CellData } from '../../types'
2-
import { Getter } from '../../utils'
2+
import { Getter } from '../../utils.types'
33

44
export interface CellContext<TData extends RowData, TValue> {
55
cell: Cell<TData, TValue>

packages/table-core/src/core/table/Tables.types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
TableState,
1010
Updater,
1111
} from '../../types'
12-
import { RequiredKeys } from '../../utils'
12+
import { RequiredKeys } from '../../utils.types'
1313

1414
export interface TableOptions_Core<TData extends RowData> {
1515
/**

packages/table-core/src/core/table/Tables.utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import {
77
TableState,
88
Updater,
99
} from '../../types'
10-
import { functionalUpdate, RequiredKeys } from '../../utils'
10+
import { functionalUpdate } from '../../utils'
11+
import { RequiredKeys } from '../../utils.types'
1112

1213
export function table_reset<TData extends RowData>(table: Table<TData>): void {
1314
table_setState(table, table.initialState)

packages/table-core/src/helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
RowData,
99
TableOptions,
1010
} from './types'
11-
import { DeepKeys, DeepValue } from './utils'
11+
import { DeepKeys, DeepValue } from './utils.types'
1212

1313
// type Person = {
1414
// firstName: string

packages/table-core/src/index.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
/**
2-
* Types
3-
*/
4-
5-
export * from './types'
6-
71
/**
82
* Core
93
*/
104

5+
export * from './core/table/getCoreRowModel'
116
export * from './helpers'
7+
export * from './types'
8+
export * from './utils'
129

1310
//Cells
1411
export * from './core/cells/_createCell'
@@ -23,6 +20,7 @@ export * from './core/columns/Columns.types'
2320
export * from './core/columns/Columns.utils'
2421

2522
//Headers
23+
export * from './core/headers/buildHeaderGroups'
2624
export * from './core/headers/_createHeader'
2725
export * from './core/headers/Headers'
2826
export * from './core/headers/Headers.types'
@@ -40,11 +38,6 @@ export * from './core/table/Tables'
4038
export * from './core/table/Tables.types'
4139
export * from './core/table/Tables.utils'
4240

43-
//Utils
44-
export * from './utils'
45-
export * from './core/headers/buildHeaderGroups'
46-
export * from './core/table/getCoreRowModel'
47-
4841
/**
4942
* Features
5043
*/

packages/table-core/src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ import {
104104
Table_RowSelection,
105105
} from './features/row-selection/RowSelection.types'
106106
import { Row_Core, Table_Rows, TableOptions_Rows } from './core/rows/Rows.types'
107-
import { PartialKeys, UnionToIntersection } from './utils'
107+
import { PartialKeys, UnionToIntersection } from './utils.types'
108108
import {
109109
CellContext,
110110
Cell_Core,

packages/table-core/src/utils.ts

Lines changed: 1 addition & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,6 @@
1+
import { NoInfer } from './utils.types'
12
import { TableOptionsResolved, TableState, Updater } from './types'
23

3-
export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
4-
export type RequiredKeys<T, K extends keyof T> = Omit<T, K> &
5-
Required<Pick<T, K>>
6-
export type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<
7-
T,
8-
keyof U
9-
> &
10-
U
11-
12-
export type UnionToIntersection<T> = (
13-
T extends any ? (x: T) => any : never
14-
) extends (x: infer R) => any
15-
? R
16-
: never
17-
18-
export type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N
19-
export type IsKnown<T, Y, N> = unknown extends T ? N : Y
20-
21-
type ComputeRange<
22-
N extends number,
23-
Result extends Array<unknown> = [],
24-
> = Result['length'] extends N
25-
? Result
26-
: ComputeRange<N, [...Result, Result['length']]>
27-
type Index40 = ComputeRange<40>[number]
28-
29-
// Is this type a tuple?
30-
type IsTuple<T> = T extends readonly any[] & { length: infer Length }
31-
? Length extends Index40
32-
? T
33-
: never
34-
: never
35-
36-
// If this type is a tuple, what indices are allowed?
37-
type AllowedIndexes<
38-
Tuple extends ReadonlyArray<any>,
39-
Keys extends number = never,
40-
> = Tuple extends readonly []
41-
? Keys
42-
: Tuple extends readonly [infer _, ...infer Tail]
43-
? AllowedIndexes<Tail, Keys | Tail['length']>
44-
: Keys
45-
46-
export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5
47-
? never
48-
: unknown extends T
49-
? string
50-
: T extends readonly any[] & IsTuple<T>
51-
? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>
52-
: T extends any[]
53-
? DeepKeys<T[number], [...TDepth, any]>
54-
: T extends Date
55-
? never
56-
: T extends object
57-
? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>
58-
: never
59-
60-
type DeepKeysPrefix<
61-
T,
62-
TPrefix,
63-
TDepth extends any[],
64-
> = TPrefix extends keyof T & (number | string)
65-
? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`
66-
: never
67-
68-
export type DeepValue<T, TProp> =
69-
T extends Record<string | number, any>
70-
? TProp extends `${infer TBranch}.${infer TDeepProp}`
71-
? DeepValue<T[TBranch], TDeepProp>
72-
: T[TProp & string]
73-
: never
74-
75-
export type NoInfer<T> = [T][T extends any ? 0 : never]
76-
77-
export type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>
78-
79-
///
80-
814
export function functionalUpdate<T>(updater: Updater<T>, input: T): T {
825
return typeof updater === 'function'
836
? (updater as (input: T) => T)(input)
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
2+
3+
export type RequiredKeys<T, K extends keyof T> = Omit<T, K> &
4+
Required<Pick<T, K>>
5+
6+
export type UnionToIntersection<T> = (
7+
T extends any ? (x: T) => any : never
8+
) extends (x: infer R) => any
9+
? R
10+
: never
11+
12+
type ComputeRange<
13+
N extends number,
14+
Result extends Array<unknown> = [],
15+
> = Result['length'] extends N
16+
? Result
17+
: ComputeRange<N, [...Result, Result['length']]>
18+
19+
type Index40 = ComputeRange<40>[number]
20+
21+
// Is this type a tuple?
22+
type IsTuple<T> = T extends readonly any[] & { length: infer Length }
23+
? Length extends Index40
24+
? T
25+
: never
26+
: never
27+
28+
// If this type is a tuple, what indices are allowed?
29+
type AllowedIndexes<
30+
Tuple extends ReadonlyArray<any>,
31+
Keys extends number = never,
32+
> = Tuple extends readonly []
33+
? Keys
34+
: Tuple extends readonly [infer _, ...infer Tail]
35+
? AllowedIndexes<Tail, Keys | Tail['length']>
36+
: Keys
37+
38+
export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5
39+
? never
40+
: unknown extends T
41+
? string
42+
: T extends readonly any[] & IsTuple<T>
43+
? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>
44+
: T extends any[]
45+
? DeepKeys<T[number], [...TDepth, any]>
46+
: T extends Date
47+
? never
48+
: T extends object
49+
? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>
50+
: never
51+
52+
type DeepKeysPrefix<
53+
T,
54+
TPrefix,
55+
TDepth extends any[],
56+
> = TPrefix extends keyof T & (number | string)
57+
? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`
58+
: never
59+
60+
export type DeepValue<T, TProp> =
61+
T extends Record<string | number, any>
62+
? TProp extends `${infer TBranch}.${infer TDeepProp}`
63+
? DeepValue<T[TBranch], TDeepProp>
64+
: T[TProp & string]
65+
: never
66+
67+
export type NoInfer<T> = [T][T extends any ? 0 : never]
68+
69+
export type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>

0 commit comments

Comments
 (0)