UNPKG

5.43 kBTypeScriptView Raw
1export declare enum Category {
2 Build = "BUILD",
3 CodeReview = "CODE_REVIEW",
4 DevEx = "DEV_EX",
5 Deploy = "DEPLOY",
6 Security = "SECURITY",
7 Dependencies = "DEPENDENCIES",
8 Notifications = "NOTIFICATIONS",
9 CI = "CI",
10 CD = "CD",
11 Productivity = "PRODUCTIVITY",
12 CodeQuality = "CODE_QUALITY",
13 Chat = "CHAT"
14}
15export declare enum Technology {
16 Java = "JAVA",
17 Maven = "MAVEN",
18 Docker = "DOCKER",
19 JavaScript = "JAVASCRIPT",
20 NPM = "NPM",
21 Leiningen = "LEIN",
22 Clojure = "CLOJURE",
23 Kubernetes = "KUBERNETES"
24}
25export declare enum DispatchStyle {
26 Single = "single",
27 Multiple = "multiple"
28}
29export declare enum Platform {
30 NodeJs10 = "nodejs10",
31 Python37 = "python37",
32 Go113 = "go113"
33}
34export interface SkillRuntime {
35 entryPoint?: string;
36 platform?: Platform;
37 url?: string;
38 memory?: number;
39 timeout?: number;
40}
41export interface SkillPackage {
42 bundle?: boolean;
43 minify?: boolean;
44 sourceMaps?: boolean;
45}
46export interface SkillContainer {
47 image: string;
48 args?: string[];
49 command?: string[];
50 env?: Array<{
51 name: string;
52 value: string;
53 }>;
54 workingDir?: string;
55}
56export interface ResourceProvider {
57 description?: string;
58 maxAllowed?: number;
59 minRequired?: number;
60 typeName: string;
61}
62export declare enum ParameterVisibility {
63 Hidden = "hidden",
64 Advanced = "advanced",
65 Normal = "normal"
66}
67export declare enum LineStyle {
68 Single = "single",
69 Multiple = "multiple"
70}
71export interface Parameter<T, D> {
72 type: T;
73 defaultValue?: D;
74 description: string;
75 displayName?: string;
76 required: boolean;
77 visibility?: ParameterVisibility;
78}
79export declare type BooleanParameter = Parameter<ParameterType.Boolean, boolean>;
80export interface FloatParameter extends Parameter<ParameterType.Float, number> {
81 maximum?: number;
82 minimum?: number;
83 placeHolder?: string;
84}
85export interface IntParameter extends Parameter<ParameterType.Int, number> {
86 maximum?: number;
87 minimum?: number;
88 placeHolder?: string;
89}
90export interface MultiChoiceParameter extends Omit<Parameter<ParameterType.MultiChoice, string>, "defaultValue"> {
91 defaultValues?: string[];
92 maxAllowed?: number;
93 minRequired?: number;
94 options: Array<{
95 description?: string;
96 text: string;
97 value: string;
98 }>;
99}
100export interface SingleChoiceParameter extends Parameter<ParameterType.SingleChoice, string> {
101 maxAllowed?: number;
102 minRequired?: number;
103 options: Array<{
104 description?: string;
105 text: string;
106 value: string;
107 }>;
108}
109export declare type RepoFilterParameter = Omit<Parameter<ParameterType.RepoFilter, any>, "defaultValue" | "visibility">;
110export declare type ScheduleParameter = Parameter<ParameterType.Schedule, string>;
111export interface StringParameter extends Parameter<ParameterType.String, string> {
112 lineStyle?: LineStyle;
113 pattern?: string;
114 placeHolder?: string;
115}
116export interface StringArrayParameter extends Parameter<ParameterType.StringArray, string[]> {
117 maxAllowed?: number;
118 minRequired?: number;
119 pattern?: string;
120}
121export interface Metadata {
122 name: string;
123 namespace: string;
124 version: string;
125 author: string;
126 displayName: string;
127 description: string;
128 longDescription: string;
129 readme?: string;
130 license: string;
131 categories?: Category[];
132 technologies?: Technology[];
133 homepageUrl: string;
134 repositoryUrl: string;
135 iconUrl: string;
136 videoUrl?: string;
137}
138export declare enum ParameterType {
139 Boolean = "boolean",
140 Float = "float",
141 Int = "int",
142 MultiChoice = "multiChoice",
143 SingleChoice = "singleChoice",
144 RepoFilter = "repoFilter",
145 Schedule = "schedule",
146 String = "string",
147 StringArray = "stringArray"
148}
149export declare type ParametersIndexType = string;
150export declare type ParametersType = {
151 [key in ParametersIndexType]?: number | boolean | string | number | string[];
152};
153export interface Configuration<PARAMS extends ParametersType = any> {
154 dispatchStyle?: DispatchStyle;
155 maxConfigurations?: number;
156 runtime?: SkillRuntime;
157 containers?: Record<string, SkillContainer>;
158 package?: SkillPackage;
159 parameters?: Record<keyof PARAMS, BooleanParameter | FloatParameter | IntParameter | MultiChoiceParameter | SingleChoiceParameter | RepoFilterParameter | ScheduleParameter | StringParameter | StringArrayParameter>;
160 resourceProviders?: Record<string, ResourceProvider>;
161}
162export interface Command {
163 name: string;
164 displayName?: string;
165 description: string;
166 pattern: RegExp;
167}
168export interface Operations {
169 commands?: Command[];
170 subscriptions?: string[];
171}
172export declare type Skill<PARAMS = any> = Metadata & Configuration<PARAMS> & Operations;
173export declare function slackResourceProvider(options?: {
174 minRequired: number;
175 maxAllowed: number;
176}): ResourceProvider;
177export declare function gitHubResourceProvider(options?: {
178 minRequired: number;
179 maxAllowed: number;
180}): ResourceProvider;
181export declare function repoFilter(required?: boolean): RepoFilterParameter;
182export declare function packageJson(path?: string): Metadata;
183export declare function skill<PARAMS = any>(skill: Partial<Metadata> & Configuration<PARAMS> & Operations, p?: string): Skill<PARAMS>;
184//# sourceMappingURL=skill.d.ts.map
\No newline at end of file