/
types.ts
60 lines (51 loc) · 1.87 KB
/
types.ts
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
import { ExpressionStatement, ImportDeclaration } from '@babel/types';
import { RequiredOptions } from 'prettier';
import {
chunkTypeOther,
chunkTypeUnsortable,
importFlavorIgnore,
importFlavorSideEffect,
importFlavorType,
importFlavorValue,
} from './constants';
export interface PrettierOptions extends RequiredOptions {
importOrder: string[];
importOrderCaseInsensitive: boolean;
importOrderBuiltinModulesToTop: boolean;
importOrderGroupNamespaceSpecifiers: boolean;
importOrderMergeDuplicateImports: boolean;
importOrderSeparation: boolean;
importOrderSortSpecifiers: boolean;
// should be of type ParserPlugin from '@babel/parser' but prettier does not support nested arrays in options
importOrderParserPlugins: string[];
}
export type ChunkType = typeof chunkTypeOther | typeof chunkTypeUnsortable;
export type FlavorType =
| typeof importFlavorIgnore
| typeof importFlavorSideEffect
| typeof importFlavorType
| typeof importFlavorValue;
export interface ImportChunk {
nodes: ImportDeclaration[];
type: ChunkType;
}
export type ImportGroups = Record<string, ImportDeclaration[]>;
export type ImportOrLine = ImportDeclaration | ExpressionStatement;
export type GetSortedNodes = (
nodes: ImportDeclaration[],
options: Pick<
PrettierOptions,
| 'importOrder'
| 'importOrderBuiltinModulesToTop'
| 'importOrderCaseInsensitive'
| 'importOrderGroupNamespaceSpecifiers'
| 'importOrderMergeDuplicateImports'
| 'importOrderSeparation'
| 'importOrderSortSpecifiers'
>,
) => ImportOrLine[];
export type GetChunkTypeOfNode = (node: ImportDeclaration) => ChunkType;
export type GetImportFlavorOfNode = (node: ImportDeclaration) => FlavorType;
export type MergeNodesWithMatchingImportFlavors = (
nodes: ImportDeclaration[],
) => ImportDeclaration[];