1 | |
2 | * run flow preview |
3 | * |
4 | */ |
5 | export async function main( |
6 | workspace: string, |
7 | include_header: string | undefined, |
8 | invisible_to_owner: string | undefined, |
9 | job_id: string | undefined, |
10 | body: { |
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 | path?: string; |
318 | args: { [k: string]: unknown }; |
319 | tag?: string; |
320 | restarted_from?: { |
321 | flow_job_id?: string; |
322 | step_id?: string; |
323 | branch_or_iteration_n?: number; |
324 | [k: string]: unknown; |
325 | }; |
326 | [k: string]: unknown; |
327 | } |
328 | ) { |
329 | const url = new URL(`${BASE_URL}/api/w/${workspace}/jobs/run/preview_flow`); |
330 | for (const [k, v] of [ |
331 | ["include_header", include_header], |
332 | ["invisible_to_owner", invisible_to_owner], |
333 | ["job_id", job_id], |
334 | ]) { |
335 | if (v !== undefined && v !== "") { |
336 | url.searchParams.append(k, v); |
337 | } |
338 | } |
339 | const response = await fetch(url, { |
340 | method: "POST", |
341 | headers: { |
342 | "Content-Type": "application/json", |
343 | Authorization: "Bearer " + WM_TOKEN, |
344 | }, |
345 | body: JSON.stringify(body), |
346 | }); |
347 | if (!response.ok) { |
348 | const text = await response.text(); |
349 | throw new Error(`${response.status} ${text}`); |
350 | } |
351 | return await response.text(); |
352 | } |
353 |
|