/
types.ts
55 lines (46 loc) · 1.63 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
import { ExpressionStatement, ImportDeclaration } from '@babel/types';
import { RequiredOptions } from 'prettier';
import { PluginConfig } from '../types';
import {
chunkTypeOther,
chunkTypeUnsortable,
importFlavorIgnore,
importFlavorSideEffect,
importFlavorType,
importFlavorValue,
} from './constants';
export interface PrettierOptions
extends Required<PluginConfig>,
RequiredOptions {}
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'
| 'importOrderCombineTypeAndValueImports'
| 'importOrderSeparation'
| 'importOrderSortSpecifiers'
>,
) => ImportOrLine[];
export type GetChunkTypeOfNode = (node: ImportDeclaration) => ChunkType;
export type GetImportFlavorOfNode = (node: ImportDeclaration) => FlavorType;
export type MergeNodesWithMatchingImportFlavors = (
nodes: ImportDeclaration[],
options: { importOrderCombineTypeAndValueImports: boolean },
) => ImportDeclaration[];