update flow

Script windmill Verified

by admin ยท 8/13/2023

The script

Submitted by admin Typescript (fetch-only)
Verified 370 days ago
1
/**
2
 * update flow
3
 *
4
 */
5
export async function main(
6
  workspace: string,
7
  path: string,
8
  body: ({
9
    summary: string;
10
    description?: string;
11
    value: {
12
      modules: {
13
        id: string;
14
        value:
15
          | {
16
              input_transforms: {
17
                [k: string]:
18
                  | {
19
                      value?: unknown;
20
                      type: "javascript";
21
                      [k: string]: unknown;
22
                    }
23
                  | { expr: string; type: "javascript"; [k: string]: unknown };
24
              };
25
              content: string;
26
              language:
27
                | "deno"
28
                | "bun"
29
                | "python3"
30
                | "go"
31
                | "bash"
32
                | "powershell"
33
                | "postgresql"
34
                | "mysql"
35
                | "bigquery"
36
                | "snowflake"
37
                | "mssql"
38
                | "graphql"
39
                | "nativets";
40
              path?: string;
41
              lock?: string;
42
              type: "rawscript";
43
              tag?: string;
44
              concurrent_limit?: number;
45
              concurrency_time_window_s?: number;
46
              [k: string]: unknown;
47
            }
48
          | {
49
              input_transforms: {
50
                [k: string]:
51
                  | {
52
                      value?: unknown;
53
                      type: "javascript";
54
                      [k: string]: unknown;
55
                    }
56
                  | { expr: string; type: "javascript"; [k: string]: unknown };
57
              };
58
              path: string;
59
              hash?: string;
60
              type: "script";
61
              [k: string]: unknown;
62
            }
63
          | {
64
              input_transforms: {
65
                [k: string]:
66
                  | {
67
                      value?: unknown;
68
                      type: "javascript";
69
                      [k: string]: unknown;
70
                    }
71
                  | { expr: string; type: "javascript"; [k: string]: unknown };
72
              };
73
              path: string;
74
              type: "flow";
75
              [k: string]: unknown;
76
            }
77
          | {
78
              modules: { [k: string]: unknown }[];
79
              iterator:
80
                | { value?: unknown; type: "javascript"; [k: string]: unknown }
81
                | { expr: string; type: "javascript"; [k: string]: unknown };
82
              skip_failures: boolean;
83
              type: "forloopflow";
84
              parallel?: boolean;
85
              parallelism?: number;
86
              [k: string]: unknown;
87
            }
88
          | {
89
              branches: {
90
                summary?: string;
91
                expr: string;
92
                modules: { [k: string]: unknown }[];
93
                [k: string]: unknown;
94
              }[];
95
              default: { [k: string]: unknown }[];
96
              type: "branchone";
97
              [k: string]: unknown;
98
            }
99
          | {
100
              branches: {
101
                summary?: string;
102
                skip_failure?: boolean;
103
                modules: { [k: string]: unknown }[];
104
                [k: string]: unknown;
105
              }[];
106
              type: "branchall";
107
              parallel?: boolean;
108
              [k: string]: unknown;
109
            }
110
          | { type: "identity"; flow?: boolean; [k: string]: unknown };
111
        stop_after_if?: {
112
          skip_if_stopped?: boolean;
113
          expr: string;
114
          [k: string]: unknown;
115
        };
116
        sleep?:
117
          | { value?: unknown; type: "javascript"; [k: string]: unknown }
118
          | { expr: string; type: "javascript"; [k: string]: unknown };
119
        cache_ttl?: number;
120
        timeout?: number;
121
        delete_after_use?: boolean;
122
        summary?: string;
123
        mock?: {
124
          enabled?: boolean;
125
          return_value?: unknown;
126
          [k: string]: unknown;
127
        };
128
        suspend?: {
129
          required_events?: number;
130
          timeout?: number;
131
          resume_form?: {
132
            schema?: { [k: string]: unknown };
133
            [k: string]: unknown;
134
          };
135
          user_auth_required?: boolean;
136
          user_groups_required?:
137
            | { value?: unknown; type: "javascript"; [k: string]: unknown }
138
            | { expr: string; type: "javascript"; [k: string]: unknown };
139
          self_approval_disabled?: boolean;
140
          [k: string]: unknown;
141
        };
142
        priority?: number;
143
        retry?: {
144
          constant?: {
145
            attempts?: number;
146
            seconds?: number;
147
            [k: string]: unknown;
148
          };
149
          exponential?: {
150
            attempts?: number;
151
            multiplier?: number;
152
            seconds?: number;
153
            random_factor?: number;
154
            [k: string]: unknown;
155
          };
156
          [k: string]: unknown;
157
        };
158
        [k: string]: unknown;
159
      }[];
160
      failure_module?: {
161
        id: string;
162
        value:
163
          | {
164
              input_transforms: {
165
                [k: string]:
166
                  | {
167
                      value?: unknown;
168
                      type: "javascript";
169
                      [k: string]: unknown;
170
                    }
171
                  | { expr: string; type: "javascript"; [k: string]: unknown };
172
              };
173
              content: string;
174
              language:
175
                | "deno"
176
                | "bun"
177
                | "python3"
178
                | "go"
179
                | "bash"
180
                | "powershell"
181
                | "postgresql"
182
                | "mysql"
183
                | "bigquery"
184
                | "snowflake"
185
                | "mssql"
186
                | "graphql"
187
                | "nativets";
188
              path?: string;
189
              lock?: string;
190
              type: "rawscript";
191
              tag?: string;
192
              concurrent_limit?: number;
193
              concurrency_time_window_s?: number;
194
              [k: string]: unknown;
195
            }
196
          | {
197
              input_transforms: {
198
                [k: string]:
199
                  | {
200
                      value?: unknown;
201
                      type: "javascript";
202
                      [k: string]: unknown;
203
                    }
204
                  | { expr: string; type: "javascript"; [k: string]: unknown };
205
              };
206
              path: string;
207
              hash?: string;
208
              type: "script";
209
              [k: string]: unknown;
210
            }
211
          | {
212
              input_transforms: {
213
                [k: string]:
214
                  | {
215
                      value?: unknown;
216
                      type: "javascript";
217
                      [k: string]: unknown;
218
                    }
219
                  | { expr: string; type: "javascript"; [k: string]: unknown };
220
              };
221
              path: string;
222
              type: "flow";
223
              [k: string]: unknown;
224
            }
225
          | {
226
              modules: { [k: string]: unknown }[];
227
              iterator:
228
                | { value?: unknown; type: "javascript"; [k: string]: unknown }
229
                | { expr: string; type: "javascript"; [k: string]: unknown };
230
              skip_failures: boolean;
231
              type: "forloopflow";
232
              parallel?: boolean;
233
              parallelism?: number;
234
              [k: string]: unknown;
235
            }
236
          | {
237
              branches: {
238
                summary?: string;
239
                expr: string;
240
                modules: { [k: string]: unknown }[];
241
                [k: string]: unknown;
242
              }[];
243
              default: { [k: string]: unknown }[];
244
              type: "branchone";
245
              [k: string]: unknown;
246
            }
247
          | {
248
              branches: {
249
                summary?: string;
250
                skip_failure?: boolean;
251
                modules: { [k: string]: unknown }[];
252
                [k: string]: unknown;
253
              }[];
254
              type: "branchall";
255
              parallel?: boolean;
256
              [k: string]: unknown;
257
            }
258
          | { type: "identity"; flow?: boolean; [k: string]: unknown };
259
        stop_after_if?: {
260
          skip_if_stopped?: boolean;
261
          expr: string;
262
          [k: string]: unknown;
263
        };
264
        sleep?:
265
          | { value?: unknown; type: "javascript"; [k: string]: unknown }
266
          | { expr: string; type: "javascript"; [k: string]: unknown };
267
        cache_ttl?: number;
268
        timeout?: number;
269
        delete_after_use?: boolean;
270
        summary?: string;
271
        mock?: {
272
          enabled?: boolean;
273
          return_value?: unknown;
274
          [k: string]: unknown;
275
        };
276
        suspend?: {
277
          required_events?: number;
278
          timeout?: number;
279
          resume_form?: {
280
            schema?: { [k: string]: unknown };
281
            [k: string]: unknown;
282
          };
283
          user_auth_required?: boolean;
284
          user_groups_required?:
285
            | { value?: unknown; type: "javascript"; [k: string]: unknown }
286
            | { expr: string; type: "javascript"; [k: string]: unknown };
287
          self_approval_disabled?: boolean;
288
          [k: string]: unknown;
289
        };
290
        priority?: number;
291
        retry?: {
292
          constant?: {
293
            attempts?: number;
294
            seconds?: number;
295
            [k: string]: unknown;
296
          };
297
          exponential?: {
298
            attempts?: number;
299
            multiplier?: number;
300
            seconds?: number;
301
            random_factor?: number;
302
            [k: string]: unknown;
303
          };
304
          [k: string]: unknown;
305
        };
306
        [k: string]: unknown;
307
      };
308
      same_worker?: boolean;
309
      concurrent_limit?: number;
310
      concurrency_time_window_s?: number;
311
      skip_expr?: string;
312
      cache_ttl?: number;
313
      priority?: number;
314
      early_return?: string;
315
      [k: string]: unknown;
316
    };
317
    schema?: { [k: string]: unknown };
318
    [k: string]: unknown;
319
  } & {
320
    path: string;
321
    tag?: string;
322
    ws_error_handler_muted?: boolean;
323
    priority?: number;
324
    dedicated_worker?: boolean;
325
    timeout?: number;
326
    [k: string]: unknown;
327
  }) & { deployment_message?: string; [k: string]: unknown }
328
) {
329
  const url = new URL(`${BASE_URL}/api/w/${workspace}/flows/update/${path}`);
330

331
  const response = await fetch(url, {
332
    method: "POST",
333
    headers: {
334
      "Content-Type": "application/json",
335
      Authorization: "Bearer " + WM_TOKEN,
336
    },
337
    body: JSON.stringify(body),
338
  });
339
  if (!response.ok) {
340
    const text = await response.text();
341
    throw new Error(`${response.status} ${text}`);
342
  }
343
  return await response.text();
344
}
345