-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtypes.ts
80 lines (64 loc) · 1.58 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { PackageJson as BasePackageJson } from "type-fest";
import { Project } from "ts-morph";
import type { ConsoleLogger } from "./utils/log";
export type { ConsoleLogger };
export interface Context {
version: string;
project: {
root: string;
getPackageJsonPath: () => string;
getFilePath: (target: string | string[]) => string;
getWorkspaces: () => string[];
};
log: ConsoleLogger;
}
export interface Packages {
[key: string]: string | null;
}
export interface PackageJson extends BasePackageJson {
workspaces: {
packages: string[];
};
}
export type FileDefinitionTag =
| "root"
| "fm"
| "pb"
| "cms"
| "gql"
| "ps"
| "ddb2es"
| "extensions"
| "theme"
| "website"
| "admin"
| "core"
| "security"
| "package.json";
export interface IFileDefinition {
path: string;
elasticsearch: boolean;
pre529: boolean;
tag: FileDefinitionTag;
name: string;
}
export interface IFilesFilterCb {
(file: IFileDefinition): boolean;
}
export interface IFiles {
byName(name: string): IFileDefinition | null;
byTag(tag: FileDefinitionTag): IFiles;
filter(cb: IFilesFilterCb): IFiles;
all(): string[];
relevant: () => IFiles;
paths(): string[];
}
export interface IProcessorParams {
files: IFiles;
project: Project;
context: Context;
}
export type IProcessorResult<T> = { skipped?: boolean } & T;
export interface IProcessor<T = any> {
(params: IProcessorParams): IProcessorResult<T> | void | Promise<IProcessorResult<T> | void>;
}