@redocly/replay 0.18.0-rc.1 → 0.19.0-custom.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3800 @@
1
+ import { b as Gt, a as U, p as Y, c as Io, f as ke, g as cr, h as Do, k as rr, l as Lo, y as fr, m as X, n as Re, o as Zt, q as No, t as ur, u as Yt, v as we, R as Ze, w as jo, x as Wo, C as V, z as Dt, A as qo, B as Uo, S as es, U as rs, D as J, E as zo, F as Bo, G as xo, H as Mo, I as Vo, J as Ko, K as Ho, L as Jo, M as Xo, N as Lt, O as Qo, P as Nt, Q as Go, T as Zo } from "./replay-index-B_cF92hB.js";
2
+ async function Yo(r) {
3
+ const { descriptionPath: t, externalRefResolver: e, base: n } = r, a = await Gt({
4
+ base: n,
5
+ ref: t,
6
+ config: r.config,
7
+ dereference: !0,
8
+ externalRefResolver: e
9
+ });
10
+ if (!a)
11
+ throw new Error(`Could not find source description file '${t}'.`);
12
+ return a.bundle.parsed;
13
+ }
14
+ function ts(r) {
15
+ if (typeof r != "object")
16
+ return;
17
+ const t = Object.keys(r)[0];
18
+ return t ? r[t]?.value : void 0;
19
+ }
20
+ const ei = (r) => /\{.*?\}/.test(r);
21
+ function fe({ value: r, ctx: t, logger: e }) {
22
+ if (!r)
23
+ return r;
24
+ if (typeof r == "object") {
25
+ for (const n in r)
26
+ r[n] = fe({ value: r[n], ctx: t, logger: e });
27
+ return r;
28
+ }
29
+ return typeof r == "number" || typeof r == "boolean" ? r : r.toString().startsWith("$faker.") ? ze({ pointer: r.slice(1), ctx: t, logger: e }) : ei(r) ? si(r, t, e) : oi(r, t, e);
30
+ }
31
+ function ri(r, t, e) {
32
+ const n = r.indexOf("{");
33
+ if (n !== -1) {
34
+ const c = r.substring(n + 1).slice(0, -1), f = ze({ pointer: c.slice(1), ctx: t, logger: e });
35
+ return f && r.replace(/{(.*)}/, f);
36
+ } else
37
+ return r;
38
+ }
39
+ function ti(r, t) {
40
+ const e = Object.keys(t), n = Object.values(t);
41
+ return new Function(...e, `return ${r}`)(...n);
42
+ }
43
+ function si(r, t, e) {
44
+ const n = /\{\$(\{[^{}]*\}|[^{}])*\}/g;
45
+ let a = r;
46
+ return a = a.replace(n, (c, f) => ni(c, t, e)), a;
47
+ }
48
+ function ni(r, t, e) {
49
+ if (!r.includes("$"))
50
+ return r;
51
+ if (r.includes("$faker."))
52
+ return ri(r, t, e);
53
+ const n = qe(t)(ii(r));
54
+ return n !== void 0 ? n : "";
55
+ }
56
+ const oi = (r, t, e) => {
57
+ if (!r)
58
+ return r;
59
+ const n = r.toString();
60
+ if (!n.includes("$"))
61
+ return r;
62
+ if (n.startsWith("$file(") && n.endsWith(")"))
63
+ return n.slice(7, -2);
64
+ if (n.startsWith("$sourceDescriptions.") && n.includes(".workflows.")) {
65
+ const a = n.split("."), c = a[1], f = a[3];
66
+ if (!c || !f)
67
+ return;
68
+ const l = qe(t)("$sourceDescriptions");
69
+ return l[c] ? l[c].workflows.find((h) => h.workflowId === f) : void 0;
70
+ }
71
+ return n && n.trim().startsWith("faker.") ? ze({ pointer: n, ctx: t, logger: e }) : n ? qe(t)(jt(n)) : n.replace(/\$\{([^}]+)}/g, (a, c) => qe(t)(jt(c)));
72
+ };
73
+ function ii(r) {
74
+ return r.replace(/\{(.*)\}/, "$1");
75
+ }
76
+ function jt(r) {
77
+ return r.replace(/\['(.*?)'\]/g, ".$1");
78
+ }
79
+ const qe = (r, t = "") => (e) => {
80
+ if (t || (t = e), !e)
81
+ return r;
82
+ const [n, ...a] = e.split(".");
83
+ if (!r)
84
+ throw Error(`Cannot get ${U(n)} from ${U(t)}`);
85
+ if (r?.[n] === void 0) {
86
+ const c = ` Undefined ${U(n)} at ${U(t)}.`, f = Object.keys(r).length ? `Did you mean to use another key? Available keys:
87
+ ${Object.keys(r).join(", ")}.
88
+ ` : "", l = `${c} ${f}`;
89
+ throw Error(l);
90
+ }
91
+ return qe(r[n], t)(a.join("."));
92
+ };
93
+ function ze({ pointer: r, ctx: t, logger: e }) {
94
+ const n = r.split("."), a = { ctx: { faker: t.$faker } };
95
+ try {
96
+ const c = n.map((f) => f.trim()).map((f, l) => (
97
+ // Dumb function check (if ends by ')'), if function goes first dont need to put '.',
98
+ // if goes second and so on - must be prepended by '.', like ["escaped-field"].func()
99
+ f.endsWith(")") ? `${l == 0 ? "" : "."}${f}` : `["${f}"]`
100
+ )).join("");
101
+ return ti(`ctx${c}`, a);
102
+ } catch (c) {
103
+ e.error(U(c.toString()));
104
+ return;
105
+ }
106
+ }
107
+ function ss(r, t, e) {
108
+ if (typeof r == "string" && r)
109
+ return fe({ value: r, ctx: t, logger: e });
110
+ if (!(typeof r == "string" || typeof r == "number" || typeof r == "boolean" || typeof r > "u" || r instanceof Blob || r === null))
111
+ for (const n in r)
112
+ typeof r[n] == "string" ? r[n] && (r[n] = fe({ value: r[n], ctx: t, logger: e })) : ss(r[n], t, e);
113
+ }
114
+ function Wt(r, t, e) {
115
+ return ss(r, t, e) || r;
116
+ }
117
+ function qt(r, t) {
118
+ if (!r)
119
+ return;
120
+ const e = {};
121
+ for (const n in t)
122
+ e[`{${n}}`] = String(t[n]);
123
+ return r.split(/(\{[a-zA-Z0-9_.-]+\}+)/g).map((n) => e[n] ? e[n] : n).join("");
124
+ }
125
+ function ai(r) {
126
+ return typeof r == "object" && r !== null && "name" in r && "value" in r && !("in" in r);
127
+ }
128
+ function Mr(r) {
129
+ return typeof r == "object" && r !== null && "in" in r && ["header", "query", "path", "cookie"].includes(r.in);
130
+ }
131
+ const ci = /^image\/(png|jpeg|gif|bmp|webp|svg\+xml)|application\/pdf$/;
132
+ function ns(r) {
133
+ return r.startsWith("$file(") && r.endsWith(")") ? r.substring(7, r.length - 2) : r;
134
+ }
135
+ const Ut = async (r, t, e, n, a) => {
136
+ const c = Y.dirname(n), f = Y.resolve(c, ns(e));
137
+ r.append(t, await a.options.requestFileLoader.getFileBody(f));
138
+ }, os = (r, t, e, n, a, c) => {
139
+ Object.entries(e).forEach(([f, l]) => {
140
+ const h = c ? `${c}[${f}]` : f;
141
+ typeof l == "string" && l.startsWith("$file(") && l.endsWith(")") ? r.push(Ut(t, h, l, n, a)) : Array.isArray(l) ? l.forEach((d) => {
142
+ typeof d == "string" && d.startsWith("$file(") && d.endsWith(")") ? r.push(Ut(t, h, d, n, a)) : t.append(h, d.toString());
143
+ }) : typeof l == "object" && l !== null ? os(r, t, l, n, a, h) : (typeof l == "string" || typeof l == "number" || typeof l == "boolean") && t.append(h, l.toString());
144
+ });
145
+ }, fi = async (r, t, e, n) => {
146
+ if (r && typeof r == "object" && !Array.isArray(r)) {
147
+ const a = [];
148
+ os(a, t, r, e, n), await Promise.all(a);
149
+ }
150
+ }, ui = async (r, t) => {
151
+ if (typeof r == "string" && r.startsWith("$file(") && r.endsWith(")")) {
152
+ const e = Y.resolve(Y.dirname(t.options.filePath), ns(r));
153
+ return t.options.requestFileLoader.getFileBody(e);
154
+ } else
155
+ return r;
156
+ };
157
+ async function li(r, t) {
158
+ if (!r)
159
+ return {
160
+ payload: void 0,
161
+ contentType: void 0,
162
+ encoding: void 0,
163
+ replacements: void 0
164
+ };
165
+ const { payload: e, contentType: n } = r;
166
+ if (n === "multipart/form-data") {
167
+ const a = new FormData(), c = Y.resolve(t.options.filePath);
168
+ return await fi(e, a, c, t), {
169
+ ...r,
170
+ payload: a
171
+ };
172
+ } else {
173
+ if (n === "application/octet-stream" || typeof n == "string" && ci.test(n))
174
+ return {
175
+ ...r,
176
+ payload: await ui(e, t),
177
+ contentType: "application/octet-stream"
178
+ };
179
+ if (n === "application/x-www-form-urlencoded" && typeof e == "string")
180
+ return {
181
+ ...r,
182
+ payload: Object.fromEntries(new URLSearchParams(e).entries()),
183
+ contentType: "application/x-www-form-urlencoded"
184
+ };
185
+ }
186
+ return r;
187
+ }
188
+ function pi(r) {
189
+ try {
190
+ return Io(r);
191
+ } catch {
192
+ throw new Error(`Runtime expression is not valid: ${r}`);
193
+ }
194
+ }
195
+ function di(r, t) {
196
+ const e = [
197
+ {
198
+ pattern: /\$response\.body#\/([\w/]+)/g,
199
+ ctxFunction: (a, c) => Ne(t.$response?.body, c, a)
200
+ },
201
+ {
202
+ pattern: /\$request\.body#\/([\w/]+)/g,
203
+ ctxFunction: (a, c) => Ne(t.$request?.body, c, a)
204
+ },
205
+ {
206
+ pattern: /\$outputs\.([\w-]+)#\/([\w/]+)/g,
207
+ ctxFunction: (a, c, f) => Ne(t.$outputs?.[c], f, a)
208
+ },
209
+ {
210
+ pattern: /\$workflows\.([\w-]+)\.outputs\.([\w-]+)#\/([\w/]+)/g,
211
+ ctxFunction: (a, c, f, l) => Ne(t.$workflows?.[c]?.outputs?.[f], l, a)
212
+ },
213
+ {
214
+ pattern: /\$steps\.([\w-]+)\.outputs\.([\w-]+)#\/([\w/]+)/g,
215
+ ctxFunction: (a, c, f, l) => Ne(t.$steps?.[c]?.outputs?.[f], l, a)
216
+ }
217
+ ];
218
+ let n = r;
219
+ for (const { pattern: a, ctxFunction: c } of e)
220
+ n = n.replaceAll(a, c);
221
+ return n;
222
+ }
223
+ function Ne(r, t, e) {
224
+ if (r)
225
+ try {
226
+ const n = ke.get(r, `/${t}`);
227
+ return typeof n == "string" || Array.isArray(n) || typeof n == "object" ? JSON.stringify(n) : n !== void 0 ? n : e;
228
+ } catch {
229
+ return e;
230
+ }
231
+ return e;
232
+ }
233
+ function oe({ payload: r, context: t, contentType: e, logger: n }) {
234
+ if (e?.includes("application/octet-stream"))
235
+ return Wt(r, t, n);
236
+ if (e?.includes("multipart/form-data")) {
237
+ if (r instanceof FormData) {
238
+ const a = new FormData();
239
+ for (const [c, f] of r.entries())
240
+ if (f instanceof File)
241
+ a.append(c, f);
242
+ else {
243
+ const l = oe({
244
+ payload: f,
245
+ context: t,
246
+ logger: n
247
+ });
248
+ a.append(c, l);
249
+ }
250
+ return a;
251
+ }
252
+ return Wt(r, t, n);
253
+ }
254
+ return typeof r == "string" ? Ei(r) ? Se(r, t, n) : vi(r, t, n) : cr(r) ? Object.entries(r).reduce((a, [c, f]) => (a[c] = oe({ payload: f, context: t, logger: n }), a), {}) : Array.isArray(r) ? r.map((a) => oe({ payload: a, context: t, logger: n })) : r;
255
+ }
256
+ function Se(r, t, e) {
257
+ return typeof r == "string" ? hi(r, t, e) : cr(r) ? Object.entries(r).reduce((n, [a, c]) => (n[a] = c && Se(c, t, e), n), {}) : Array.isArray(r) ? r.map((n) => Se(n, t, e)) : r;
258
+ }
259
+ function hi(r, t, e) {
260
+ if (/^\$faker\.[a-zA-Z0-9._-]+(\([^\\)]*\))?$/.test(r))
261
+ return ze({ pointer: r.slice(1), ctx: t, logger: e });
262
+ if (r.includes("$faker.")) {
263
+ const c = /\$faker\.[a-zA-Z0-9._-]+(\([^\\)]*\))?/g;
264
+ r = r.replace(c, (f) => ze({ pointer: f.slice(1), ctx: t, logger: e })).replace(/{(.*?)}/g, "$1");
265
+ }
266
+ if (!r.includes("$") && !/[=<>]/.test(r))
267
+ return r;
268
+ pi(r);
269
+ const n = mi(r, t), a = $i(t);
270
+ try {
271
+ return new Function(...Object.keys(a), `return ${n};`)(...Object.values(a));
272
+ } catch {
273
+ throw new Error(`Error in resolving runtime expression '${r}'.
274
+ This could be because the expression references a value from a previous failed step, or is trying to reference a variable that hasn't been set.`);
275
+ }
276
+ }
277
+ function gi(r) {
278
+ return r.replace(/\$([a-zA-Z0-9._-]+)/g, (t, e) => `$${e.replace(/-/g, "_")}`);
279
+ }
280
+ function mi(r, t) {
281
+ const e = di(r, t), a = gi(e).replace(/{(.*?)}/g, "$1"), c = wi(a), f = /\.header\.([a-zA-Z0-9._-]+)/g;
282
+ return c.replace(f, (h, d) => `.header.${d.toLowerCase()}`);
283
+ }
284
+ function $i(r) {
285
+ const t = {};
286
+ for (const [e, n] of Object.entries(r)) {
287
+ const a = e.replace(/-/g, "_");
288
+ t[a] = is(n);
289
+ }
290
+ return t;
291
+ }
292
+ function is(r) {
293
+ return Array.isArray(r) ? r : typeof r == "object" && r !== null ? yi(r) : r;
294
+ }
295
+ function yi(r) {
296
+ return Object.keys(r).reduce((t, e) => {
297
+ const n = e.replace(/-/g, "_");
298
+ return t[n] = is(r[e]), t;
299
+ }, {});
300
+ }
301
+ function wi(r) {
302
+ return r.replace(/\.(\d+)/g, (t, e, n, a) => {
303
+ const c = a[n - 1];
304
+ return /\d/.test(c) ? t : `[${e}]`;
305
+ });
306
+ }
307
+ function vi(r, t, e) {
308
+ const n = /\{(?:[^{}]|\{[^{}]*\})*\}|\$[^\s{}]+(?:\([^()]*\))*/g;
309
+ return r.replace(n, (a) => {
310
+ const c = a.trim(), f = Se(c, t, e);
311
+ return f !== void 0 ? f : a;
312
+ });
313
+ }
314
+ function Ei(r) {
315
+ return /^\$[^\s{}]+(\([^)]*\))?$|^\{[^{}]*\}$/.test(r.trim());
316
+ }
317
+ function ki({ payload: r, replacements: t, expressionContext: e, logger: n }) {
318
+ for (const a of t) {
319
+ const { target: c, value: f } = a;
320
+ if (typeof c != "string")
321
+ throw new Error(`Invalid JSON Pointer: ${c}`);
322
+ try {
323
+ const l = ke.get(r, c), h = oe({
324
+ payload: f,
325
+ context: e,
326
+ logger: n
327
+ });
328
+ l !== void 0 && ke.set(r, c, h);
329
+ } catch {
330
+ throw new Error(`Invalid JSON Pointer: ${c}`);
331
+ }
332
+ }
333
+ }
334
+ const Si = ["parameters", "failureActions", "successActions"];
335
+ function bi(r, t) {
336
+ const { reference: e, value: n } = r;
337
+ if (!Si.some((c) => e.includes(`$components.${c}`)))
338
+ throw new Error("Invalid reference: available components are $components.parameters, $components.failureActions, or $components.successActions");
339
+ const a = fe({ value: e, ctx: t, logger: t.options.logger });
340
+ return "value" in a && n ? {
341
+ ...a,
342
+ value: n
343
+ } : a;
344
+ }
345
+ function We(r, t) {
346
+ return "reference" in r ? bi(r, t) : r;
347
+ }
348
+ function Ci(r, t) {
349
+ const e = r?.requestBody?.content || {}, [n, a] = Object.entries(e)[0] || [], c = a?.example || ts(a?.examples) || as(a?.schema, t), f = Ai(r);
350
+ return {
351
+ parameters: Ri([
352
+ ...zt(r.pathParameters, t),
353
+ ...zt(r.parameters, t)
354
+ ]).filter(({ value: h }) => h),
355
+ contentTypeParameters: [
356
+ ...n ? [{ name: "content-type", in: "header", value: n }] : [],
357
+ ...f ? [{ name: "accept", in: "header", value: f }] : []
358
+ ],
359
+ requestBody: c,
360
+ contentType: n
361
+ };
362
+ }
363
+ function Ai(r) {
364
+ return r?.responses ? Array.from(new Set(Object.values(r.responses).flatMap((t) => cr(t) && "content" in t ? Object.keys(t.content || {}) : []))).join(", ") : void 0;
365
+ }
366
+ function zt(r, t) {
367
+ return (r || []).filter((e) => e?.required === !0).map((e) => {
368
+ if (Mr(e))
369
+ return {
370
+ name: e.name,
371
+ in: e.in,
372
+ value: Di(e, t)
373
+ };
374
+ }).filter((e) => e !== void 0);
375
+ }
376
+ function Ri(r) {
377
+ const t = {};
378
+ for (const e of r)
379
+ Mr(e) && (t[(e.name + ":" + e.in).toLowerCase()] = e);
380
+ return Object.values(t);
381
+ }
382
+ function Oi(r, t) {
383
+ let e, n;
384
+ if (r.includes("$sourceDescriptions.")) {
385
+ const [, h, d] = r.split(".");
386
+ e = h, n = d;
387
+ } else r.includes(".") ? [e, n] = r.split(".") : (n = r, e = Object.keys(t)[0]);
388
+ const a = Object.keys(t);
389
+ if (!t[e])
390
+ throw new Error(`Unknown description name ${U(e)} at ${U(r)}. Available descriptions: ${a.join(", ")}.`);
391
+ const c = t[e], f = c?.components?.securitySchemes, l = c.servers;
392
+ for (const [h, d] of Object.entries(t[e].paths)) {
393
+ if (!d)
394
+ return;
395
+ for (const [m, y] of Object.entries(d))
396
+ if (y.operationId === n)
397
+ return {
398
+ servers: d.servers || l,
399
+ ...y,
400
+ pathParameters: y.parameters || [],
401
+ path: h,
402
+ method: m,
403
+ descriptionName: e,
404
+ securitySchemes: f
405
+ };
406
+ }
407
+ throw new Error(`Unknown operationId ${U(n)} at ${U(r)}.`);
408
+ }
409
+ function Ti(r, t) {
410
+ const { $sourceDescriptions: e, sourceDescriptions: n } = t, [a, c] = r.split("#");
411
+ if (!n)
412
+ throw new Error("Missing described sourceDescriptions");
413
+ const f = n.find((T) => {
414
+ if (["openapi", "arazzo"].includes(T.type)) {
415
+ if (a.includes("$sourceDescriptions.")) {
416
+ const [, L] = a.split(".");
417
+ return T.name === L;
418
+ }
419
+ return "url" in T && T.url === a;
420
+ }
421
+ return !1;
422
+ })?.name;
423
+ if (!f)
424
+ throw new Error(`Unknown operationPath ${U(r)}. API description ${U(a)} is not listed in 'sourceDescriptions' workflow section.`);
425
+ const l = e[f] || {}, h = l?.components?.securitySchemes, [d, m, y] = ke.parse(c);
426
+ if (d !== "paths")
427
+ throw new Error(`Invalid fragment identifier: ${c} at operationPath ${U(r)}.`);
428
+ const { servers: E } = l, S = ke.get(l, c) || {}, N = ke.get(l, ke.compile(["paths", m])) || {};
429
+ return {
430
+ servers: N.servers || E,
431
+ // use servers from path level if exists
432
+ ...S,
433
+ // operation level servers override path level or global servers
434
+ pathParameters: N.parameters || [],
435
+ path: m,
436
+ method: y,
437
+ descriptionName: f,
438
+ securitySchemes: h
439
+ };
440
+ }
441
+ function Pi(r, t) {
442
+ if (!r.operationId && !r.operationPath)
443
+ return;
444
+ const { $sourceDescriptions: e, sourceDescriptions: n } = t, { operationId: a, operationPath: c } = r;
445
+ return a ? Oi(a, e) : c ? Ti(c, { $sourceDescriptions: e, sourceDescriptions: n }) : void 0;
446
+ }
447
+ function _i({ statusCode: r, contentType: t, descriptionResponses: e }) {
448
+ return e ? (e[r] || e.default)?.content?.[t]?.schema : void 0;
449
+ }
450
+ function Fi(r, t) {
451
+ if (!t)
452
+ return;
453
+ const n = t.requestBody?.content;
454
+ return n && n[r]?.schema || void 0;
455
+ }
456
+ const Ii = {
457
+ title: "[REPLACE WITH API title]",
458
+ version: "[REPLACE WITH API version]"
459
+ };
460
+ function as(r, t) {
461
+ if (r)
462
+ try {
463
+ return Do(r, { skipReadOnly: !0, skipNonRequired: !1, quiet: !0 });
464
+ } catch (e) {
465
+ t.error(rr(" Error while generating test data from JSON Schema ") + `
466
+ ` + e);
467
+ return;
468
+ }
469
+ }
470
+ function Di(r, t) {
471
+ if (r?.example)
472
+ return r.example;
473
+ if (r?.examples)
474
+ return ts(r.examples);
475
+ if (r?.schema)
476
+ return as(r.schema, t);
477
+ }
478
+ function Li(r) {
479
+ return r == null ? !0 : r.constructor.name === "FormData" || r instanceof Blob && r.size > 0 ? !1 : typeof r == "object" ? Object.keys(r).length === 0 : typeof r == "string" || Array.isArray(r) ? r.length === 0 : !1;
480
+ }
481
+ function Ni(r) {
482
+ return !Lo && process.env.NODE_ENV === "test" ? "<test>ms" : `${Math.ceil(performance.now() - r)}ms`;
483
+ }
484
+ function Vr(r) {
485
+ const t = r.length;
486
+ let e = 0, n = 0, a = 0, c = 0, f = 0, l = 0, h = 0;
487
+ const d = /* @__PURE__ */ new Set();
488
+ let m = 0;
489
+ const y = /* @__PURE__ */ new Set(), E = /* @__PURE__ */ new Set();
490
+ for (const S of r) {
491
+ const N = cs(S.executedSteps);
492
+ let T = !1;
493
+ for (const L of N) {
494
+ if (c++, L.retriesLeft && L.retriesLeft !== 0)
495
+ continue;
496
+ a++;
497
+ let W = !1;
498
+ for (const D of L.checks)
499
+ if (n++, !D.passed)
500
+ switch (D.severity) {
501
+ case "warn":
502
+ f++, d.add(S.workflowId), E.add(S.workflowId + ":" + L.stepId);
503
+ break;
504
+ case "off":
505
+ l++, y.add(S.workflowId + ":" + L.stepId);
506
+ break;
507
+ default:
508
+ e++, W = !0;
509
+ }
510
+ W && (m++, T = !0);
511
+ }
512
+ T && h++;
513
+ }
514
+ return {
515
+ workflows: {
516
+ passed: t - h,
517
+ failed: h,
518
+ warnings: d.size,
519
+ skipped: 0,
520
+ total: t
521
+ },
522
+ steps: {
523
+ passed: a - m,
524
+ failed: m,
525
+ warnings: E.size,
526
+ skipped: y.size,
527
+ total: a
528
+ },
529
+ checks: {
530
+ passed: n - e,
531
+ failed: e,
532
+ warnings: f,
533
+ skipped: l,
534
+ total: n
535
+ },
536
+ totalRequests: c
537
+ };
538
+ }
539
+ function cs(r) {
540
+ return r.flatMap((t) => "executedSteps" in t ? cs(t.executedSteps) : [t]);
541
+ }
542
+ function ji({ startedAt: r, workflows: t, options: e }) {
543
+ const { logger: n } = e, a = Y.basename(e?.file || ""), c = ar(e?.workflow) || [], f = ar(e?.skip) || [];
544
+ let l = c && c.length ? t.filter(({ workflowId: m }) => c.includes(m)) : t;
545
+ l = f && f.length ? l.filter(({ workflowId: m }) => !f.includes(m)) : l;
546
+ const h = Vr(l), d = Ni(r);
547
+ n.printNewLine(), n.output(No`
548
+ ${fr(X(`Summary for ${Re(a)}`, 2))}
549
+ ${X("", 2)}
550
+ ${X(Wi("Workflows:", h.workflows), 2)}
551
+ ${X(Bt("Steps:", h.steps), 2)}
552
+ ${X(Bt("Checks:", h.checks), 2)}
553
+ ${X(Zt(`Time: ${d}`), 2)}
554
+ `), n.printNewLine(), n.printNewLine();
555
+ }
556
+ function Wi(r, t) {
557
+ return ur(r) + (t.passed ? ` ${Yt(t.passed + " passed")},` : "") + (t.failed ? ` ${U(t.failed + " failed")},` : "") + ` ${t.total} total`;
558
+ }
559
+ function Bt(r, t) {
560
+ return ur(r) + (t.passed ? ` ${Yt(t.passed + " passed")},` : "") + (t.failed ? ` ${U(t.failed + " failed")},` : "") + (t.warnings ? ` ${fr(t.warnings + " warnings")},` : "") + (t.skipped ? ` ${we(t.skipped + " ignored")},` : "") + ` ${t.total} total`;
561
+ }
562
+ const xt = {
563
+ SUCCESS_CRITERIA_CHECK: "error",
564
+ STATUS_CODE_CHECK: "error",
565
+ SCHEMA_CHECK: "error",
566
+ CONTENT_TYPE_CHECK: "error",
567
+ GLOBAL_TIMEOUT_ERROR: "error",
568
+ MAX_STEPS_REACHED_ERROR: "error",
569
+ NETWORK_ERROR: "error",
570
+ UNEXPECTED_ERROR: "error"
571
+ };
572
+ function qi(r) {
573
+ if (!r)
574
+ return xt;
575
+ const t = Kr(r);
576
+ if (Object.keys(t).length === 0)
577
+ throw new Error(`Failed to parse severity configuration, please check the format ${r}`);
578
+ return {
579
+ ...xt,
580
+ ...t,
581
+ UNEXPECTED_ERROR: "error",
582
+ NETWORK_ERROR: "error"
583
+ };
584
+ }
585
+ function fs(r) {
586
+ return r.flatMap((t) => "executedSteps" in t ? fs(t.executedSteps) : [t]);
587
+ }
588
+ function Ui(r, t) {
589
+ t.output(`${Ze}
590
+ ${X(U("Failed tests info:"), 2)}
591
+ `);
592
+ for (const e of r) {
593
+ const n = fs(e.executedSteps);
594
+ if (n.some((c) => c.checks.some((f) => !f.passed) && (!c.retriesLeft || c.retriesLeft === 0))) {
595
+ t.output(`${Ze}
596
+ ${X(we("Workflow name:"), 2)} ${jo(e.workflowId)}${Ze}
597
+ `);
598
+ for (const c of n) {
599
+ const f = c.checks.filter((l) => !l.passed);
600
+ if (f.length && !(c.retriesLeft && c.retriesLeft !== 0)) {
601
+ t.printNewLine(), t.output(X(`${Re("stepId - ")}`, 4) + (c?.stepId ? U(c.stepId) : U(c?.operationId || c?.operationPath || "")));
602
+ for (const l in f) {
603
+ const { name: h, message: d, severity: m } = f[l], E = [
604
+ V.UNEXPECTED_ERROR,
605
+ V.GLOBAL_TIMEOUT_ERROR,
606
+ V.MAX_STEPS_REACHED_ERROR
607
+ ].includes(h) ? X(`Reason: ${d}`, 4) : X(`${Wo(d)}${Ze}
608
+ `, 6);
609
+ t.printNewLine(), m === "error" ? t.output(X(`${U("✗")} ${we(h.toLowerCase())}`, 4)) : m === "off" ? t.output(X(`${we("○")} ${we(h.toLowerCase())} ${we("(skipped)")}`, 4)) : t.output(X(`${fr("⚠")} ${we(h.toLowerCase())}`, 4)), t.printNewLine(), t.output(`${E}`);
610
+ }
611
+ }
612
+ }
613
+ }
614
+ }
615
+ }
616
+ function Nr({ headerParams: r, path: t, method: e, host: n, body: a, statusCode: c, responseTime: f, responseSize: l }) {
617
+ const h = {
618
+ path: t,
619
+ method: e,
620
+ host: n
621
+ };
622
+ return r && Object.keys(r).length > 0 && (h.headerParams = r), a && (a instanceof FormData || a instanceof File || a instanceof ArrayBuffer || Object.keys(a).length > 0) && (h.body = a), c && (h.statusCode = c), f && (h.responseTime = f), l !== void 0 && (h.responseSize = l), h;
623
+ }
624
+ function Wr(r, t = /* @__PURE__ */ new WeakMap()) {
625
+ if (!Array.isArray(r) && !cr(r))
626
+ return r;
627
+ if (t.has(r))
628
+ return t.get(r);
629
+ if (r instanceof ArrayBuffer || r instanceof File || r instanceof Blob || r instanceof FormData || r instanceof Date || r instanceof RegExp || r instanceof Map || r instanceof Set || r instanceof URL || r instanceof Error)
630
+ return r;
631
+ if (Array.isArray(r)) {
632
+ const n = [];
633
+ t.set(r, n);
634
+ for (let a = 0; a < r.length; a++)
635
+ n[a] = Wr(r[a], t);
636
+ return n;
637
+ }
638
+ const e = {};
639
+ t.set(r, e);
640
+ for (const n in r)
641
+ Object.prototype.hasOwnProperty.call(r, n) && (e[n] = Wr(r[n], t));
642
+ return e;
643
+ }
644
+ const zi = [
645
+ "token",
646
+ "access_token",
647
+ "id_token",
648
+ "password",
649
+ "client_secret"
650
+ ];
651
+ function Bi(r, t) {
652
+ const e = (f, l) => f.replace(l, "*".repeat(8));
653
+ if (typeof r == "string") {
654
+ let f = r;
655
+ return t.forEach((l) => {
656
+ f = f.split(l).join("*".repeat(8));
657
+ }), f;
658
+ }
659
+ const n = Wr(r), a = (f) => {
660
+ let l = f;
661
+ for (const h of t)
662
+ l.includes(h) && (l = e(l, h));
663
+ return l;
664
+ }, c = (f) => {
665
+ for (const l in f)
666
+ typeof f[l] == "string" ? f[l] = a(f[l]) : typeof f[l] == "object" && f[l] !== null && !(f[l] instanceof File) && !(f[l] instanceof ArrayBuffer) && !(f[l] instanceof Blob) && !(f[l] instanceof FormData) && !(f[l] instanceof Date) && !(f[l] instanceof RegExp) && !(f[l] instanceof Map) && !(f[l] instanceof Set) && !(f[l] instanceof URL) && !(f[l] instanceof Error) && c(f[l]);
667
+ };
668
+ return c(n), n;
669
+ }
670
+ function Mt(r, t = zi) {
671
+ const e = [];
672
+ if (!r || typeof r != "object")
673
+ return e;
674
+ const n = (a) => {
675
+ if (!(!a || typeof a != "object")) {
676
+ if (Array.isArray(a)) {
677
+ for (const c of a)
678
+ n(c);
679
+ return;
680
+ }
681
+ for (const c in a) {
682
+ const f = a[c];
683
+ if (t.some((l) => l.toLowerCase() === c.toLowerCase()) && typeof f == "string" && f.trim() && e.push(f), typeof f == "string" && f.trim())
684
+ for (const l of t) {
685
+ const h = f.match(new RegExp(`${l}=([^;\\s]+)`, "i")), [, d] = h || [];
686
+ d && e.push(d);
687
+ }
688
+ f && typeof f == "object" && n(f);
689
+ }
690
+ }
691
+ };
692
+ return n(r), e;
693
+ }
694
+ function ge({ value: r, noSecretsMasking: t, secretsSet: e }) {
695
+ return t ? r : Bi(r, e);
696
+ }
697
+ function us({ ctx: r, security: t, operation: e }) {
698
+ const { scheme: n, schemeName: a } = t;
699
+ if (n)
700
+ return t.scheme;
701
+ if (a) {
702
+ if (typeof a == "string" && a.startsWith("$sourceDescriptions.")) {
703
+ const [c, f, l] = a.split("."), d = (f && r.$sourceDescriptions[f])?.components?.securitySchemes;
704
+ return l && d ? d[l] : void 0;
705
+ }
706
+ return e?.securitySchemes?.[a];
707
+ }
708
+ }
709
+ function xi(r) {
710
+ const t = r.replace("Digest ", "").split(",").map((a) => a.trim());
711
+ return Object.fromEntries(["realm", "nonce", "opaque", "qop", "algorithm", "cnonce", "nc"].map((a) => [
712
+ a,
713
+ t.find((c) => c.startsWith(`${a}=`))?.split("=")[1]?.replace(/"/g, "")
714
+ ]));
715
+ }
716
+ const ls = "MD5", ps = "00000001";
717
+ function Mi({ username: r, password: t, nonce: e, realm: n, cnonce: a, algorithm: c = ls, qop: f, nc: l = ps, opaque: h, uri: d, method: m, bodyContent: y = "" }) {
718
+ const E = {
719
+ username: r,
720
+ password: t,
721
+ realm: n,
722
+ nonce: e,
723
+ qop: f,
724
+ opaque: h,
725
+ uri: d,
726
+ method: m
727
+ }, S = Object.entries(E).filter(([L, W]) => !W).map(([L]) => L);
728
+ if (S.length > 0)
729
+ throw new Error(`Missing required digest auth parameters: ${S.join(", ")}`);
730
+ const N = Vi({
731
+ ...E,
732
+ cnonce: a,
733
+ algorithm: c,
734
+ nc: l,
735
+ bodyContent: y
736
+ }), T = [
737
+ `username="${r}"`,
738
+ `realm="${n}"`,
739
+ `nonce="${e}"`,
740
+ `uri="${d}"`,
741
+ `qop=${f}`,
742
+ `nc=${l}`,
743
+ `cnonce="${a}"`,
744
+ `response="${N}"`,
745
+ `algorithm=${c}`
746
+ ];
747
+ return h && T.push(`opaque="${h}"`), `Digest ${T.join(", ")}`;
748
+ }
749
+ function Vi(r) {
750
+ const { username: t, password: e, realm: n, nonce: a, cnonce: c, algorithm: f = ls, qop: l, nc: h = ps, uri: d, method: m, bodyContent: y } = r, E = f.endsWith("-sess") ? me(f)(me(f)(`${t}:${n}:${e}`) + `:${a}:${c}`) : me(f)(`${t}:${n}:${e}`), S = l.includes("auth-int") ? me(f)(`${m}:${d}:${me(f)(y)}`) : me(f)(`${m}:${d}`);
751
+ return me(f)(`${E}:${a}:${h}:${c}:${l}:${S}`);
752
+ }
753
+ function me(r) {
754
+ switch (r.replace("-sess", "").toUpperCase()) {
755
+ case "SHA-256":
756
+ return (e) => Dt(Uo(e));
757
+ default:
758
+ return (e) => Dt(qo(e));
759
+ }
760
+ }
761
+ function Ki(r) {
762
+ return [
763
+ "application/octet-stream",
764
+ "application/pdf",
765
+ "image/",
766
+ "audio/",
767
+ "video/",
768
+ "application/zip",
769
+ "application/x-zip-compressed",
770
+ "application/gzip",
771
+ "application/x-gzip",
772
+ "application/x-bzip2",
773
+ "application/x-tar",
774
+ "application/x-rar-compressed",
775
+ "application/x-7z-compressed",
776
+ "application/vnd.openxmlformats-officedocument",
777
+ "application/vnd.ms-excel",
778
+ "application/vnd.ms-powerpoint",
779
+ "application/msword",
780
+ "application/x-shockwave-flash",
781
+ "application/x-font-",
782
+ "font/",
783
+ "application/x-font-ttf"
784
+ ].some((e) => r.startsWith(e));
785
+ }
786
+ function je(r) {
787
+ return /^application\/([a-z.-]+\+)?json$/.test(r);
788
+ }
789
+ function Hi(r) {
790
+ return /^application\/([a-z.-]+\+)?xml$/.test(r);
791
+ }
792
+ function Ji(r) {
793
+ return r.endsWith("/") ? r.slice(0, -1) : r;
794
+ }
795
+ class Xi {
796
+ constructor(t) {
797
+ this.initVerboseLogs = ({ headerParams: e, host: n, path: a, method: c, body: f }) => {
798
+ this.verboseLogs = Nr({
799
+ headerParams: e,
800
+ host: n,
801
+ path: a,
802
+ method: c,
803
+ body: f instanceof FormData || f instanceof File ? f : JSON.stringify(f)
804
+ });
805
+ }, this.getVerboseLogs = () => this.verboseLogs, this.updateVerboseLogs = (e) => {
806
+ if (!this.verboseLogs)
807
+ throw new Error("Verbose logs not initialized");
808
+ this.verboseLogs = Nr({
809
+ ...this.verboseLogs,
810
+ ...e
811
+ });
812
+ }, this.initVerboseResponseLogs = ({ headerParams: e, host: n, path: a, method: c, body: f, statusCode: l, responseTime: h, responseSize: d }) => {
813
+ this.verboseResponseLogs = Nr({
814
+ headerParams: e,
815
+ host: n,
816
+ path: a,
817
+ method: c,
818
+ body: f,
819
+ statusCode: l,
820
+ responseTime: h,
821
+ responseSize: d
822
+ });
823
+ }, this.getVerboseResponseLogs = () => this.verboseResponseLogs, this.clearVerboseResponseLogs = () => {
824
+ this.verboseResponseLogs = void 0;
825
+ }, this.fetchResult = async ({ ctx: e, step: n, requestData: a, workflowId: c }) => {
826
+ const { serverUrl: f, path: l, method: h, parameters: d, requestBody: m, openapiOperation: y } = a;
827
+ if (!f?.url)
828
+ throw e.options.logger.error(rr(" No server url provided ")), new Error("No server url provided");
829
+ const E = {}, S = new URLSearchParams(), N = {}, T = {};
830
+ for (const O of d)
831
+ switch (O.in) {
832
+ case "header":
833
+ E[O.name.toLowerCase()] = String(O.value);
834
+ break;
835
+ case "query":
836
+ S.set(O.name, String(O.value));
837
+ break;
838
+ case "path":
839
+ N[O.name] = String(O.value);
840
+ break;
841
+ case "cookie":
842
+ T[O.name] = String(O.value);
843
+ break;
844
+ }
845
+ typeof m == "object" && !E["content-type"] && (E["content-type"] = "application/json"), Object.keys(T).length && (E.cookie = Object.entries(T).map(([O, Z]) => `${O}=${Z}`).join("; "));
846
+ const W = `${qt(l, N) || ""}${S.toString() ? "?" + S.toString() : ""}`, D = qt(f.url, N) || "", P = `${Ji(D)}${W}`;
847
+ P.startsWith("/") && e.options.logger.error(rr(` Wrong url: ${Zt(P)} `) + ` Did you forget to provide a correct "serverUrl"?
848
+ `);
849
+ const b = E["content-type"] || "";
850
+ m && !b && e.options.logger.error(rr(" Incorrect request ") + ` Please provide a correct "content-type" header or specify the "content-type" field in the test case itself.
851
+ `);
852
+ let A;
853
+ if (b === "application/x-www-form-urlencoded")
854
+ A = new URLSearchParams(m).toString();
855
+ else if (je(b || ""))
856
+ A = JSON.stringify(m);
857
+ else if (Hi(b))
858
+ A = m;
859
+ else if (b.includes("multipart/form-data"))
860
+ A = m, delete E["content-type"];
861
+ else if (b === "application/octet-stream") {
862
+ if (A = m, m instanceof File) {
863
+ const O = m.name;
864
+ E["content-disposition"] = `attachment; filename=${O}`;
865
+ }
866
+ } else
867
+ A = m;
868
+ const K = ge({
869
+ value: E,
870
+ noSecretsMasking: e.noSecretsMasking,
871
+ secretsSet: e.secretsSet
872
+ });
873
+ let F;
874
+ if (A instanceof FormData) {
875
+ const O = new FormData();
876
+ for (const [Z, le] of A.entries())
877
+ if (le instanceof File)
878
+ O.append(Z, le);
879
+ else {
880
+ const Fe = ge({
881
+ value: le,
882
+ noSecretsMasking: e.noSecretsMasking,
883
+ secretsSet: e.secretsSet
884
+ });
885
+ O.append(Z, Fe);
886
+ }
887
+ F = O;
888
+ } else je(b) && A ? F = ge({
889
+ value: JSON.parse(A),
890
+ noSecretsMasking: e.noSecretsMasking,
891
+ secretsSet: e.secretsSet
892
+ }) : F = A;
893
+ const j = ge({
894
+ value: W,
895
+ noSecretsMasking: e.noSecretsMasking,
896
+ secretsSet: e.secretsSet
897
+ });
898
+ this.initVerboseLogs({
899
+ headerParams: K,
900
+ host: D,
901
+ method: h.toUpperCase(),
902
+ path: j || "",
903
+ body: F
904
+ });
905
+ const z = e.options.fetch, x = performance.now();
906
+ let I, B, H;
907
+ const ee = {
908
+ method: h.toUpperCase(),
909
+ headers: E,
910
+ ...!Li(m) && {
911
+ body: A
912
+ },
913
+ redirect: "follow",
914
+ signal: AbortSignal.timeout(e.options.maxFetchTimeout),
915
+ // Required for application/octet-stream content type requests
916
+ ...E["content-type"] === "application/octet-stream" && {
917
+ duplex: "half"
918
+ }
919
+ }, ne = [
920
+ ...e.workflows.find((O) => O.workflowId === c)?.["x-security"] || [],
921
+ ...n["x-security"] || []
922
+ ].reverse().find((O) => {
923
+ const Z = us({
924
+ ctx: e,
925
+ security: O,
926
+ operation: y
927
+ });
928
+ return Z?.type === "http" && Z?.scheme === "digest";
929
+ });
930
+ if (ne) {
931
+ const O = await z(P, ee), Z = await O.text(), le = O.headers.get("www-authenticate");
932
+ if (O.status !== 401)
933
+ throw this.initVerboseResponseLogs({
934
+ body: Z,
935
+ method: h,
936
+ host: f.url,
937
+ path: W || "",
938
+ statusCode: O.status,
939
+ responseTime: 0,
940
+ responseSize: void 0
941
+ }), new es(`Digest auth failed, expected 401 status code, but received ${O.status} in the first response`);
942
+ if (!le)
943
+ throw this.initVerboseResponseLogs({
944
+ body: Z,
945
+ method: h,
946
+ host: f.url,
947
+ path: W || "",
948
+ statusCode: O.status,
949
+ responseTime: 0,
950
+ responseSize: void 0
951
+ }), new rs("Digest auth failed, no www-authenticate header received in the first response");
952
+ const { realm: Fe, nonce: hr, opaque: gr, qop: mr, algorithm: $r, cnonce: yr, nc: wr } = xi(le), { username: vr, password: Er } = ne.values, kr = new URL(P).pathname + new URL(P).search, Sr = Mi({
953
+ username: vr,
954
+ password: Er,
955
+ realm: Fe,
956
+ nonce: hr,
957
+ opaque: gr,
958
+ qop: mr,
959
+ algorithm: $r,
960
+ cnonce: yr,
961
+ nc: wr,
962
+ uri: kr,
963
+ method: h.toUpperCase(),
964
+ bodyContent: JSON.stringify(A) || ""
965
+ }), Ie = {
966
+ ...E,
967
+ authorization: Sr
968
+ }, Ce = e.$workflows[c].steps[n.stepId]?.request;
969
+ Ce && (Ce.header = Ie), this.updateVerboseLogs({
970
+ headerParams: ge({
971
+ value: Ie,
972
+ noSecretsMasking: e.noSecretsMasking,
973
+ secretsSet: e.secretsSet
974
+ })
975
+ }), I = await z(P, {
976
+ ...ee,
977
+ headers: Ie
978
+ }), H = Math.ceil(performance.now() - x);
979
+ } else
980
+ I = await z(P, ee), H = Math.ceil(performance.now() - x);
981
+ if (!I)
982
+ throw new Error("Failed to fetch, no result received");
983
+ const [re] = I.headers.get("content-type")?.split(";") || [
984
+ "application/json"
985
+ ];
986
+ Ki(re) ? B = await I.arrayBuffer() : B = await I.text();
987
+ const ue = B ? B instanceof ArrayBuffer ? B : je(re) ? JSON.parse(B) : B : {}, pr = _i({
988
+ statusCode: I.status,
989
+ contentType: re,
990
+ descriptionResponses: y?.responses
991
+ });
992
+ Be(e, pr, ue);
993
+ const dr = Mt(ue);
994
+ for (const O of dr)
995
+ e.secretsSet.add(O);
996
+ const Me = je(re) ? ge({
997
+ value: ue,
998
+ noSecretsMasking: e.noSecretsMasking,
999
+ secretsSet: e.secretsSet
1000
+ }) : ue, Ve = Object.fromEntries(I.headers?.entries() || []), Ke = Mt(Ve);
1001
+ for (const O of Ke)
1002
+ e.secretsSet.add(O);
1003
+ let ie;
1004
+ const _e = I.headers.get("content-length");
1005
+ return _e && !isNaN(+_e) ? ie = +_e : B instanceof ArrayBuffer ? ie = B.byteLength : typeof B == "string" ? ie = new TextEncoder().encode(B).length : ie = void 0, this.initVerboseResponseLogs({
1006
+ body: je(re) ? JSON.stringify(Me) : Me,
1007
+ method: h,
1008
+ host: f.url,
1009
+ path: W || "",
1010
+ statusCode: I.status,
1011
+ responseTime: H,
1012
+ headerParams: ge({
1013
+ value: Ve,
1014
+ noSecretsMasking: e.noSecretsMasking,
1015
+ secretsSet: e.secretsSet
1016
+ }),
1017
+ responseSize: ie
1018
+ }), {
1019
+ body: ue,
1020
+ statusCode: I.status,
1021
+ time: H,
1022
+ header: Object.fromEntries(I.headers?.entries() || []),
1023
+ contentType: re,
1024
+ requestUrl: P,
1025
+ responseSize: ie
1026
+ };
1027
+ }, this.fetch = t.fetch || fetch;
1028
+ }
1029
+ }
1030
+ function Qi() {
1031
+ return {
1032
+ address: {
1033
+ city: () => J.address.city(),
1034
+ country: () => J.address.country(),
1035
+ zipCode: () => J.address.zipCode(),
1036
+ street: () => J.address.street()
1037
+ },
1038
+ date: {
1039
+ past: () => J.date.past(),
1040
+ future: () => J.date.future()
1041
+ },
1042
+ number: {
1043
+ integer: ({ min: a, max: c } = {}) => J.datatype.number({ min: a, max: c, precision: 1 }),
1044
+ float: (a) => J.datatype.float(a)
1045
+ },
1046
+ string: {
1047
+ email: ({ provider: a, domain: c = "com" } = {}) => J.internet.email(void 0, void 0, `${a}.${c}`),
1048
+ userName: () => J.internet.userName(),
1049
+ firstName: () => J.name.firstName(),
1050
+ lastName: () => J.name.lastName(),
1051
+ fullName: () => J.name.fullName(),
1052
+ uuid: () => J.datatype.uuid(),
1053
+ string: ({ length: a } = {}) => J.datatype.string(a)
1054
+ }
1055
+ };
1056
+ }
1057
+ function Kr(r) {
1058
+ return r ? Array.isArray(r) ? r.reduce((t, e) => {
1059
+ const n = Vt(e);
1060
+ return { ...t, ...n };
1061
+ }, {}) : Vt(r) : {};
1062
+ }
1063
+ function Vt(r) {
1064
+ try {
1065
+ const t = JSON.parse(r);
1066
+ if (typeof t == "object" && t !== null)
1067
+ return t;
1068
+ } catch {
1069
+ }
1070
+ if (typeof r == "string") {
1071
+ if (r.includes(","))
1072
+ return r.split(",").reduce((t, e) => {
1073
+ const [n, a] = e.split("=");
1074
+ return n && a && (t[n.trim()] = a.trim()), t;
1075
+ }, {});
1076
+ if (r.includes("=")) {
1077
+ const [t, e] = r.split("=");
1078
+ return { [t.trim()]: e.trim() };
1079
+ }
1080
+ }
1081
+ return {};
1082
+ }
1083
+ function Kt(r, t) {
1084
+ if (!t || Object.keys(t).length === 0)
1085
+ return {};
1086
+ const e = new zo({
1087
+ useDefaults: !0,
1088
+ removeAdditional: "all",
1089
+ coerceTypes: !0,
1090
+ strictTypes: !1
1091
+ });
1092
+ e.addFormat("password", !0), e.addFormat("int32", !0), e.addFormat("int64", !0), e.addFormat("float", !0), e.addFormat("double", !0);
1093
+ const n = e.compile(t), a = { ...r };
1094
+ return n(a), a;
1095
+ }
1096
+ function Gi(r, t) {
1097
+ return /\.(yaml|yml|json)$/i.test(r) && !!t.arazzo;
1098
+ }
1099
+ async function ds(r) {
1100
+ const { filePath: t, base: e, externalRefResolver: n, collectSpecData: a, version: c, skipLint: f = !1 } = r;
1101
+ let l = [];
1102
+ const h = Y.basename(t);
1103
+ if (!h)
1104
+ throw new Error("Invalid file name");
1105
+ const d = await Bo({
1106
+ extends: ["recommended-strict"],
1107
+ arazzo1Rules: {
1108
+ "no-criteria-xpath": "error",
1109
+ "respect-supported-versions": "warn",
1110
+ "no-x-security-scheme-name-without-openapi": "error",
1111
+ "x-security-scheme-required-values": "error",
1112
+ "x-security-scheme-name-reference": "error",
1113
+ "no-x-security-both-scheme-and-scheme-name": "error"
1114
+ }
1115
+ });
1116
+ if (!f && (l = await xo({
1117
+ ref: t,
1118
+ config: d,
1119
+ externalRefResolver: n
1120
+ }), l.length)) {
1121
+ const E = Mo(l);
1122
+ Vo(l, {
1123
+ totals: E,
1124
+ version: c
1125
+ }), Ko(E, r.logger);
1126
+ }
1127
+ const m = await Gt({
1128
+ base: e,
1129
+ ref: t,
1130
+ config: d,
1131
+ dereference: !0,
1132
+ externalRefResolver: n
1133
+ });
1134
+ if (!m)
1135
+ throw new Error(`Could not find source description file '${h}'.`);
1136
+ if (!Gi(h, m.bundle.parsed))
1137
+ throw new Error(`No test files found. File ${h} does not follows naming pattern "*.[yaml | yml | json]" or have not valid "Arazzo" description.`);
1138
+ if (a?.(m.bundle.parsed || {}), l.filter((E) => E.severity === "error").length)
1139
+ throw new Error(`${U("Found errors in Arazzo description")} ${ur(h)}`);
1140
+ return m.bundle.parsed || {};
1141
+ }
1142
+ function Zi(r, t) {
1143
+ let e = r;
1144
+ for (const n of t)
1145
+ if (e && e[n] !== void 0)
1146
+ e = e[n];
1147
+ else
1148
+ return;
1149
+ return e;
1150
+ }
1151
+ function Yi(r) {
1152
+ const t = {};
1153
+ for (const e of r)
1154
+ t[e.stepId] = {};
1155
+ return t;
1156
+ }
1157
+ function ea({ workflows: r, inputs: t, env: e = {} }) {
1158
+ const n = {};
1159
+ for (const a of r) {
1160
+ const c = a.inputs, f = hs({ inputs: t, workflowInputSchema: c, env: e });
1161
+ n[a.workflowId] = {
1162
+ steps: Yi(a.steps || []),
1163
+ inputs: c ? f : void 0,
1164
+ outputs: a.outputs
1165
+ };
1166
+ }
1167
+ return n;
1168
+ }
1169
+ function hs({ inputs: r, workflowInputSchema: t, env: e }) {
1170
+ let n = {}, a = {};
1171
+ return t && (n = Kt(r, t)), t?.properties?.env && (a = Kt(e || {}, t.properties.env)), Object.keys(a).length > 0 ? { ...n, env: a } : n;
1172
+ }
1173
+ const ra = Qi();
1174
+ async function gs(r, t, e) {
1175
+ const n = r?.sourceDescriptions, a = {};
1176
+ n && await Promise.all(n.map(async (f) => {
1177
+ if (f.type === "openapi") {
1178
+ const l = await Yo({
1179
+ descriptionPath: f.url,
1180
+ config: t.config,
1181
+ base: t.filePath,
1182
+ externalRefResolver: t?.externalRefResolver
1183
+ }), { paths: h, servers: d, info: m, security: y, components: E } = l;
1184
+ a[f.name] = {
1185
+ paths: h,
1186
+ servers: d,
1187
+ info: m,
1188
+ security: y,
1189
+ components: E
1190
+ };
1191
+ } else if (f.type === "arazzo") {
1192
+ const { url: l, name: h } = f, d = Y.resolve(Y.dirname(t.filePath), l), m = await ds({
1193
+ filePath: d,
1194
+ version: t?.version,
1195
+ logger: t.logger,
1196
+ externalRefResolver: t?.externalRefResolver,
1197
+ skipLint: t?.skipLint
1198
+ });
1199
+ a[h] = m;
1200
+ }
1201
+ }));
1202
+ for (const f of r.workflows || [])
1203
+ for (const l of f.steps)
1204
+ l.checks = [];
1205
+ const c = {
1206
+ $response: void 0,
1207
+ $request: void 0,
1208
+ $inputs: { env: {} },
1209
+ $faker: ra,
1210
+ $sourceDescriptions: a,
1211
+ $workflows: ea({
1212
+ workflows: r.workflows || [],
1213
+ inputs: Kr(t?.input),
1214
+ env: t.envVariables || {}
1215
+ }),
1216
+ $steps: {},
1217
+ $components: r.components || {},
1218
+ $outputs: {},
1219
+ executedSteps: [],
1220
+ workflows: r.workflows || [],
1221
+ options: t,
1222
+ testDescription: r,
1223
+ info: r.info || Ii,
1224
+ arazzo: r.arazzo || "",
1225
+ sourceDescriptions: r.sourceDescriptions || [],
1226
+ noSecretsMasking: t.noSecretsMasking || !1,
1227
+ secretsSet: /* @__PURE__ */ new Set(),
1228
+ severity: qi(t.severity),
1229
+ apiClient: e
1230
+ };
1231
+ for (const f of r.workflows || [])
1232
+ f.inputs && Be(c, f.inputs, c.$workflows[f.workflowId].inputs);
1233
+ return c;
1234
+ }
1235
+ function Be(r, t, e, n = []) {
1236
+ if (!t || !e)
1237
+ return;
1238
+ const a = Zi(e, n);
1239
+ t.format === "password" && a && r.secretsSet.add(a), t.properties && Object.entries(t.properties).forEach(([c, f]) => {
1240
+ const l = [...n, c];
1241
+ Be(r, f, e, l);
1242
+ });
1243
+ }
1244
+ function ta({ workflows: r, workflowsToRun: t, workflowsToSkip: e, logger: n }) {
1245
+ let a = [];
1246
+ return t && t.length ? a = na(r, t, n) : e && e.length ? a = sa(r, e, n) : a = r, a;
1247
+ }
1248
+ function sa(r, t, e) {
1249
+ const n = r.filter((a) => !t.includes(a.workflowId));
1250
+ return n.length ? (e.output(`${fr(`Following workflows are skipped: ${t.join(", ")}`)}`), e.printNewLine(), n) : (e.output(`${U("All workflows are skipped")}`), e.printNewLine(), []);
1251
+ }
1252
+ function na(r, t, e) {
1253
+ const n = oa(r, t);
1254
+ if (!n.length)
1255
+ throw new Error(`Following workflows don't exist: ${t.join(", ")}`);
1256
+ if (n.length === t.length)
1257
+ return n;
1258
+ {
1259
+ const a = t.filter((c) => !r.find((f) => f.workflowId === c));
1260
+ return e.output(`Following workflows don't exist: ${a.join(", ")}`), n;
1261
+ }
1262
+ }
1263
+ function oa(r, t) {
1264
+ return r.filter((e) => t.includes(e.workflowId));
1265
+ }
1266
+ function ms(r) {
1267
+ return r.type === "regex";
1268
+ }
1269
+ function $s(r) {
1270
+ const t = r?.type;
1271
+ return t === "jsonpath" || typeof t == "object" && t?.type === "jsonpath";
1272
+ }
1273
+ const Ht = [
1274
+ "$url",
1275
+ "$method",
1276
+ "$statusCode",
1277
+ "$request",
1278
+ "$response",
1279
+ "$inputs",
1280
+ "$outputs",
1281
+ "$steps",
1282
+ "$workflows",
1283
+ "$sourceDescriptions",
1284
+ "$components"
1285
+ ];
1286
+ function ia(r) {
1287
+ r.forEach((t) => {
1288
+ const { condition: e } = t;
1289
+ if (ms(t)) {
1290
+ const { context: n } = t, a = /\$[a-zA-Z_]\w*/g, c = n.match(a);
1291
+ if (!c)
1292
+ throw new Error(`"${n}" does not contain any valid context.`);
1293
+ if (c.filter((l) => !Ht.includes(l)).length)
1294
+ throw new Error(`Success criteria context "${n}" is not allowed.`);
1295
+ } else if ($s(t)) {
1296
+ if (!t.context)
1297
+ throw new Error("jsonpath success criteria context is required.");
1298
+ if (!t.condition)
1299
+ throw new Error("jsonpath success criteria condition is required.");
1300
+ } else {
1301
+ const n = /\$[a-zA-Z_]\w*/g, a = e.match(n);
1302
+ if (!a)
1303
+ return;
1304
+ if (a.filter((f) => !Ht.includes(f)).length)
1305
+ throw new Error(`Success criteria condition ${e} is not allowed.`);
1306
+ }
1307
+ });
1308
+ }
1309
+ function lr({ ctx: r, workflowId: t, step: e }) {
1310
+ if (!e || !t)
1311
+ return {
1312
+ $statusCode: void 0,
1313
+ $method: "",
1314
+ $response: void 0,
1315
+ $url: "",
1316
+ $request: void 0,
1317
+ $outputs: r.$outputs,
1318
+ $steps: r.$steps,
1319
+ $workflows: r.$workflows,
1320
+ $inputs: r.$inputs,
1321
+ $sourceDescriptions: r.$sourceDescriptions,
1322
+ $components: r.$components,
1323
+ $faker: r.$faker
1324
+ };
1325
+ const n = r.$workflows[t].steps[e.stepId].request, a = n?.path, c = n?.query, f = n?.body || {}, l = n?.header, h = n?.method, d = e.response?.statusCode, m = e.response?.header || {}, y = e.response?.body || {};
1326
+ return {
1327
+ $statusCode: d,
1328
+ $method: h,
1329
+ $response: {
1330
+ header: m,
1331
+ body: y,
1332
+ path: a,
1333
+ query: c
1334
+ },
1335
+ $url: n && n.url,
1336
+ $request: {
1337
+ header: l,
1338
+ body: f,
1339
+ path: a,
1340
+ query: c
1341
+ },
1342
+ $outputs: r.$outputs,
1343
+ $steps: r.$steps,
1344
+ $workflows: r.$workflows,
1345
+ $inputs: r.$inputs,
1346
+ $sourceDescriptions: r.$sourceDescriptions,
1347
+ $components: r.$components,
1348
+ $faker: r.$faker
1349
+ };
1350
+ }
1351
+ function aa(r, t) {
1352
+ function e() {
1353
+ this.constructor = r;
1354
+ }
1355
+ e.prototype = t.prototype, r.prototype = new e();
1356
+ }
1357
+ function Oe(r, t, e, n) {
1358
+ var a = Error.call(this, r);
1359
+ return Object.setPrototypeOf && Object.setPrototypeOf(a, Oe.prototype), a.expected = t, a.found = e, a.location = n, a.name = "SyntaxError", a;
1360
+ }
1361
+ aa(Oe, Error);
1362
+ function jr(r, t, e) {
1363
+ return e = e || " ", r.length > t ? r : (t -= r.length, e += e.repeat(t), r + e.slice(0, t));
1364
+ }
1365
+ Oe.prototype.format = function(r) {
1366
+ var t = "Error: " + this.message;
1367
+ if (this.location) {
1368
+ var e = null, n;
1369
+ for (n = 0; n < r.length; n++)
1370
+ if (r[n].source === this.location.source) {
1371
+ e = r[n].text.split(/\r\n|\n|\r/g);
1372
+ break;
1373
+ }
1374
+ var a = this.location.start, c = this.location.source && typeof this.location.source.offset == "function" ? this.location.source.offset(a) : a, f = this.location.source + ":" + c.line + ":" + c.column;
1375
+ if (e) {
1376
+ var l = this.location.end, h = jr("", c.line.toString().length, " "), d = e[a.line - 1], m = a.line === l.line ? l.column : d.length + 1, y = m - a.column || 1;
1377
+ t += `
1378
+ --> ` + f + `
1379
+ ` + h + ` |
1380
+ ` + c.line + " | " + d + `
1381
+ ` + h + " | " + jr("", a.column - 1, " ") + jr("", y, "^");
1382
+ } else
1383
+ t += `
1384
+ at ` + f;
1385
+ }
1386
+ return t;
1387
+ };
1388
+ Oe.buildMessage = function(r, t) {
1389
+ var e = {
1390
+ literal: function(d) {
1391
+ return '"' + a(d.text) + '"';
1392
+ },
1393
+ class: function(d) {
1394
+ var m = d.parts.map(function(y) {
1395
+ return Array.isArray(y) ? c(y[0]) + "-" + c(y[1]) : c(y);
1396
+ });
1397
+ return "[" + (d.inverted ? "^" : "") + m.join("") + "]";
1398
+ },
1399
+ any: function() {
1400
+ return "any character";
1401
+ },
1402
+ end: function() {
1403
+ return "end of input";
1404
+ },
1405
+ other: function(d) {
1406
+ return d.description;
1407
+ }
1408
+ };
1409
+ function n(d) {
1410
+ return d.charCodeAt(0).toString(16).toUpperCase();
1411
+ }
1412
+ function a(d) {
1413
+ return d.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(m) {
1414
+ return "\\x0" + n(m);
1415
+ }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(m) {
1416
+ return "\\x" + n(m);
1417
+ });
1418
+ }
1419
+ function c(d) {
1420
+ return d.replace(/\\/g, "\\\\").replace(/\]/g, "\\]").replace(/\^/g, "\\^").replace(/-/g, "\\-").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/[\x00-\x0F]/g, function(m) {
1421
+ return "\\x0" + n(m);
1422
+ }).replace(/[\x10-\x1F\x7F-\x9F]/g, function(m) {
1423
+ return "\\x" + n(m);
1424
+ });
1425
+ }
1426
+ function f(d) {
1427
+ return e[d.type](d);
1428
+ }
1429
+ function l(d) {
1430
+ var m = d.map(f), y, E;
1431
+ if (m.sort(), m.length > 0) {
1432
+ for (y = 1, E = 1; y < m.length; y++)
1433
+ m[y - 1] !== m[y] && (m[E] = m[y], E++);
1434
+ m.length = E;
1435
+ }
1436
+ switch (m.length) {
1437
+ case 1:
1438
+ return m[0];
1439
+ case 2:
1440
+ return m[0] + " or " + m[1];
1441
+ default:
1442
+ return m.slice(0, -1).join(", ") + ", or " + m[m.length - 1];
1443
+ }
1444
+ }
1445
+ function h(d) {
1446
+ return d ? '"' + a(d) + '"' : "end of input";
1447
+ }
1448
+ return "Expected " + l(r) + " but " + h(t) + " found.";
1449
+ };
1450
+ function ca(r, t) {
1451
+ t = t !== void 0 ? t : {};
1452
+ var e = {}, n = t.grammarSource, a = { jsonpath_query: Rr }, c = Rr, f = "$", l = ".", h = "..", d = "[", m = ",", y = "]", E = "*", S = ":", N = "?", T = '"', L = "'", W = "0", D = "-", P = "||", b = "\\", A = "u", K = "&&", F = "d", j = "(", z = ")", x = "!", I = "==", B = "!=", H = "<=", ee = ">=", he = "-0", ne = "true", re = "false", ue = "null", pr = "@", dr = "e", Me = /^[\t-\n\r ]/, Ve = /^[A-Z_a-z\x80-\uD7FF\uE000-\uFFFF]/, Ke = /^[\uD800-\uDBFF]/, ie = /^[\uDC00-\uDFFF]/, _e = /^[0-9]/, O = /^[1-9]/, Z = /^[ -!#-&(-[\]-\uD7FF\uE000-\uFFFF]/, le = /^[\/\\bfnrt]/, Fe = /^[A-CE-F]/i, hr = /^[0-7]/, gr = /^[8-9]/, mr = /^[A-B]/i, $r = /^[C-F]/i, yr = /^[A-F]/i, wr = /^[<>]/, vr = /^[0-9_a-z]/, Er = /^[+\-]/, kr = /^[a-z]/, Sr = _("$", !1), Ie = M([[" ", `
1453
+ `], "\r", " "], !1, !1), Ce = _(".", !1), Ls = _("..", !1), br = _("[", !1), He = _(",", !1), Cr = _("]", !1), Ns = _("*", !1), js = M([["A", "Z"], "_", ["a", "z"], ["€", "퟿"], ["", "￿"]], !1, !1), Jr = M([["\uD800", "\uDBFF"]], !1, !1), Xr = M([["\uDC00", "\uDFFF"]], !1, !1), Qr = _(":", !1), Ws = _("?", !1), qs = M([["0", "9"]], !1, !1), Je = _('"', !1), Xe = _("'", !1), Us = _("0", !1), zs = _("-", !1), Bs = M([["1", "9"]], !1, !1), Gr = _("||", !1), xs = M([[" ", "!"], ["#", "&"], ["(", "["], ["]", "퟿"], ["", "￿"]], !1, !1), Zr = _("\\", !1), Ms = M(["/", "\\", "b", "f", "n", "r", "t"], !1, !1), Yr = _("u", !1), et = _("&&", !1), Vs = M([["A", "C"], ["E", "F"]], !1, !0), Ar = _("D", !0), Ks = M([["0", "7"]], !1, !1), Hs = M([["8", "9"]], !1, !1), Js = M([["A", "B"]], !1, !0), Xs = M([["C", "F"]], !1, !0), rt = _("(", !1), tt = _(")", !1), Qs = M([["A", "F"]], !1, !0), Gs = _("!", !1), Zs = _("==", !1), Ys = _("!=", !1), en = _("<=", !1), rn = _(">=", !1), tn = M(["<", ">"], !1, !1), sn = _("-0", !1), nn = _("true", !1), on = _("false", !1), an = _("null", !1), cn = _("@", !1), fn = M([["0", "9"], "_", ["a", "z"]], !1, !1), un = _("e", !0), ln = M(["+", "-"], !1, !1), pn = M([["a", "z"]], !1, !1), dn = function(s) {
1454
+ return {
1455
+ type: "JsonPathQuery",
1456
+ segments: s
1457
+ };
1458
+ }, st = function(s) {
1459
+ return s;
1460
+ }, hn = function(s) {
1461
+ return s;
1462
+ }, gn = function(s) {
1463
+ return { type: "ChildSegment", node: s };
1464
+ }, mn = function(s) {
1465
+ return { type: "DescendantSegment", node: s };
1466
+ }, nt = function(s, o) {
1467
+ return o;
1468
+ }, $n = function(s, o) {
1469
+ return [s, ...o];
1470
+ }, yn = function(s) {
1471
+ return {
1472
+ type: "BracketedSelection",
1473
+ selectors: s
1474
+ };
1475
+ }, wn = function() {
1476
+ return { type: "WildcardSelector" };
1477
+ }, vn = function(s) {
1478
+ return { type: "MemberNameShorthand", value: s };
1479
+ }, En = function(s) {
1480
+ return { type: "NameSelector", value: s };
1481
+ }, kn = function(s, o, u) {
1482
+ return u;
1483
+ }, Sn = function(s, o, u) {
1484
+ return { start: s, end: o, step: u };
1485
+ }, bn = function(s) {
1486
+ return {
1487
+ type: "SliceSelector",
1488
+ start: s.start === "" ? null : Number.parseInt(s.start.trim(), 10),
1489
+ end: s.end === "" ? null : Number.parseInt(s.end.trim(), 10),
1490
+ step: s.step === "" || s.step === null ? null : Number.parseInt(s.step.trim(), 10)
1491
+ };
1492
+ }, Cn = function(s) {
1493
+ return { type: "IndexSelector", value: Number.parseInt(s, 10) };
1494
+ }, An = function(s) {
1495
+ return { type: "FilterSelector", value: s };
1496
+ }, Rn = function(s) {
1497
+ return s;
1498
+ }, On = function(s) {
1499
+ return s;
1500
+ }, Tn = function(s) {
1501
+ return s.join("");
1502
+ }, Pn = function() {
1503
+ return '"';
1504
+ }, _n = function(s) {
1505
+ switch (s) {
1506
+ case "b":
1507
+ return "\b";
1508
+ case "f":
1509
+ return "\f";
1510
+ case "n":
1511
+ return `
1512
+ `;
1513
+ case "r":
1514
+ return "\r";
1515
+ case "t":
1516
+ return " ";
1517
+ case "/":
1518
+ return "/";
1519
+ case "\\":
1520
+ return "\\";
1521
+ default:
1522
+ return s.slice(1);
1523
+ }
1524
+ }, Fn = function() {
1525
+ return "'";
1526
+ }, In = function(s) {
1527
+ switch (s) {
1528
+ case "b":
1529
+ return "\b";
1530
+ case "f":
1531
+ return "\f";
1532
+ case "n":
1533
+ return `
1534
+ `;
1535
+ case "r":
1536
+ return "\r";
1537
+ case "t":
1538
+ return " ";
1539
+ case "/":
1540
+ return "/";
1541
+ case "\\":
1542
+ return "\\";
1543
+ default:
1544
+ return s.slice(1);
1545
+ }
1546
+ }, ot = function(s, o) {
1547
+ return o;
1548
+ }, Dn = function(s, o) {
1549
+ return o.length === 0 ? s : {
1550
+ type: "LogicalOrExpr",
1551
+ left: s,
1552
+ right: o.length === 1 ? o[0] : o.slice(1).reduce((u, p) => ({
1553
+ type: "LogicalOrExpr",
1554
+ left: u,
1555
+ right: p
1556
+ }), o[0])
1557
+ };
1558
+ }, it = function(s, o) {
1559
+ return o;
1560
+ }, Ln = function(s, o) {
1561
+ return [s, ...o];
1562
+ }, Nn = function(s) {
1563
+ return s.length === 1 ? s[0] : {
1564
+ type: "LogicalAndExpr",
1565
+ left: s[0],
1566
+ right: s.length === 2 ? s[1] : s.slice(2).reduce((o, u) => ({
1567
+ type: "LogicalOrExpr",
1568
+ left: o,
1569
+ right: u
1570
+ }), s[1])
1571
+ };
1572
+ }, jn = function() {
1573
+ return String.fromCharCode(Number.parseInt(no(), 16));
1574
+ }, Wn = function(s, o) {
1575
+ return String.fromCharCode(Number.parseInt(s, 16)) + String.fromCharCode(Number.parseInt(o, 16));
1576
+ }, qn = function(s) {
1577
+ return s;
1578
+ }, Un = function(s, o) {
1579
+ return s !== null ? {
1580
+ type: "LogicalNotExpr",
1581
+ expression: o
1582
+ } : o;
1583
+ }, zn = function(s, o, u) {
1584
+ return {
1585
+ type: "ComparisonExpr",
1586
+ left: s,
1587
+ op: o,
1588
+ right: u
1589
+ };
1590
+ }, Bn = function(s, o) {
1591
+ return s !== null ? {
1592
+ type: "LogicalNotExpr",
1593
+ expression: {
1594
+ type: "TestExpr",
1595
+ expression: o
1596
+ }
1597
+ } : {
1598
+ type: "TestExpr",
1599
+ expression: o
1600
+ };
1601
+ }, xn = function(s) {
1602
+ return { type: "FilterQuery", value: s };
1603
+ }, at = function(s, o, u) {
1604
+ return u;
1605
+ }, Mn = function(s, o, u) {
1606
+ return [o, ...u];
1607
+ }, Vn = function(s, o) {
1608
+ return {
1609
+ type: "FunctionExpr",
1610
+ name: s,
1611
+ arguments: o
1612
+ };
1613
+ }, Kn = function(s) {
1614
+ return { type: "Literal", value: s };
1615
+ }, Hn = function(s) {
1616
+ return { type: "RelQuery", segments: s };
1617
+ }, Jn = function(s) {
1618
+ return Number(s);
1619
+ }, Xn = function() {
1620
+ return !0;
1621
+ }, Qn = function() {
1622
+ return !1;
1623
+ }, Gn = function() {
1624
+ return null;
1625
+ }, Zn = function(s) {
1626
+ return { type: "RelSingularQuery", segments: s };
1627
+ }, Yn = function(s) {
1628
+ return { type: "AbsSingularQuery", segments: s };
1629
+ }, ct = function(s) {
1630
+ return {
1631
+ type: "SingularQuerySegment",
1632
+ node: s
1633
+ };
1634
+ }, eo = function(s) {
1635
+ return s;
1636
+ }, ro = function(s) {
1637
+ return s;
1638
+ }, to = function(s) {
1639
+ return s;
1640
+ }, so = function(s) {
1641
+ return { type: "IndexSelector", selector: s };
1642
+ }, i = t.peg$currPos | 0, k = i, Ae = [{ line: 1, column: 1 }], te = i, Qe = t.peg$maxFailExpected || [], v = t.peg$silentFails | 0, De;
1643
+ if (t.startRule) {
1644
+ if (!(t.startRule in a))
1645
+ throw new Error(`Can't start parsing from rule "` + t.startRule + '".');
1646
+ c = a[t.startRule];
1647
+ }
1648
+ function no() {
1649
+ return r.substring(k, i);
1650
+ }
1651
+ function _(s, o) {
1652
+ return { type: "literal", text: s, ignoreCase: o };
1653
+ }
1654
+ function M(s, o, u) {
1655
+ return { type: "class", parts: s, inverted: o, ignoreCase: u };
1656
+ }
1657
+ function oo() {
1658
+ return { type: "end" };
1659
+ }
1660
+ function ft(s) {
1661
+ var o = Ae[s], u;
1662
+ if (o)
1663
+ return o;
1664
+ if (s >= Ae.length)
1665
+ u = Ae.length - 1;
1666
+ else
1667
+ for (u = s; !Ae[--u]; )
1668
+ ;
1669
+ for (o = Ae[u], o = {
1670
+ line: o.line,
1671
+ column: o.column
1672
+ }; u < s; )
1673
+ r.charCodeAt(u) === 10 ? (o.line++, o.column = 1) : o.column++, u++;
1674
+ return Ae[s] = o, o;
1675
+ }
1676
+ function ut(s, o, u) {
1677
+ var p = ft(s), g = ft(o), $ = {
1678
+ source: n,
1679
+ start: {
1680
+ offset: s,
1681
+ line: p.line,
1682
+ column: p.column
1683
+ },
1684
+ end: {
1685
+ offset: o,
1686
+ line: g.line,
1687
+ column: g.column
1688
+ }
1689
+ };
1690
+ return $;
1691
+ }
1692
+ function w(s) {
1693
+ i < te || (i > te && (te = i, Qe = []), Qe.push(s));
1694
+ }
1695
+ function io(s, o, u) {
1696
+ return new Oe(Oe.buildMessage(s, o), s, o, u);
1697
+ }
1698
+ function Rr() {
1699
+ var s, o, u;
1700
+ return s = i, o = lt(), o !== e ? (u = pt(), k = s, s = dn(u)) : (i = s, s = e), s;
1701
+ }
1702
+ function lt() {
1703
+ var s;
1704
+ return r.charCodeAt(i) === 36 ? (s = f, i++) : (s = e, v === 0 && w(Sr)), s;
1705
+ }
1706
+ function pt() {
1707
+ var s, o, u;
1708
+ for (s = [], o = i, R(), u = dt(), u !== e ? (k = o, o = st(u)) : (i = o, o = e); o !== e; )
1709
+ s.push(o), o = i, R(), u = dt(), u !== e ? (k = o, o = st(u)) : (i = o, o = e);
1710
+ return s;
1711
+ }
1712
+ function R() {
1713
+ var s, o;
1714
+ for (s = [], o = ht(); o !== e; )
1715
+ s.push(o), o = ht();
1716
+ return s;
1717
+ }
1718
+ function dt() {
1719
+ var s;
1720
+ return s = ao(), s === e && (s = co()), s;
1721
+ }
1722
+ function ht() {
1723
+ var s;
1724
+ return s = r.charAt(i), Me.test(s) ? i++ : (s = e, v === 0 && w(Ie)), s;
1725
+ }
1726
+ function ao() {
1727
+ var s, o, u, p;
1728
+ return s = i, o = gt(), o === e && (o = i, r.charCodeAt(i) === 46 ? (u = l, i++) : (u = e, v === 0 && w(Ce)), u !== e ? (p = Or(), p === e && (p = Tr()), p !== e ? (k = o, o = hn(p)) : (i = o, o = e)) : (i = o, o = e)), o !== e && (k = s, o = gn(o)), s = o, s;
1729
+ }
1730
+ function co() {
1731
+ var s, o, u;
1732
+ return s = i, r.substr(i, 2) === h ? (o = h, i += 2) : (o = e, v === 0 && w(Ls)), o !== e ? (u = gt(), u === e && (u = Or(), u === e && (u = Tr())), u !== e ? (k = s, s = mn(u)) : (i = s, s = e)) : (i = s, s = e), s;
1733
+ }
1734
+ function gt() {
1735
+ var s, o, u, p, g, $, C, q;
1736
+ if (s = i, r.charCodeAt(i) === 91 ? (o = d, i++) : (o = e, v === 0 && w(br)), o !== e) {
1737
+ if (u = i, R(), p = Pr(), p !== e) {
1738
+ for (g = [], $ = i, R(), r.charCodeAt(i) === 44 ? (C = m, i++) : (C = e, v === 0 && w(He)), C !== e ? (R(), q = Pr(), q !== e ? (k = $, $ = nt(p, q)) : (i = $, $ = e)) : (i = $, $ = e); $ !== e; )
1739
+ g.push($), $ = i, R(), r.charCodeAt(i) === 44 ? (C = m, i++) : (C = e, v === 0 && w(He)), C !== e ? (R(), q = Pr(), q !== e ? (k = $, $ = nt(p, q)) : (i = $, $ = e)) : (i = $, $ = e);
1740
+ k = u, u = $n(p, g);
1741
+ } else
1742
+ i = u, u = e;
1743
+ u !== e ? (R(), r.charCodeAt(i) === 93 ? (p = y, i++) : (p = e, v === 0 && w(Cr)), p !== e ? (k = s, s = yn(u)) : (i = s, s = e)) : (i = s, s = e);
1744
+ } else
1745
+ i = s, s = e;
1746
+ return s;
1747
+ }
1748
+ function Or() {
1749
+ var s, o;
1750
+ return s = i, r.charCodeAt(i) === 42 ? (o = E, i++) : (o = e, v === 0 && w(Ns)), o !== e && (k = s, o = wn()), s = o, s;
1751
+ }
1752
+ function Tr() {
1753
+ var s, o, u, p, g, $;
1754
+ if (s = i, o = i, u = i, p = mt(), p !== e) {
1755
+ for (g = [], $ = $t(); $ !== e; )
1756
+ g.push($), $ = $t();
1757
+ p = [p, g], u = p;
1758
+ } else
1759
+ i = u, u = e;
1760
+ return u !== e ? o = r.substring(o, i) : o = u, o !== e && (k = s, o = vn(o)), s = o, s;
1761
+ }
1762
+ function Pr() {
1763
+ var s;
1764
+ return s = yt(), s === e && (s = Or(), s === e && (s = fo(), s === e && (s = wt(), s === e && (s = uo())))), s;
1765
+ }
1766
+ function mt() {
1767
+ var s, o, u;
1768
+ return s = r.charAt(i), Ve.test(s) ? i++ : (s = e, v === 0 && w(js)), s === e && (s = i, o = r.charAt(i), Ke.test(o) ? i++ : (o = e, v === 0 && w(Jr)), o !== e ? (u = r.charAt(i), ie.test(u) ? i++ : (u = e, v === 0 && w(Xr)), u !== e ? (o = [o, u], s = o) : (i = s, s = e)) : (i = s, s = e)), s;
1769
+ }
1770
+ function $t() {
1771
+ var s;
1772
+ return s = mt(), s === e && (s = ae()), s;
1773
+ }
1774
+ function yt() {
1775
+ var s, o;
1776
+ return s = i, o = vt(), o !== e && (k = s, o = En(o)), s = o, s;
1777
+ }
1778
+ function fo() {
1779
+ var s, o, u, p, g, $, C, q, G;
1780
+ return s = i, o = i, u = i, p = i, g = Le(), g !== e ? ($ = R(), g = [g, $], p = g) : (i = p, p = e), p === e && (p = null), u = r.substring(u, i), r.charCodeAt(i) === 58 ? (p = S, i++) : (p = e, v === 0 && w(Qr)), p !== e ? (g = R(), $ = i, C = i, q = Le(), q !== e ? (G = R(), q = [q, G], C = q) : (i = C, C = e), C === e && (C = null), $ = r.substring($, i), C = i, r.charCodeAt(i) === 58 ? (q = S, i++) : (q = e, v === 0 && w(Qr)), q !== e ? (G = i, R(), Le(), G = r.substring(G, i), k = C, C = kn(u, $, G)) : (i = C, C = e), C === e && (C = null), k = o, o = Sn(u, $, C)) : (i = o, o = e), o !== e && (k = s, o = bn(o)), s = o, s;
1781
+ }
1782
+ function wt() {
1783
+ var s, o, u;
1784
+ return s = i, o = i, u = Le(), u !== e ? o = r.substring(o, i) : o = u, o !== e && (k = s, o = Cn(o)), s = o, s;
1785
+ }
1786
+ function uo() {
1787
+ var s, o, u;
1788
+ return s = i, r.charCodeAt(i) === 63 ? (o = N, i++) : (o = e, v === 0 && w(Ws)), o !== e ? (R(), u = _r(), u !== e ? (k = s, s = An(u)) : (i = s, s = e)) : (i = s, s = e), s;
1789
+ }
1790
+ function ae() {
1791
+ var s;
1792
+ return s = r.charAt(i), _e.test(s) ? i++ : (s = e, v === 0 && w(qs)), s;
1793
+ }
1794
+ function vt() {
1795
+ var s, o, u, p, g;
1796
+ if (s = i, o = i, r.charCodeAt(i) === 34 ? (u = T, i++) : (u = e, v === 0 && w(Je)), u !== e) {
1797
+ for (p = [], g = Et(); g !== e; )
1798
+ p.push(g), g = Et();
1799
+ r.charCodeAt(i) === 34 ? (g = T, i++) : (g = e, v === 0 && w(Je)), g !== e ? (k = o, o = Rn(p)) : (i = o, o = e);
1800
+ } else
1801
+ i = o, o = e;
1802
+ if (o === e)
1803
+ if (o = i, r.charCodeAt(i) === 39 ? (u = L, i++) : (u = e, v === 0 && w(Xe)), u !== e) {
1804
+ for (p = [], g = kt(); g !== e; )
1805
+ p.push(g), g = kt();
1806
+ r.charCodeAt(i) === 39 ? (g = L, i++) : (g = e, v === 0 && w(Xe)), g !== e ? (k = o, o = On(p)) : (i = o, o = e);
1807
+ } else
1808
+ i = o, o = e;
1809
+ return o !== e && (k = s, o = Tn(o)), s = o, s;
1810
+ }
1811
+ function Le() {
1812
+ var s, o, u, p, g;
1813
+ if (r.charCodeAt(i) === 48 ? (s = W, i++) : (s = e, v === 0 && w(Us)), s === e)
1814
+ if (s = i, r.charCodeAt(i) === 45 ? (o = D, i++) : (o = e, v === 0 && w(zs)), o === e && (o = null), u = lo(), u !== e) {
1815
+ for (p = [], g = ae(); g !== e; )
1816
+ p.push(g), g = ae();
1817
+ o = [o, u, p], s = o;
1818
+ } else
1819
+ i = s, s = e;
1820
+ return s;
1821
+ }
1822
+ function Et() {
1823
+ var s, o, u;
1824
+ return s = i, o = St(), o !== e ? s = r.substring(s, i) : s = o, s === e && (r.charCodeAt(i) === 39 ? (s = L, i++) : (s = e, v === 0 && w(Xe)), s === e && (s = i, o = Ge(), o !== e ? (r.charCodeAt(i) === 34 ? (u = T, i++) : (u = e, v === 0 && w(Je)), u !== e ? (k = s, s = Pn()) : (i = s, s = e)) : (i = s, s = e), s === e && (s = i, o = Ge(), o !== e ? (u = bt(), u !== e ? (k = s, s = _n(u)) : (i = s, s = e)) : (i = s, s = e)))), s;
1825
+ }
1826
+ function kt() {
1827
+ var s, o, u;
1828
+ return s = i, o = St(), o !== e ? s = r.substring(s, i) : s = o, s === e && (r.charCodeAt(i) === 34 ? (s = T, i++) : (s = e, v === 0 && w(Je)), s === e && (s = i, o = Ge(), o !== e ? (r.charCodeAt(i) === 39 ? (u = L, i++) : (u = e, v === 0 && w(Xe)), u !== e ? (k = s, s = Fn()) : (i = s, s = e)) : (i = s, s = e), s === e && (s = i, o = Ge(), o !== e ? (u = bt(), u !== e ? (k = s, s = In(u)) : (i = s, s = e)) : (i = s, s = e)))), s;
1829
+ }
1830
+ function lo() {
1831
+ var s;
1832
+ return s = r.charAt(i), O.test(s) ? i++ : (s = e, v === 0 && w(Bs)), s;
1833
+ }
1834
+ function _r() {
1835
+ var s, o, u, p, g, $;
1836
+ if (s = i, o = Fr(), o !== e) {
1837
+ for (u = [], p = i, R(), r.substr(i, 2) === P ? (g = P, i += 2) : (g = e, v === 0 && w(Gr)), g !== e ? (R(), $ = Fr(), $ !== e ? (k = p, p = ot(o, $)) : (i = p, p = e)) : (i = p, p = e); p !== e; )
1838
+ u.push(p), p = i, R(), r.substr(i, 2) === P ? (g = P, i += 2) : (g = e, v === 0 && w(Gr)), g !== e ? (R(), $ = Fr(), $ !== e ? (k = p, p = ot(o, $)) : (i = p, p = e)) : (i = p, p = e);
1839
+ k = s, s = Dn(o, u);
1840
+ } else
1841
+ i = s, s = e;
1842
+ return s;
1843
+ }
1844
+ function St() {
1845
+ var s, o, u;
1846
+ return s = r.charAt(i), Z.test(s) ? i++ : (s = e, v === 0 && w(xs)), s === e && (s = i, o = r.charAt(i), Ke.test(o) ? i++ : (o = e, v === 0 && w(Jr)), o !== e ? (u = r.charAt(i), ie.test(u) ? i++ : (u = e, v === 0 && w(Xr)), u !== e ? (o = [o, u], s = o) : (i = s, s = e)) : (i = s, s = e)), s;
1847
+ }
1848
+ function Ge() {
1849
+ var s;
1850
+ return r.charCodeAt(i) === 92 ? (s = b, i++) : (s = e, v === 0 && w(Zr)), s;
1851
+ }
1852
+ function bt() {
1853
+ var s, o, u;
1854
+ return s = r.charAt(i), le.test(s) ? i++ : (s = e, v === 0 && w(Ms)), s === e && (s = i, r.charCodeAt(i) === 117 ? (o = A, i++) : (o = e, v === 0 && w(Yr)), o !== e ? (u = po(), u !== e ? (o = [o, u], s = o) : (i = s, s = e)) : (i = s, s = e)), s;
1855
+ }
1856
+ function Fr() {
1857
+ var s, o, u, p, g, $, C;
1858
+ if (s = i, o = i, u = Ir(), u !== e) {
1859
+ for (p = [], g = i, R(), r.substr(i, 2) === K ? ($ = K, i += 2) : ($ = e, v === 0 && w(et)), $ !== e ? (R(), C = Ir(), C !== e ? (k = g, g = it(u, C)) : (i = g, g = e)) : (i = g, g = e); g !== e; )
1860
+ p.push(g), g = i, R(), r.substr(i, 2) === K ? ($ = K, i += 2) : ($ = e, v === 0 && w(et)), $ !== e ? (R(), C = Ir(), C !== e ? (k = g, g = it(u, C)) : (i = g, g = e)) : (i = g, g = e);
1861
+ k = o, o = Ln(u, p);
1862
+ } else
1863
+ i = o, o = e;
1864
+ return o !== e && (k = s, o = Nn(o)), s = o, s;
1865
+ }
1866
+ function po() {
1867
+ var s, o, u, p, g, $, C;
1868
+ return s = i, o = i, u = ho(), u !== e && (k = o, u = jn()), o = u, o === e && (o = i, u = i, p = go(), p !== e ? u = r.substring(u, i) : u = p, u !== e ? (r.charCodeAt(i) === 92 ? (p = b, i++) : (p = e, v === 0 && w(Zr)), p !== e ? (r.charCodeAt(i) === 117 ? (g = A, i++) : (g = e, v === 0 && w(Yr)), g !== e ? ($ = i, C = mo(), C !== e ? $ = r.substring($, i) : $ = C, $ !== e ? (k = o, o = Wn(u, $)) : (i = o, o = e)) : (i = o, o = e)) : (i = o, o = e)) : (i = o, o = e)), o !== e && (k = s, o = qn(o)), s = o, s;
1869
+ }
1870
+ function Ir() {
1871
+ var s;
1872
+ return s = $o(), s === e && (s = yo(), s === e && (s = wo())), s;
1873
+ }
1874
+ function ho() {
1875
+ var s, o, u, p, g, $;
1876
+ if (s = i, o = ae(), o === e && (o = r.charAt(i), Fe.test(o) ? i++ : (o = e, v === 0 && w(Vs))), o !== e) {
1877
+ for (u = i, p = [], g = pe(); g !== e; )
1878
+ p.push(g), p.length >= 3 ? g = e : g = pe();
1879
+ p.length < 3 ? (i = u, u = e) : u = p, u !== e ? (o = [o, u], s = o) : (i = s, s = e);
1880
+ } else
1881
+ i = s, s = e;
1882
+ if (s === e)
1883
+ if (s = i, o = r.charAt(i), o.toLowerCase() === F ? i++ : (o = e, v === 0 && w(Ar)), o !== e)
1884
+ if (u = r.charAt(i), hr.test(u) ? i++ : (u = e, v === 0 && w(Ks)), u !== e) {
1885
+ for (p = i, g = [], $ = pe(); $ !== e; )
1886
+ g.push($), g.length >= 2 ? $ = e : $ = pe();
1887
+ g.length < 2 ? (i = p, p = e) : p = g, p !== e ? (o = [o, u, p], s = o) : (i = s, s = e);
1888
+ } else
1889
+ i = s, s = e;
1890
+ else
1891
+ i = s, s = e;
1892
+ return s;
1893
+ }
1894
+ function go() {
1895
+ var s, o, u, p, g, $;
1896
+ if (s = i, o = r.charAt(i), o.toLowerCase() === F ? i++ : (o = e, v === 0 && w(Ar)), o !== e)
1897
+ if (u = r.charAt(i), gr.test(u) ? i++ : (u = e, v === 0 && w(Hs)), u === e && (u = r.charAt(i), mr.test(u) ? i++ : (u = e, v === 0 && w(Js))), u !== e) {
1898
+ for (p = i, g = [], $ = pe(); $ !== e; )
1899
+ g.push($), g.length >= 2 ? $ = e : $ = pe();
1900
+ g.length < 2 ? (i = p, p = e) : p = g, p !== e ? (o = [o, u, p], s = o) : (i = s, s = e);
1901
+ } else
1902
+ i = s, s = e;
1903
+ else
1904
+ i = s, s = e;
1905
+ return s;
1906
+ }
1907
+ function mo() {
1908
+ var s, o, u, p, g, $;
1909
+ if (s = i, o = r.charAt(i), o.toLowerCase() === F ? i++ : (o = e, v === 0 && w(Ar)), o !== e)
1910
+ if (u = r.charAt(i), $r.test(u) ? i++ : (u = e, v === 0 && w(Xs)), u !== e) {
1911
+ for (p = i, g = [], $ = pe(); $ !== e; )
1912
+ g.push($), g.length >= 2 ? $ = e : $ = pe();
1913
+ g.length < 2 ? (i = p, p = e) : p = g, p !== e ? (o = [o, u, p], s = o) : (i = s, s = e);
1914
+ } else
1915
+ i = s, s = e;
1916
+ else
1917
+ i = s, s = e;
1918
+ return s;
1919
+ }
1920
+ function $o() {
1921
+ var s, o, u, p, g, $;
1922
+ return s = i, o = i, u = Ct(), u !== e ? (p = R(), u = [u, p], o = u) : (i = o, o = e), o === e && (o = null), r.charCodeAt(i) === 40 ? (u = j, i++) : (u = e, v === 0 && w(rt)), u !== e ? (p = R(), g = _r(), g !== e ? (R(), r.charCodeAt(i) === 41 ? ($ = z, i++) : ($ = e, v === 0 && w(tt)), $ !== e ? (k = s, s = Un(o, g)) : (i = s, s = e)) : (i = s, s = e)) : (i = s, s = e), s;
1923
+ }
1924
+ function yo() {
1925
+ var s, o, u, p;
1926
+ return s = i, o = At(), o !== e ? (R(), u = vo(), u !== e ? (R(), p = At(), p !== e ? (k = s, s = zn(o, u, p)) : (i = s, s = e)) : (i = s, s = e)) : (i = s, s = e), s;
1927
+ }
1928
+ function wo() {
1929
+ var s, o, u, p;
1930
+ return s = i, o = i, u = Ct(), u !== e ? (p = R(), u = [u, p], o = u) : (i = o, o = e), o === e && (o = null), u = Rt(), u === e && (u = Dr()), u !== e ? (k = s, s = Bn(o, u)) : (i = s, s = e), s;
1931
+ }
1932
+ function pe() {
1933
+ var s;
1934
+ return s = ae(), s === e && (s = r.charAt(i), yr.test(s) ? i++ : (s = e, v === 0 && w(Qs))), s;
1935
+ }
1936
+ function Ct() {
1937
+ var s;
1938
+ return r.charCodeAt(i) === 33 ? (s = x, i++) : (s = e, v === 0 && w(Gs)), s;
1939
+ }
1940
+ function At() {
1941
+ var s;
1942
+ return s = Ot(), s === e && (s = Eo(), s === e && (s = Dr())), s;
1943
+ }
1944
+ function vo() {
1945
+ var s;
1946
+ return r.substr(i, 2) === I ? (s = I, i += 2) : (s = e, v === 0 && w(Zs)), s === e && (r.substr(i, 2) === B ? (s = B, i += 2) : (s = e, v === 0 && w(Ys)), s === e && (r.substr(i, 2) === H ? (s = H, i += 2) : (s = e, v === 0 && w(en)), s === e && (r.substr(i, 2) === ee ? (s = ee, i += 2) : (s = e, v === 0 && w(rn)), s === e && (s = r.charAt(i), wr.test(s) ? i++ : (s = e, v === 0 && w(tn)))))), s;
1947
+ }
1948
+ function Rt() {
1949
+ var s, o;
1950
+ return s = i, o = ko(), o === e && (o = Rr()), o !== e && (k = s, o = xn(o)), s = o, s;
1951
+ }
1952
+ function Dr() {
1953
+ var s, o, u, p, g, $, C, q, G;
1954
+ if (s = i, o = So(), o !== e)
1955
+ if (r.charCodeAt(i) === 40 ? (u = j, i++) : (u = e, v === 0 && w(rt)), u !== e) {
1956
+ if (R(), p = i, g = Lr(), g !== e) {
1957
+ for ($ = [], C = i, R(), r.charCodeAt(i) === 44 ? (q = m, i++) : (q = e, v === 0 && w(He)), q !== e ? (R(), G = Lr(), G !== e ? (k = C, C = at(o, g, G)) : (i = C, C = e)) : (i = C, C = e); C !== e; )
1958
+ $.push(C), C = i, R(), r.charCodeAt(i) === 44 ? (q = m, i++) : (q = e, v === 0 && w(He)), q !== e ? (R(), G = Lr(), G !== e ? (k = C, C = at(o, g, G)) : (i = C, C = e)) : (i = C, C = e);
1959
+ k = p, p = Mn(o, g, $);
1960
+ } else
1961
+ i = p, p = e;
1962
+ p === e && (p = null), g = R(), r.charCodeAt(i) === 41 ? ($ = z, i++) : ($ = e, v === 0 && w(tt)), $ !== e ? (k = s, s = Vn(o, p)) : (i = s, s = e);
1963
+ } else
1964
+ i = s, s = e;
1965
+ else
1966
+ i = s, s = e;
1967
+ return s;
1968
+ }
1969
+ function Ot() {
1970
+ var s, o;
1971
+ return s = i, o = bo(), o === e && (o = vt(), o === e && (o = Co(), o === e && (o = Ao(), o === e && (o = Ro())))), o !== e && (k = s, o = Kn(o)), s = o, s;
1972
+ }
1973
+ function Eo() {
1974
+ var s;
1975
+ return s = Oo(), s === e && (s = To()), s;
1976
+ }
1977
+ function ko() {
1978
+ var s, o, u;
1979
+ return s = i, o = Tt(), o !== e ? (u = pt(), u !== e ? (k = s, s = Hn(u)) : (i = s, s = e)) : (i = s, s = e), s;
1980
+ }
1981
+ function So() {
1982
+ var s, o, u, p, g;
1983
+ if (s = i, o = i, u = Fo(), u !== e) {
1984
+ for (p = [], g = Pt(); g !== e; )
1985
+ p.push(g), g = Pt();
1986
+ u = [u, p], o = u;
1987
+ } else
1988
+ i = o, o = e;
1989
+ return o !== e ? s = r.substring(s, i) : s = o, s;
1990
+ }
1991
+ function Lr() {
1992
+ var s;
1993
+ return s = Ot(), s === e && (s = Rt(), s === e && (s = Dr(), s === e && (s = _r()))), s;
1994
+ }
1995
+ function bo() {
1996
+ var s, o, u, p, g, $;
1997
+ return s = i, o = i, u = i, p = Le(), p === e && (r.substr(i, 2) === he ? (p = he, i += 2) : (p = e, v === 0 && w(sn))), p !== e ? (g = Po(), g === e && (g = null), $ = _o(), $ === e && ($ = null), p = [p, g, $], u = p) : (i = u, u = e), u !== e ? o = r.substring(o, i) : o = u, o !== e && (k = s, o = Jn(o)), s = o, s;
1998
+ }
1999
+ function Co() {
2000
+ var s, o;
2001
+ return s = i, r.substr(i, 4) === ne ? (o = ne, i += 4) : (o = e, v === 0 && w(nn)), o !== e && (k = s, o = Xn()), s = o, s;
2002
+ }
2003
+ function Ao() {
2004
+ var s, o;
2005
+ return s = i, r.substr(i, 5) === re ? (o = re, i += 5) : (o = e, v === 0 && w(on)), o !== e && (k = s, o = Qn()), s = o, s;
2006
+ }
2007
+ function Ro() {
2008
+ var s, o;
2009
+ return s = i, r.substr(i, 4) === ue ? (o = ue, i += 4) : (o = e, v === 0 && w(an)), o !== e && (k = s, o = Gn()), s = o, s;
2010
+ }
2011
+ function Oo() {
2012
+ var s, o, u;
2013
+ return s = i, o = Tt(), o !== e ? (u = _t(), k = s, s = Zn(u)) : (i = s, s = e), s;
2014
+ }
2015
+ function To() {
2016
+ var s, o, u;
2017
+ return s = i, o = lt(), o !== e ? (u = _t(), k = s, s = Yn(u)) : (i = s, s = e), s;
2018
+ }
2019
+ function Tt() {
2020
+ var s;
2021
+ return r.charCodeAt(i) === 64 ? (s = pr, i++) : (s = e, v === 0 && w(cn)), s;
2022
+ }
2023
+ function Pt() {
2024
+ var s;
2025
+ return s = r.charAt(i), vr.test(s) ? i++ : (s = e, v === 0 && w(fn)), s;
2026
+ }
2027
+ function Po() {
2028
+ var s, o, u, p;
2029
+ if (s = i, r.charCodeAt(i) === 46 ? (o = l, i++) : (o = e, v === 0 && w(Ce)), o !== e) {
2030
+ if (u = [], p = ae(), p !== e)
2031
+ for (; p !== e; )
2032
+ u.push(p), p = ae();
2033
+ else
2034
+ u = e;
2035
+ u !== e ? (o = [o, u], s = o) : (i = s, s = e);
2036
+ } else
2037
+ i = s, s = e;
2038
+ return s;
2039
+ }
2040
+ function _o() {
2041
+ var s, o, u, p, g;
2042
+ if (s = i, o = r.charAt(i), o.toLowerCase() === dr ? i++ : (o = e, v === 0 && w(un)), o !== e) {
2043
+ if (u = r.charAt(i), Er.test(u) ? i++ : (u = e, v === 0 && w(ln)), u === e && (u = null), p = [], g = ae(), g !== e)
2044
+ for (; g !== e; )
2045
+ p.push(g), g = ae();
2046
+ else
2047
+ p = e;
2048
+ p !== e ? (o = [o, u, p], s = o) : (i = s, s = e);
2049
+ } else
2050
+ i = s, s = e;
2051
+ return s;
2052
+ }
2053
+ function _t() {
2054
+ var s, o, u, p;
2055
+ for (s = i, o = [], u = i, R(), p = Ft(), p === e && (p = It()), p !== e ? (k = u, u = ct(p)) : (i = u, u = e); u !== e; )
2056
+ o.push(u), u = i, R(), p = Ft(), p === e && (p = It()), p !== e ? (k = u, u = ct(p)) : (i = u, u = e);
2057
+ return k = s, o = eo(o), s = o, s;
2058
+ }
2059
+ function Fo() {
2060
+ var s;
2061
+ return s = r.charAt(i), kr.test(s) ? i++ : (s = e, v === 0 && w(pn)), s;
2062
+ }
2063
+ function Ft() {
2064
+ var s, o, u, p;
2065
+ return s = i, r.charCodeAt(i) === 91 ? (o = d, i++) : (o = e, v === 0 && w(br)), o !== e ? (u = yt(), u !== e ? (r.charCodeAt(i) === 93 ? (p = y, i++) : (p = e, v === 0 && w(Cr)), p !== e ? (k = s, s = ro(u)) : (i = s, s = e)) : (i = s, s = e)) : (i = s, s = e), s === e && (s = i, r.charCodeAt(i) === 46 ? (o = l, i++) : (o = e, v === 0 && w(Ce)), o !== e ? (u = Tr(), u !== e ? (k = s, s = to(u)) : (i = s, s = e)) : (i = s, s = e)), s;
2066
+ }
2067
+ function It() {
2068
+ var s, o, u, p;
2069
+ return s = i, r.charCodeAt(i) === 91 ? (o = d, i++) : (o = e, v === 0 && w(br)), o !== e ? (u = wt(), u !== e ? (r.charCodeAt(i) === 93 ? (p = y, i++) : (p = e, v === 0 && w(Cr)), p !== e ? (k = s, s = so(u)) : (i = s, s = e)) : (i = s, s = e)) : (i = s, s = e), s;
2070
+ }
2071
+ if (De = c(), t.peg$library)
2072
+ return (
2073
+ /** @type {any} */
2074
+ {
2075
+ peg$result: De,
2076
+ peg$currPos: i,
2077
+ peg$FAILED: e,
2078
+ peg$maxFailExpected: Qe,
2079
+ peg$maxFailPos: te
2080
+ }
2081
+ );
2082
+ if (De !== e && i === r.length)
2083
+ return De;
2084
+ throw De !== e && i < r.length && w(oo()), io(Qe, te < r.length ? r.charAt(te) : null, te < r.length ? ut(te, te + 1) : ut(te, te));
2085
+ }
2086
+ function fa(r) {
2087
+ return ca(r);
2088
+ }
2089
+ class ua {
2090
+ head = null;
2091
+ tail = null;
2092
+ size = 0;
2093
+ push(t) {
2094
+ const e = { value: t, next: null };
2095
+ this.tail !== null && (this.tail.next = e), this.tail = e, this.head === null && (this.head = e), this.size++;
2096
+ }
2097
+ pop() {
2098
+ if (this.head === null)
2099
+ return;
2100
+ const t = this.head.value;
2101
+ return this.head = this.head.next, this.head === null && (this.tail = null), this.size--, t;
2102
+ }
2103
+ }
2104
+ function xe(r) {
2105
+ if (typeof r != "object" || r === null)
2106
+ return !1;
2107
+ const t = Object.getPrototypeOf(r);
2108
+ return t === null || t === Object.prototype;
2109
+ }
2110
+ const tr = (r) => Array.isArray(r.value), nr = (r) => xe(r.value), ys = /* @__PURE__ */ new WeakSet(), Q = (r) => typeof r == "object" && r !== null && ys.has(r), la = (r) => {
2111
+ switch (typeof r) {
2112
+ case "string":
2113
+ case "number":
2114
+ case "boolean":
2115
+ return !0;
2116
+ case "object":
2117
+ return r === null || xe(r) || ws(r);
2118
+ default:
2119
+ return !1;
2120
+ }
2121
+ }, ws = (r) => Array.isArray(r) && !Q(r), vs = () => {
2122
+ const r = [];
2123
+ return ys.add(r), r;
2124
+ }, Pe = Symbol("Nothing"), pa = {
2125
+ declaration: function(t, e) {
2126
+ return Q(e) ? e.length : 0;
2127
+ },
2128
+ definition: {
2129
+ parameters: ["NodesType"],
2130
+ returnType: "ValueType"
2131
+ }
2132
+ };
2133
+ function da(r) {
2134
+ let t = 0;
2135
+ for (let e = 0; e < r.length; e++) {
2136
+ const n = r.charCodeAt(e);
2137
+ (n >= 0 && n <= 55295 || n >= 57344 && n <= 1114111) && t++;
2138
+ }
2139
+ return t;
2140
+ }
2141
+ const ha = {
2142
+ declaration: function(t, e) {
2143
+ return typeof e == "string" ? da(e) : Array.isArray(e) ? e.length : xe(e) ? Object.keys(e).length : Pe;
2144
+ },
2145
+ definition: {
2146
+ parameters: ["ValueType"],
2147
+ returnType: "ValueType"
2148
+ }
2149
+ };
2150
+ function Es(r) {
2151
+ return r === 92;
2152
+ }
2153
+ function ga(r, t) {
2154
+ let e = !1, n = t;
2155
+ for (; n < r.length; ) {
2156
+ const a = r.charCodeAt(n);
2157
+ if (n++, Es(a)) {
2158
+ e = !0;
2159
+ continue;
2160
+ }
2161
+ if (a === 93) {
2162
+ if (!e)
2163
+ break;
2164
+ e = !1;
2165
+ }
2166
+ }
2167
+ return n;
2168
+ }
2169
+ function ma(r) {
2170
+ let t = r;
2171
+ for (let e = 0; e < r.length; e++) {
2172
+ const n = r.charCodeAt(e);
2173
+ Es(n) ? e++ : n === 91 ? e = ga(r, e) : n === 46 && (t = `${r.slice(0, e)}[^
2174
+ \r]${r.slice(e + 1)}`);
2175
+ }
2176
+ return t;
2177
+ }
2178
+ function ks({ cache: r }, t) {
2179
+ const e = r.get("regexps") ?? {};
2180
+ if (r.has("regexps") || r.set("regexps", e), Object.hasOwn(e, t))
2181
+ return e[t];
2182
+ try {
2183
+ const n = RegExp(ma(t), "u");
2184
+ return e[t] = n, n;
2185
+ } catch {
2186
+ return e[t] = null, null;
2187
+ }
2188
+ }
2189
+ const $a = {
2190
+ declaration: function(t, e, n) {
2191
+ return typeof e != "string" || typeof n != "string" ? !1 : ks(t, `^${n}$`)?.test(e) === !0;
2192
+ },
2193
+ definition: {
2194
+ parameters: ["ValueType", "ValueType"],
2195
+ returnType: "LogicalType"
2196
+ }
2197
+ }, ya = {
2198
+ declaration: function(t, e, n) {
2199
+ return typeof e != "string" || typeof n != "string" ? !1 : ks(t, n)?.test(e) === !0;
2200
+ },
2201
+ definition: {
2202
+ parameters: ["ValueType", "ValueType"],
2203
+ returnType: "LogicalType"
2204
+ }
2205
+ }, wa = {
2206
+ declaration: function(t, e) {
2207
+ return e.length === 1 ? e[0] : Pe;
2208
+ },
2209
+ definition: {
2210
+ parameters: ["NodesType"],
2211
+ returnType: "ValueType"
2212
+ }
2213
+ }, qr = [];
2214
+ function se(r, t) {
2215
+ return r === qr ? qr : typeof t == "number" ? [...r, t] : [...r, Sa(t)];
2216
+ }
2217
+ function va(r) {
2218
+ return r ? [] : qr;
2219
+ }
2220
+ const Ea = (
2221
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: we need control characters to escape Unicode characters
2222
+ /[\u0000-\u001f'\\]/g
2223
+ );
2224
+ function ka(r) {
2225
+ const t = r.charCodeAt(0);
2226
+ switch (t) {
2227
+ case 8:
2228
+ return "\\b";
2229
+ case 12:
2230
+ return "\\f";
2231
+ case 10:
2232
+ return "\\n";
2233
+ case 13:
2234
+ return "\\r";
2235
+ case 9:
2236
+ return "\\t";
2237
+ case 39:
2238
+ return "\\'";
2239
+ case 92:
2240
+ return "\\\\";
2241
+ default:
2242
+ return `\\u${t.toString(16).padStart(4, "0")}`;
2243
+ }
2244
+ }
2245
+ function Sa(r) {
2246
+ return r.replace(Ea, ka);
2247
+ }
2248
+ function be(r) {
2249
+ throw new TypeError(
2250
+ // biome-ignore lint/complexity/useLiteralKeys: type exhaustiveness
2251
+ `Unexpected node type: ${r.type}`
2252
+ );
2253
+ }
2254
+ function de(r) {
2255
+ throw new TypeError(`Unexpected comparison operator: ${r}`);
2256
+ }
2257
+ function Ss(r, t) {
2258
+ throw new Error(t);
2259
+ }
2260
+ function sr(r) {
2261
+ switch (typeof r) {
2262
+ case "object":
2263
+ if (r === null)
2264
+ return "null";
2265
+ if (Q(r))
2266
+ return "NodeList";
2267
+ if (ws(r))
2268
+ return "array";
2269
+ if (xe(r))
2270
+ return "object";
2271
+ throw new TypeError(`Unknown type: ${r}`);
2272
+ case "string":
2273
+ return "string";
2274
+ case "number":
2275
+ return "number";
2276
+ case "boolean":
2277
+ return "boolean";
2278
+ default:
2279
+ if (r === Pe)
2280
+ return "Nothing";
2281
+ throw new TypeError(`Unknown type: ${r}`);
2282
+ }
2283
+ }
2284
+ function ba(r, t) {
2285
+ if (r.length !== t.length)
2286
+ return !1;
2287
+ for (let e = 0; e < r.length; e++)
2288
+ if (!Te(r[e], t[e]))
2289
+ return !1;
2290
+ return !0;
2291
+ }
2292
+ function Ca(r, t) {
2293
+ const e = Object.keys(r), n = Object.keys(t);
2294
+ if (e.length !== n.length)
2295
+ return !1;
2296
+ for (const a of e)
2297
+ if (!Object.hasOwn(t, a) || !Te(r[a], t[a]))
2298
+ return !1;
2299
+ return !0;
2300
+ }
2301
+ function Te(r, t) {
2302
+ if (sr(r) !== sr(t))
2303
+ return !1;
2304
+ switch (sr(r)) {
2305
+ case "string":
2306
+ case "number":
2307
+ case "boolean":
2308
+ case "null":
2309
+ return r === t;
2310
+ case "object":
2311
+ return Ca(r, t);
2312
+ case "array":
2313
+ case "NodeList":
2314
+ return ba(r, t);
2315
+ default:
2316
+ return !1;
2317
+ }
2318
+ }
2319
+ function bs(r, t, e) {
2320
+ switch (e) {
2321
+ case "==":
2322
+ case ">=":
2323
+ // does not offer < comparison
2324
+ case "<=":
2325
+ return !Q(r) && !Q(t) && Te(r, t);
2326
+ case "<":
2327
+ // does not offer < comparison
2328
+ case ">":
2329
+ return !1;
2330
+ case "!=":
2331
+ return !bs(r, t, "==");
2332
+ default:
2333
+ de(e);
2334
+ }
2335
+ }
2336
+ function Cs(r, t, e) {
2337
+ switch (e) {
2338
+ case "==":
2339
+ case "<=":
2340
+ // does not offer < comparison
2341
+ case ">=":
2342
+ return Q(r) && (Q(t) && Te(r, t) || t === Pe);
2343
+ case "<":
2344
+ // does not offer < comparison
2345
+ case ">":
2346
+ return !1;
2347
+ case "!=":
2348
+ return !Cs(r, t, "==");
2349
+ default:
2350
+ de(e);
2351
+ }
2352
+ }
2353
+ function As(r, t, e) {
2354
+ switch (e) {
2355
+ case "==":
2356
+ case "<=":
2357
+ // does not offer < comparison
2358
+ case ">=":
2359
+ return t === Pe || Q(t) && t.length === 0;
2360
+ case "<":
2361
+ // does not offer < comparison
2362
+ case ">":
2363
+ return !1;
2364
+ case "!=":
2365
+ return !As(r, t, "==");
2366
+ default:
2367
+ de(e);
2368
+ }
2369
+ }
2370
+ function ve(r, t, e) {
2371
+ switch (e) {
2372
+ case "==":
2373
+ return r === t;
2374
+ case "<":
2375
+ return typeof t == "number" && r < t;
2376
+ case "!=":
2377
+ return !ve(r, t, "==");
2378
+ case "<=":
2379
+ return ve(r, t, "<") || ve(r, t, "==");
2380
+ case ">":
2381
+ return typeof t == "number" && ve(t, r, "<");
2382
+ case ">=":
2383
+ return typeof t == "number" && ve(t, r, "<") || ve(r, t, "==");
2384
+ default:
2385
+ de(e);
2386
+ }
2387
+ }
2388
+ function Aa(r, t, e) {
2389
+ switch (e) {
2390
+ case "==":
2391
+ case "<=":
2392
+ // does not offer < comparison
2393
+ case ">=":
2394
+ return Te(r, t);
2395
+ case "<":
2396
+ // does not offer < comparison
2397
+ case ">":
2398
+ return !1;
2399
+ case "!=":
2400
+ return !Te(r, t);
2401
+ default:
2402
+ de(e);
2403
+ }
2404
+ }
2405
+ function Rs(r, t, e) {
2406
+ switch (e) {
2407
+ case "==":
2408
+ case "<=":
2409
+ // do not offer < comparison
2410
+ case ">=":
2411
+ return r === t;
2412
+ case "<":
2413
+ case ">":
2414
+ return !1;
2415
+ case "!=":
2416
+ return !Rs(r, t, "==");
2417
+ default:
2418
+ de(e);
2419
+ }
2420
+ }
2421
+ function $e(r, t, e) {
2422
+ if (typeof r != "string" || typeof t != "string")
2423
+ return !1;
2424
+ switch (e) {
2425
+ case "==":
2426
+ return r === t;
2427
+ case "<": {
2428
+ let n = 0;
2429
+ for (; r.length > n && t.length > n; ) {
2430
+ const a = r.charCodeAt(n), c = t.charCodeAt(n);
2431
+ if (a === c) {
2432
+ n++;
2433
+ continue;
2434
+ }
2435
+ return r.charCodeAt(n) < t.charCodeAt(n);
2436
+ }
2437
+ return r.length < t.length;
2438
+ }
2439
+ default:
2440
+ de(e);
2441
+ }
2442
+ }
2443
+ function Ra(r, t, e) {
2444
+ switch (e) {
2445
+ case "==":
2446
+ case "<":
2447
+ return $e(r, t, e);
2448
+ case "!=":
2449
+ return !$e(r, t, "==");
2450
+ case "<=":
2451
+ return $e(r, t, "<") || $e(r, t, "==");
2452
+ case ">":
2453
+ return $e(t, r, "<");
2454
+ case ">=":
2455
+ return $e(t, r, "<") || $e(r, t, "==");
2456
+ default:
2457
+ de(e);
2458
+ }
2459
+ }
2460
+ function Oa(r, t, e) {
2461
+ const n = Q(r) && r.length === 1 ? r[0] : r, a = sr(n), c = Q(t) && t.length === 1 ? t[0] : t;
2462
+ switch (a) {
2463
+ case "string":
2464
+ return Ra(n, c, e);
2465
+ case "number":
2466
+ return ve(n, c, e);
2467
+ case "boolean":
2468
+ case "null":
2469
+ return Rs(n, c, e);
2470
+ case "object":
2471
+ return Aa(n, c, e);
2472
+ case "array":
2473
+ return bs(n, c, e);
2474
+ case "Nothing":
2475
+ return As(n, c, e);
2476
+ case "NodeList":
2477
+ return Cs(n, c, e);
2478
+ default:
2479
+ Ss(a, "Unknown type");
2480
+ }
2481
+ }
2482
+ function Os(r, t, e) {
2483
+ const n = vs();
2484
+ switch (e.value.type) {
2485
+ case "RelQuery":
2486
+ ir(r, t.root, t.value, e.value, (a) => {
2487
+ n.push(a);
2488
+ });
2489
+ break;
2490
+ case "JsonPathQuery":
2491
+ ir(r, t.root, t.root, e.value, (a) => {
2492
+ n.push(a);
2493
+ });
2494
+ break;
2495
+ default:
2496
+ be(e.value);
2497
+ }
2498
+ return n;
2499
+ }
2500
+ function Ta(r, t, e) {
2501
+ switch (e.expression.type) {
2502
+ case "FilterQuery":
2503
+ return Os(r, t, e.expression).length > 0;
2504
+ case "FunctionExpr":
2505
+ return Hr(r, t, e.expression) === !0;
2506
+ default:
2507
+ be(e.expression);
2508
+ }
2509
+ }
2510
+ function Ee(r, t, e) {
2511
+ switch (e.type) {
2512
+ case "LogicalNotExpr":
2513
+ return !Ee(r, t, e.expression);
2514
+ case "LogicalAndExpr":
2515
+ return Ee(r, t, e.left) && Ee(r, t, e.right);
2516
+ case "LogicalOrExpr":
2517
+ return Ee(r, t, e.left) || Ee(r, t, e.right);
2518
+ case "TestExpr":
2519
+ return Ta(r, t, e);
2520
+ case "ComparisonExpr":
2521
+ return Ts(r, t, e);
2522
+ default:
2523
+ be(e);
2524
+ }
2525
+ }
2526
+ function Pa(r, t, e) {
2527
+ switch (e.type) {
2528
+ case "FunctionExpr":
2529
+ return Hr(r, t, e);
2530
+ case "FilterQuery":
2531
+ return Os(r, t, e);
2532
+ case "LogicalNotExpr":
2533
+ case "LogicalAndExpr":
2534
+ case "LogicalOrExpr":
2535
+ case "TestExpr":
2536
+ return Ee(r, t, e);
2537
+ case "Literal":
2538
+ return e.value;
2539
+ default:
2540
+ be(e);
2541
+ }
2542
+ }
2543
+ function _a(r) {
2544
+ return Q(r) ? r.length === 1 ? r[0] : Pe : r;
2545
+ }
2546
+ function Hr(r, t, e) {
2547
+ if (!Fa(r.functions, e.name))
2548
+ return !1;
2549
+ const n = r.functions[e.name];
2550
+ if (n.definition.parameters.length !== e.arguments.length)
2551
+ return !1;
2552
+ const a = [];
2553
+ for (let c = 0; c < e.arguments.length; c++) {
2554
+ const f = Pa(r, t, e.arguments[c]), l = n.definition.parameters[c];
2555
+ switch (l) {
2556
+ case "ValueType":
2557
+ if (!Q(f) && !la(f))
2558
+ return !1;
2559
+ a.push(_a(f));
2560
+ break;
2561
+ case "NodesType":
2562
+ if (!Q(f))
2563
+ return !1;
2564
+ a.push(f);
2565
+ break;
2566
+ case "LogicalType":
2567
+ if (typeof f == "boolean")
2568
+ a.push(f);
2569
+ else if (Q(f))
2570
+ a.push(f.length > 0);
2571
+ else
2572
+ return !1;
2573
+ break;
2574
+ default:
2575
+ Ss(l, "Unknown function argument type");
2576
+ }
2577
+ }
2578
+ return n.declaration(
2579
+ r,
2580
+ ...a
2581
+ );
2582
+ }
2583
+ function Fa(r, t) {
2584
+ return Object.hasOwn(r, t);
2585
+ }
2586
+ function Jt(r, t, e) {
2587
+ switch (e.type) {
2588
+ case "Literal":
2589
+ return e.value;
2590
+ case "RelSingularQuery":
2591
+ case "AbsSingularQuery": {
2592
+ const n = e.type === "RelSingularQuery" ? t.value : t.root;
2593
+ if (e.segments.length === 0)
2594
+ return n;
2595
+ const a = vs();
2596
+ return ir(r, t.root, n, e, (c) => {
2597
+ a.push(c);
2598
+ }), a;
2599
+ }
2600
+ case "FunctionExpr":
2601
+ return Hr(r, t, e);
2602
+ default:
2603
+ be(e);
2604
+ }
2605
+ }
2606
+ function Ts(r, t, e) {
2607
+ const n = Jt(r, t, e.left), a = Jt(r, t, e.right);
2608
+ return Oa(n, a, e.op);
2609
+ }
2610
+ function Ps(r, t, e) {
2611
+ if (e.value.type === "ComparisonExpr") {
2612
+ if (!Ts(r, t, e.value))
2613
+ return;
2614
+ } else if (!Ee(r, t, e.value))
2615
+ return;
2616
+ r.stack.push({
2617
+ root: t.root,
2618
+ path: t.path,
2619
+ value: t.value,
2620
+ index: t.index + 1
2621
+ });
2622
+ }
2623
+ function Ia(r, t) {
2624
+ return r < 0 ? t + r : r;
2625
+ }
2626
+ function _s(r, t, e) {
2627
+ const n = Ia(e.value, t.value.length);
2628
+ n >= 0 && n < t.value.length && r.stack.push({
2629
+ root: t.root,
2630
+ path: se(t.path, n),
2631
+ value: t.value[n],
2632
+ index: t.index + 1
2633
+ });
2634
+ }
2635
+ function Fs(r, { root: t, path: e, value: n, index: a }, c) {
2636
+ Object.hasOwn(n, c.value) && r.stack.push({
2637
+ root: t,
2638
+ path: se(e, c.value),
2639
+ value: n[c.value],
2640
+ index: a + 1
2641
+ });
2642
+ }
2643
+ function or(r, t) {
2644
+ return r >= 0 ? r : t + r;
2645
+ }
2646
+ function Da(r, t, e, n) {
2647
+ const a = or(r, n), c = or(t, n);
2648
+ if (e >= 0) {
2649
+ const h = Math.min(Math.max(a, 0), n), d = Math.min(Math.max(c, 0), n);
2650
+ return [h, d];
2651
+ }
2652
+ const f = Math.min(Math.max(a, -1), n - 1);
2653
+ return [Math.min(Math.max(c, -1), n - 1), f];
2654
+ }
2655
+ function La(r, { root: t, path: e, value: n, index: a }, c) {
2656
+ const f = c.step ?? 1, l = f >= 0 ? 0 : n.length - 1, h = f >= 0 ? n.length : -n.length - 1, d = c.start === null ? l : or(c.start, n.length), m = c.end === null ? h : or(c.end, n.length), [y, E] = Da(d, m, f, n.length);
2657
+ if (f > 0) {
2658
+ let S = y;
2659
+ for (; S < E; )
2660
+ r.stack.push({
2661
+ root: t,
2662
+ path: se(e, S),
2663
+ value: n[S],
2664
+ index: a + 1
2665
+ }), S += f;
2666
+ } else if (f < 0) {
2667
+ let S = E;
2668
+ for (; y < S; )
2669
+ r.stack.push({
2670
+ root: t,
2671
+ path: se(e, S),
2672
+ value: n[S],
2673
+ index: a + 1
2674
+ }), S += f;
2675
+ }
2676
+ }
2677
+ function Is(r, { root: t, path: e, value: n, index: a }) {
2678
+ if (Array.isArray(n))
2679
+ for (let c = 0; c < n.length; c++)
2680
+ r.stack.push({
2681
+ root: t,
2682
+ path: se(e, c),
2683
+ value: n[c],
2684
+ index: a + 1
2685
+ });
2686
+ else if (xe(n))
2687
+ for (const c of Object.keys(n))
2688
+ r.stack.push({
2689
+ root: t,
2690
+ path: se(e, c),
2691
+ value: n[c],
2692
+ index: a + 1
2693
+ });
2694
+ }
2695
+ function Na(r, t, e) {
2696
+ for (const n of e.selectors)
2697
+ switch (n.type) {
2698
+ case "NameSelector":
2699
+ nr(t) && Fs(r, t, n);
2700
+ break;
2701
+ case "SliceSelector":
2702
+ tr(t) && La(r, t, n);
2703
+ break;
2704
+ case "IndexSelector": {
2705
+ tr(t) && _s(r, t, n);
2706
+ break;
2707
+ }
2708
+ case "WildcardSelector":
2709
+ Is(r, t);
2710
+ break;
2711
+ case "FilterSelector": {
2712
+ tr(t) ? ja(r, t, n) : nr(t) && Wa(r, t, n);
2713
+ break;
2714
+ }
2715
+ default:
2716
+ be(n);
2717
+ }
2718
+ }
2719
+ function ja(r, { root: t, path: e, value: n, index: a }, c) {
2720
+ for (let f = 0; f < n.length; f++)
2721
+ Ps(r, {
2722
+ root: t,
2723
+ path: se(e, f),
2724
+ value: n[f],
2725
+ index: a
2726
+ }, c);
2727
+ }
2728
+ function Wa(r, { root: t, path: e, value: n, index: a }, c) {
2729
+ for (const f of Object.keys(n))
2730
+ Ps(r, {
2731
+ root: t,
2732
+ path: se(e, f),
2733
+ value: n[f],
2734
+ index: a
2735
+ }, c);
2736
+ }
2737
+ function qa(r, { root: t, path: e, value: n, index: a }, c) {
2738
+ Object.hasOwn(n, c.value) && r.stack.push({
2739
+ root: t,
2740
+ path: se(e, c.value),
2741
+ value: n[c.value],
2742
+ index: a + 1
2743
+ });
2744
+ }
2745
+ function Ua(r, t, e) {
2746
+ switch (e.type) {
2747
+ case "BracketedSelection":
2748
+ return Na(r, t, e);
2749
+ case "WildcardSelector":
2750
+ return Is(r, t);
2751
+ case "MemberNameShorthand":
2752
+ nr(t) && qa(r, t, e);
2753
+ break;
2754
+ case "NameSelector":
2755
+ nr(t) && Fs(r, t, e);
2756
+ break;
2757
+ case "IndexSelector":
2758
+ tr(t) && _s(r, t, e);
2759
+ break;
2760
+ default:
2761
+ be(e);
2762
+ }
2763
+ }
2764
+ function ir(r, t, e, n, a) {
2765
+ const c = new ua();
2766
+ c.push({
2767
+ root: t,
2768
+ path: va(r.capturePaths),
2769
+ value: e,
2770
+ index: 0
2771
+ });
2772
+ const f = {
2773
+ cache: r.cache,
2774
+ capturePaths: !1,
2775
+ functions: r.functions,
2776
+ regexp: r.regexp,
2777
+ stack: c
2778
+ };
2779
+ for (; c.size > 0; ) {
2780
+ const l = c.pop();
2781
+ if (l.index === n.segments.length) {
2782
+ a(l.value, l.path);
2783
+ continue;
2784
+ }
2785
+ const { path: h, value: d, index: m } = l, y = n.segments[m];
2786
+ if (Ua(f, l, y.node), y.type === "DescendantSegment") {
2787
+ if (Array.isArray(d))
2788
+ for (let E = 0; E < d.length; E++)
2789
+ c.push({
2790
+ root: t,
2791
+ path: se(h, E),
2792
+ value: d[E],
2793
+ index: m
2794
+ });
2795
+ else if (d !== null && typeof d == "object")
2796
+ for (const E of Object.keys(d))
2797
+ c.push({
2798
+ root: t,
2799
+ path: se(h, E),
2800
+ value: d[E],
2801
+ index: m
2802
+ });
2803
+ }
2804
+ }
2805
+ }
2806
+ function za(r, t, e, n) {
2807
+ const a = {
2808
+ cache: /* @__PURE__ */ new Map(),
2809
+ capturePaths: e.capturePaths,
2810
+ functions: {
2811
+ count: pa,
2812
+ search: ya,
2813
+ value: wa,
2814
+ match: $a,
2815
+ length: ha
2816
+ },
2817
+ regexp: "i-regexp"
2818
+ };
2819
+ ir(a, r, r, fa(t), n);
2820
+ }
2821
+ function Ur(r, t) {
2822
+ const e = [];
2823
+ return za(r, t, { capturePaths: !1 }, (n) => {
2824
+ e.push(n);
2825
+ }), e;
2826
+ }
2827
+ function Ba(r, t) {
2828
+ try {
2829
+ const e = xa(r, t);
2830
+ return !!new Function(`return ${e};`)();
2831
+ } catch {
2832
+ return !1;
2833
+ }
2834
+ }
2835
+ function xa(r, t) {
2836
+ const e = [];
2837
+ let n = 0, a = "";
2838
+ for (; n < r.length; )
2839
+ if (r[n] === "$") {
2840
+ a.length > 0 && (e.push(a), a = "");
2841
+ const c = n, f = Ma(r, n);
2842
+ if (f.length > 1) {
2843
+ const l = Va(f, t);
2844
+ e.push(l);
2845
+ }
2846
+ n = c + f.length;
2847
+ } else
2848
+ a += r[n], n++;
2849
+ return a.length > 0 && e.push(a), e.join("");
2850
+ }
2851
+ function Ma(r, t) {
2852
+ let e = "$", n = 0, a = !1, c = "", f = !1, l = 0, h = t + 1;
2853
+ for (; h < r.length; ) {
2854
+ const d = r[h];
2855
+ if ((d === '"' || d === "'") && !a) {
2856
+ a = !0, c = d, e += d, h++;
2857
+ continue;
2858
+ }
2859
+ if (d === c && a) {
2860
+ a = !1, e += d, h++;
2861
+ continue;
2862
+ }
2863
+ if (a) {
2864
+ e += d, h++;
2865
+ continue;
2866
+ }
2867
+ if (d === "[") {
2868
+ n++, h + 1 < r.length && r[h + 1] === "?" && (f = !0, l = n), e += d, h++;
2869
+ continue;
2870
+ }
2871
+ if (d === "]") {
2872
+ n--, f && n < l && (f = !1), e += d, h++;
2873
+ continue;
2874
+ }
2875
+ if (!f && (/\s/.test(d) || /[<>=!&|,)]/.test(d)))
2876
+ break;
2877
+ e += d, h++;
2878
+ }
2879
+ return e;
2880
+ }
2881
+ function Va(r, t) {
2882
+ if (r.endsWith(".length")) {
2883
+ const a = r.slice(0, -7), c = zr(a), l = Ur(t, c)[0] ?? null;
2884
+ return Array.isArray(l) ? String(l.length) : "0";
2885
+ }
2886
+ if (r.includes("[?(") && r.includes(")]"))
2887
+ return Ka(r, t);
2888
+ const e = zr(r), n = Ur(t, e);
2889
+ return JSON.stringify(n[0]);
2890
+ }
2891
+ function Ka(r, t) {
2892
+ const e = r.match(/\[\?\((.*)\)\]/);
2893
+ if (!e)
2894
+ return "false";
2895
+ const n = e[1], a = r.substring(0, r.indexOf("[?(")), c = zr(a), f = Ur(t, c), l = Array.isArray(f) ? f.flat() : f;
2896
+ if (!Array.isArray(l))
2897
+ return "false";
2898
+ const h = l.filter((m) => {
2899
+ const y = Ha(n, m);
2900
+ try {
2901
+ return !!new Function("item", `return ${y};`)(m);
2902
+ } catch {
2903
+ return !1;
2904
+ }
2905
+ }), d = r.substring(r.indexOf(")]") + 2);
2906
+ if (d.startsWith(".")) {
2907
+ const m = d.match(/\.([a-zA-Z0-9_-]+)/);
2908
+ if (m) {
2909
+ const y = m[1].replace(/-/g, "_"), E = h.map((S) => S[y]);
2910
+ return JSON.stringify(E);
2911
+ }
2912
+ }
2913
+ return h.length > 0 ? JSON.stringify(h) : "false";
2914
+ }
2915
+ function Ha(r, t) {
2916
+ let e = r;
2917
+ return e = e.replace(/@\.([a-zA-Z0-9_-]+)\.match\(([^)]+)\)/g, (n, a, c) => {
2918
+ const f = a.replace(/-/g, "_"), l = t[f];
2919
+ if (typeof l != "string")
2920
+ return "false";
2921
+ try {
2922
+ let h = c.replace(/^["']|["']$/g, "");
2923
+ h = h.replace(/^\/|\/$/g, "");
2924
+ const d = new RegExp(h);
2925
+ return String(d.test(l));
2926
+ } catch {
2927
+ return "false";
2928
+ }
2929
+ }), e = e.replace(/@\.([a-zA-Z0-9_-]+)/g, (n, a) => {
2930
+ const c = a.replace(/-/g, "_"), f = t[c];
2931
+ return JSON.stringify(f);
2932
+ }), e;
2933
+ }
2934
+ function zr(r) {
2935
+ return r.replace(/\.([a-zA-Z0-9_-]+)/g, (t, e) => "." + e.replace(/-/g, "_"));
2936
+ }
2937
+ function Ds({ workflowId: r, step: t, criteria: e = [], ctx: n }) {
2938
+ ia(e);
2939
+ const a = [];
2940
+ if (!r)
2941
+ return a.push({
2942
+ name: V.SUCCESS_CRITERIA_CHECK,
2943
+ passed: !1,
2944
+ message: `Undefined workflowId for step ${t.stepId}`,
2945
+ severity: n.severity.SUCCESS_CRITERIA_CHECK
2946
+ }), a;
2947
+ const c = lr({
2948
+ ctx: n,
2949
+ workflowId: r,
2950
+ step: t
2951
+ });
2952
+ return e.forEach((f) => {
2953
+ const { condition: l } = f;
2954
+ try {
2955
+ if (ms(f)) {
2956
+ const h = l.match(/^\/(.*)\/([gimsuy]*)$/);
2957
+ let d, m;
2958
+ h ? (d = h[1], m = h[2]) : (d = l, m = "");
2959
+ const { context: y } = f, E = new RegExp(d, m);
2960
+ a.push({
2961
+ name: V.SUCCESS_CRITERIA_CHECK,
2962
+ passed: E.test(Se(y, c, n.options.logger)),
2963
+ message: `Checking regex criteria: ${JSON.stringify(f)}`,
2964
+ severity: n.severity.SUCCESS_CRITERIA_CHECK,
2965
+ condition: l
2966
+ });
2967
+ } else if ($s(f)) {
2968
+ const { context: h } = f, d = Se(h, c, n.options.logger);
2969
+ a.push({
2970
+ name: V.SUCCESS_CRITERIA_CHECK,
2971
+ passed: Ba(l, d),
2972
+ message: `Checking jsonpath criteria: ${l}`,
2973
+ severity: n.severity.SUCCESS_CRITERIA_CHECK,
2974
+ condition: l
2975
+ });
2976
+ } else
2977
+ a.push({
2978
+ name: V.SUCCESS_CRITERIA_CHECK,
2979
+ passed: Se(l, c, n.options.logger),
2980
+ message: `Checking simple criteria: ${JSON.stringify(f)}`,
2981
+ severity: n.severity.SUCCESS_CRITERIA_CHECK,
2982
+ condition: l
2983
+ });
2984
+ } catch (h) {
2985
+ a.push({
2986
+ name: V.SUCCESS_CRITERIA_CHECK,
2987
+ passed: !1,
2988
+ message: `Failed to pass ${JSON.stringify(f)}: ${h.message}`,
2989
+ severity: n.severity.SUCCESS_CRITERIA_CHECK,
2990
+ condition: f.condition
2991
+ });
2992
+ }
2993
+ }), a;
2994
+ }
2995
+ async function Ja({ ctx: r, workflowId: t, step: e, requestData: n }) {
2996
+ e.checks = [];
2997
+ const a = {
2998
+ successCriteriaCheck: !0,
2999
+ schemaCheck: !0,
3000
+ networkCheck: !0,
3001
+ unexpectedErrorCheck: !0,
3002
+ statusCodeCheck: !0
3003
+ };
3004
+ try {
3005
+ e.response = await r.apiClient.fetchResult({ ctx: r, step: e, requestData: n, workflowId: t });
3006
+ } catch (h) {
3007
+ return h instanceof rs ? (e.checks.push({
3008
+ name: V.UNEXPECTED_ERROR,
3009
+ passed: !1,
3010
+ message: h.message,
3011
+ severity: r.severity.UNEXPECTED_ERROR
3012
+ }), a.unexpectedErrorCheck = !1, a) : h instanceof es ? (e.checks.push({
3013
+ name: V.STATUS_CODE_CHECK,
3014
+ passed: !1,
3015
+ message: h.message,
3016
+ severity: r.severity.STATUS_CODE_CHECK
3017
+ }), a.statusCodeCheck = !1, a) : (e.checks.push({
3018
+ name: V.NETWORK_ERROR,
3019
+ passed: !1,
3020
+ message: h.cause?.code ? h.message + ` (cause: ${h.cause.code})` : h.message,
3021
+ severity: r.severity.NETWORK_ERROR
3022
+ }), a.networkCheck = !1, r.apiClient.clearVerboseResponseLogs(), a);
3023
+ }
3024
+ const c = r.$workflows[t].steps[e.stepId].request;
3025
+ if (e.request = c, e.verboseLog = r.apiClient.getVerboseResponseLogs(), e.successCriteria) {
3026
+ const h = Ds({
3027
+ workflowId: t,
3028
+ step: e,
3029
+ criteria: e.successCriteria,
3030
+ ctx: {
3031
+ ...r,
3032
+ $request: c,
3033
+ $response: e.response,
3034
+ $inputs: r.$workflows[t].inputs
3035
+ }
3036
+ });
3037
+ a.successCriteriaCheck = h.every((d) => d.passed || ["off", "warn"].includes(d.severity)), e.checks.push(...h);
3038
+ }
3039
+ const f = Ho({
3040
+ stepCallCtx: {
3041
+ $response: e.response,
3042
+ $inputs: r.$workflows[t].inputs
3043
+ },
3044
+ descriptionOperation: n.openapiOperation,
3045
+ ctx: r
3046
+ });
3047
+ f.length && (a.schemaCheck = f.every((h) => h.passed || ["off", "warn"].includes(h.severity)), e.checks.push(...f));
3048
+ const l = {};
3049
+ if (e.outputs) {
3050
+ const h = lr({
3051
+ ctx: {
3052
+ ...r,
3053
+ $response: e.response,
3054
+ $inputs: r.$workflows[t].inputs
3055
+ },
3056
+ workflowId: t,
3057
+ step: e
3058
+ });
3059
+ for (const d of Object.keys(e.outputs))
3060
+ l[d] = oe({
3061
+ payload: e.outputs[d],
3062
+ context: h,
3063
+ logger: r.options.logger
3064
+ });
3065
+ }
3066
+ return r.$steps[e.stepId] = {
3067
+ outputs: { ...r.$steps[e.stepId].outputs, ...l }
3068
+ }, r.$workflows[t].steps[e.stepId] = {
3069
+ outputs: { ...r.$steps[e.stepId].outputs, ...l },
3070
+ request: c,
3071
+ response: e.response
3072
+ }, a;
3073
+ }
3074
+ function Xa(r = 0) {
3075
+ return new Promise((t) => setTimeout(t, r * 1e3));
3076
+ }
3077
+ function Qa({ ctx: r, descriptionName: t, openapiOperation: e, xOperation: n }) {
3078
+ if (!t && n?.url)
3079
+ return { url: n?.url };
3080
+ if (r.options?.server && t) {
3081
+ const c = Kr(r.options.server);
3082
+ if (c[t])
3083
+ return { url: c[t] };
3084
+ }
3085
+ const a = r.sourceDescriptions?.find((c) => c.name === t);
3086
+ if (a && a.type === "openapi" && a["x-serverUrl"]) {
3087
+ if (a["x-serverUrl"].startsWith("http"))
3088
+ return {
3089
+ url: a["x-serverUrl"]
3090
+ };
3091
+ const c = a["x-serverUrl"].startsWith("$servers.") ? a["x-serverUrl"].split(".")[1] : void 0;
3092
+ if (!c)
3093
+ return;
3094
+ const f = fe({
3095
+ value: `$sourceDescriptions.${t}.servers.${c}`,
3096
+ ctx: r,
3097
+ logger: r.options.logger
3098
+ });
3099
+ return Ye(f);
3100
+ }
3101
+ if (e?.servers?.[0]) {
3102
+ const c = r.sourceDescriptions?.find((l) => l.name === e.sourceDescriptionName);
3103
+ let f;
3104
+ return r.sourceDescriptions?.length === 1 && r.sourceDescriptions[0] ? f = "x-serverUrl" in r.sourceDescriptions[0] ? r.sourceDescriptions[0]["x-serverUrl"] : void 0 : c && (f = "x-serverUrl" in c ? c["x-serverUrl"] : void 0), f ? { url: f } : Ye(e.servers[0]);
3105
+ }
3106
+ if (!t && r?.sourceDescriptions && r.sourceDescriptions.length === 1) {
3107
+ const c = r.sourceDescriptions[0];
3108
+ return "x-serverUrl" in c && c["x-serverUrl"] ? { url: c["x-serverUrl"] } : Ye(r.$sourceDescriptions[c.name]?.servers[0]) || void 0;
3109
+ }
3110
+ if (!(!t || !r.$sourceDescriptions || !r.$sourceDescriptions[t] || !r.$sourceDescriptions[t]?.servers?.length))
3111
+ return Ye(r.$sourceDescriptions[t].servers?.[0]);
3112
+ }
3113
+ function Ye(r) {
3114
+ if (r)
3115
+ return {
3116
+ url: r.url,
3117
+ parameters: Object.entries(r.variables || {}).map(([t, e]) => ({
3118
+ in: "path",
3119
+ name: t,
3120
+ value: e.default
3121
+ })).filter(({ value: t }) => !!t)
3122
+ };
3123
+ }
3124
+ function Ga(r, t) {
3125
+ if (ec(r))
3126
+ return {
3127
+ in: r.scheme.in,
3128
+ name: r.scheme.name,
3129
+ value: r.values.apiKey
3130
+ };
3131
+ if (rc(r)) {
3132
+ const { username: e, password: n } = r.values, a = btoa(`${e}:${n}`);
3133
+ return t.secretsSet.add(a), er(`Basic ${a}`);
3134
+ }
3135
+ if (tc(r)) {
3136
+ const { token: e } = r.values;
3137
+ return t.secretsSet.add(e), er(`Bearer ${e}`);
3138
+ }
3139
+ if (Ya(r)) {
3140
+ const { accessToken: e } = r.values;
3141
+ return t.secretsSet.add(e), er(`Bearer ${e}`);
3142
+ }
3143
+ if (Za(r)) {
3144
+ const { accessToken: e } = r.values;
3145
+ return t.secretsSet.add(e), er(`Bearer ${e}`);
3146
+ }
3147
+ }
3148
+ function er(r, t) {
3149
+ return {
3150
+ in: "header",
3151
+ name: "Authorization",
3152
+ value: r
3153
+ };
3154
+ }
3155
+ function Za(r) {
3156
+ return r.scheme.type === "oauth2";
3157
+ }
3158
+ function Ya(r) {
3159
+ return r.scheme.type === "openIdConnect";
3160
+ }
3161
+ function ec(r) {
3162
+ return r.scheme.type === "apiKey";
3163
+ }
3164
+ function rc(r) {
3165
+ return r.scheme.type === "http" && r.scheme.scheme === "basic";
3166
+ }
3167
+ function tc(r) {
3168
+ return r.scheme.type === "http" && r.scheme.scheme === "bearer";
3169
+ }
3170
+ const sc = {
3171
+ apiKey: ["apiKey"],
3172
+ basic: ["username", "password"],
3173
+ digest: ["username", "password"],
3174
+ bearer: ["token"],
3175
+ oauth2: ["accessToken"],
3176
+ openIdConnect: ["accessToken"],
3177
+ mutualTLS: []
3178
+ };
3179
+ function nc({ scheme: r, values: t }) {
3180
+ const e = r.type === "http" ? r.scheme : r.type, n = sc[e];
3181
+ if (!n)
3182
+ throw new Error(`Unsupported security scheme type: ${e}`);
3183
+ for (const a of n)
3184
+ if (!t?.[a])
3185
+ throw new Error(`Missing required value \`${a}\` for ${e} security scheme`);
3186
+ return { scheme: r, values: t };
3187
+ }
3188
+ function oc({ ctx: r, runtimeContext: t, step: e, operation: n, workflowLevelXSecurityParameters: a }) {
3189
+ const c = e["x-security"], l = [...a || [], ...c || []], h = [];
3190
+ for (const d of l) {
3191
+ const m = us({
3192
+ ctx: r,
3193
+ security: d,
3194
+ operation: n
3195
+ });
3196
+ if ("schemeName" in d && !m)
3197
+ throw new Error(`Security scheme "${d.schemeName}" not found`);
3198
+ if (!m)
3199
+ continue;
3200
+ const y = Object.fromEntries(Object.entries(d?.values ?? {}).map(([N, T]) => {
3201
+ const L = oe({
3202
+ payload: T,
3203
+ context: t,
3204
+ logger: r.options.logger
3205
+ });
3206
+ return d.values && (d.values[N] = L), [N, L];
3207
+ })), E = nc({ scheme: m, values: y }), S = Ga(E, r);
3208
+ S && h.push(S);
3209
+ }
3210
+ return h;
3211
+ }
3212
+ async function ic(r, t, e) {
3213
+ const { stepId: n, operationId: a, operationPath: c, "x-operation": f } = t, l = r.workflows.find((x) => x.workflowId === e), h = l && l.parameters || [], d = f ? void 0 : Pi({
3214
+ operationId: a,
3215
+ operationPath: c
3216
+ }, r);
3217
+ let m = "", y;
3218
+ const E = Qa({
3219
+ ctx: r,
3220
+ descriptionName: d?.descriptionName,
3221
+ openapiOperation: d,
3222
+ xOperation: f
3223
+ });
3224
+ if (f)
3225
+ y = f.method;
3226
+ else if (d)
3227
+ m = d?.path, y = d?.method;
3228
+ else
3229
+ throw new Error("No operation found");
3230
+ if (!E && !m.includes("http"))
3231
+ throw new Error("No servers found in API description");
3232
+ if (!y)
3233
+ throw new Error('"method" is required to make a request');
3234
+ const S = d && Ci(d, r.options.logger), {
3235
+ payload: N,
3236
+ // encoding: stepRequestBodyEncoding,
3237
+ contentType: T,
3238
+ replacements: L
3239
+ } = await li(t.requestBody, r), W = N || S?.requestBody, D = T || S?.contentType, P = Xt(
3240
+ // order is important here, the last one wins
3241
+ typeof W == "object" ? [{ in: "header", name: "content-type", value: "application/json" }] : [],
3242
+ E?.parameters || [],
3243
+ S?.contentTypeParameters || [],
3244
+ // if step.parameters is defined, we do not auto-populate parameters from the openapi operation
3245
+ t.parameters ? [] : S?.parameters || [],
3246
+ Qt(h, r),
3247
+ T ? [{ in: "header", name: "content-type", value: T }] : [],
3248
+ Qt(t.parameters || [], r)
3249
+ );
3250
+ r.$steps[n] || (r.$steps[n] = {}), r.$workflows[e].steps[n] || (r.$workflows[e].steps[n] = {}), y?.toLowerCase() === "x-query" && (y = "query"), r.$workflows[e].steps[n].request = {
3251
+ body: W,
3252
+ header: ye(P, "header"),
3253
+ path: ye(P, "path"),
3254
+ query: ye(P, "query"),
3255
+ url: E?.url && m ? `${E?.url}${m}` : E?.url,
3256
+ method: y
3257
+ };
3258
+ const b = {
3259
+ ...r,
3260
+ $inputs: {
3261
+ ...r.$inputs || {},
3262
+ ...r.$workflows[e]?.inputs || {}
3263
+ }
3264
+ }, A = lr({
3265
+ ctx: b,
3266
+ workflowId: e,
3267
+ step: t
3268
+ }), K = l?.["x-security"] || [], F = oc({
3269
+ ctx: b,
3270
+ runtimeContext: A,
3271
+ step: t,
3272
+ operation: d,
3273
+ workflowLevelXSecurityParameters: K
3274
+ }), j = Xt(P, F).map((x) => ({
3275
+ ...x,
3276
+ value: oe({
3277
+ payload: x.value,
3278
+ context: A,
3279
+ logger: r.options.logger
3280
+ })
3281
+ }));
3282
+ for (const x of d?.parameters || []) {
3283
+ const { schema: I, name: B } = x;
3284
+ Be(r, I, ye(P, x.in), [B]);
3285
+ }
3286
+ const z = oe({
3287
+ payload: W,
3288
+ context: A,
3289
+ contentType: D,
3290
+ logger: r.options.logger
3291
+ });
3292
+ if (L && typeof z == "object" && ki({
3293
+ payload: z,
3294
+ replacements: L,
3295
+ expressionContext: A,
3296
+ logger: r.options.logger
3297
+ }), D && d?.requestBody) {
3298
+ const x = Fi(D, d);
3299
+ typeof W == "object" && Be(r, x, W);
3300
+ }
3301
+ return r.$workflows[e].steps[n].request = {
3302
+ body: z,
3303
+ header: ye(j, "header"),
3304
+ path: ye(j, "path"),
3305
+ query: ye(j, "query"),
3306
+ url: E?.url && m ? `${E?.url}${m}` : E?.url,
3307
+ method: y
3308
+ }, {
3309
+ serverUrl: E,
3310
+ path: m,
3311
+ method: y,
3312
+ parameters: ac(j),
3313
+ requestBody: z,
3314
+ openapiOperation: d
3315
+ };
3316
+ }
3317
+ function Xt(...r) {
3318
+ const e = r.flat().filter((n) => "name" in n).reduce((n, a) => {
3319
+ const c = `${a.name}:${a.in}`;
3320
+ return n[c] = a, n;
3321
+ }, {});
3322
+ return Object.values(e);
3323
+ }
3324
+ function ye(r, t) {
3325
+ return r.reduce((e, n) => (n.in === t && "name" in n && (e[n.in === "header" ? n.name.toLowerCase() : n.name] = n.value), e), {});
3326
+ }
3327
+ function Qt(r, t) {
3328
+ return r.map((e) => {
3329
+ const n = We(e, t);
3330
+ if (Mr(n))
3331
+ return n;
3332
+ }).filter((e) => e !== void 0);
3333
+ }
3334
+ function ac(r) {
3335
+ const t = [];
3336
+ for (const e of r)
3337
+ if (e.in === "header" && e.name.toLowerCase() === "cookie") {
3338
+ const n = String(e.value).split(";").map((a) => {
3339
+ const [c, f] = a.split("=");
3340
+ return { name: c, value: f, in: "cookie" };
3341
+ });
3342
+ t.push(...n);
3343
+ } else
3344
+ t.push(e);
3345
+ return t;
3346
+ }
3347
+ class ce {
3348
+ constructor(t) {
3349
+ this.startTime = Date.now(), this.timeout = t;
3350
+ }
3351
+ static getInstance(t) {
3352
+ return ce.instance || (ce.instance = new ce(t)), ce.instance;
3353
+ }
3354
+ static reset() {
3355
+ ce.instance = void 0;
3356
+ }
3357
+ isTimedOut() {
3358
+ return Date.now() - this.startTime > this.timeout;
3359
+ }
3360
+ }
3361
+ async function Br({ step: r, ctx: t, workflowId: e, retriesLeft: n, executedStepsCount: a }) {
3362
+ r = { ...r }, r.retriesLeft = n;
3363
+ const c = t.workflows.find((b) => b.workflowId === e), { stepId: f, onFailure: l, onSuccess: h, workflowId: d, parameters: m } = r, y = (l || c?.failureActions || []).map((b) => We(b, t)), E = (h || c?.successActions || []).map((b) => We(b, t)), S = m?.map((b) => We(b, t));
3364
+ if (d) {
3365
+ const b = t.workflows.find((j) => j.workflowId === d) || fe({ value: d, ctx: t, logger: t.options.logger });
3366
+ if (!b) {
3367
+ const j = {
3368
+ name: V.UNEXPECTED_ERROR,
3369
+ message: `Workflow ${U(d)} not found.`,
3370
+ passed: !1,
3371
+ severity: t.severity.UNEXPECTED_ERROR
3372
+ };
3373
+ r.checks.push(j);
3374
+ return;
3375
+ }
3376
+ const A = await xr(d, b, t, t.options.config);
3377
+ if (S && S.length) {
3378
+ const j = S.filter(ai).reduce((z, x) => {
3379
+ const I = {
3380
+ ...t,
3381
+ $inputs: {
3382
+ ...t.$inputs || {},
3383
+ ...e ? t.$workflows[e]?.inputs || {} : {}
3384
+ }
3385
+ };
3386
+ return z[x.name] = fe({
3387
+ value: x.value,
3388
+ ctx: I,
3389
+ logger: t.options.logger
3390
+ }), z;
3391
+ }, {});
3392
+ A.$workflows[b.workflowId].inputs = {
3393
+ ...A.$workflows[b.workflowId].inputs,
3394
+ ...j
3395
+ };
3396
+ }
3397
+ Jo(f, t.options.logger);
3398
+ const K = await Ue({
3399
+ workflowInput: b,
3400
+ ctx: A,
3401
+ skipLineSeparator: !0,
3402
+ parentStepId: f,
3403
+ invocationContext: `Child workflow of step ${f}`,
3404
+ executedStepsCount: a
3405
+ });
3406
+ t.executedSteps.push(K);
3407
+ const F = {};
3408
+ if (r?.outputs) {
3409
+ try {
3410
+ for (const [j, z] of Object.entries(r.outputs))
3411
+ F[j] = oe({
3412
+ payload: z,
3413
+ context: {
3414
+ $outputs: A.$outputs?.[b.workflowId] || {}
3415
+ },
3416
+ logger: t.options.logger
3417
+ });
3418
+ } catch (j) {
3419
+ const z = {
3420
+ name: V.UNEXPECTED_ERROR,
3421
+ message: j.message,
3422
+ passed: !1,
3423
+ severity: t.severity.UNEXPECTED_ERROR
3424
+ };
3425
+ r.checks.push(z);
3426
+ }
3427
+ t.$steps[f] = {
3428
+ outputs: F
3429
+ }, c?.workflowId && (t.$workflows[c.workflowId].steps[f] = {
3430
+ outputs: F,
3431
+ request: void 0,
3432
+ response: void 0
3433
+ });
3434
+ }
3435
+ return { shouldEnd: !1 };
3436
+ }
3437
+ if (t.executedSteps.push(r), a.value++, a.value > t.options.maxSteps)
3438
+ return r.checks.push({
3439
+ name: V.MAX_STEPS_REACHED_ERROR,
3440
+ message: `Max steps (${t.options.maxSteps}) reached`,
3441
+ passed: !1,
3442
+ severity: t.severity.MAX_STEPS_REACHED_ERROR
3443
+ }), { shouldEnd: !0 };
3444
+ if (t.options.executionTimeout && ce.getInstance(t.options.executionTimeout).isTimedOut())
3445
+ return r.checks.push({
3446
+ name: V.GLOBAL_TIMEOUT_ERROR,
3447
+ message: "Global Respect timer reached",
3448
+ passed: !1,
3449
+ severity: t.severity.GLOBAL_TIMEOUT_ERROR
3450
+ }), { shouldEnd: !0 };
3451
+ if (S && S.length) {
3452
+ const b = S.find((A) => !("in" in We(A, t)));
3453
+ if (b)
3454
+ throw new Error(`Parameter "in" is required for ${f} step parameter ${b.name}`);
3455
+ }
3456
+ let N = !1, T;
3457
+ try {
3458
+ if (!e)
3459
+ throw new Error("Workflow name is required to run a step");
3460
+ T = await ic(t, r, e);
3461
+ const b = await Ja({
3462
+ ctx: t,
3463
+ workflowId: e,
3464
+ step: r,
3465
+ requestData: T
3466
+ });
3467
+ N = Object.values(b).every((A) => A);
3468
+ } catch (b) {
3469
+ r.verboseLog = t.apiClient.getVerboseResponseLogs();
3470
+ const A = {
3471
+ name: V.UNEXPECTED_ERROR,
3472
+ message: b.message,
3473
+ passed: !1,
3474
+ severity: t.severity.UNEXPECTED_ERROR
3475
+ };
3476
+ r.checks.push(A);
3477
+ }
3478
+ const L = t.options.verbose ? t.apiClient.getVerboseLogs() : void 0, W = t.options.verbose ? t.apiClient.getVerboseResponseLogs() : void 0, D = T?.path || T?.serverUrl?.url;
3479
+ if (D ? Xo({
3480
+ testNameToDisplay: `${T?.method.toUpperCase()} ${Lt(D)}${r.stepId ? ` ${Re("- step")} ${Lt(ur(r.stepId))}` : ""}`,
3481
+ checks: r.checks,
3482
+ verboseLogs: L,
3483
+ verboseResponseLogs: W,
3484
+ logger: t.options.logger
3485
+ }) : Qo(r, t.options.logger), !N) {
3486
+ const b = await P(y, "failure", a);
3487
+ if (b?.retriesLeft && b.retriesLeft > 0)
3488
+ return b.stepResult;
3489
+ if (b?.shouldEnd)
3490
+ return { shouldEnd: !0 };
3491
+ }
3492
+ if (E.length && N && (await P(E, "success", a))?.shouldEnd)
3493
+ return { shouldEnd: !0 };
3494
+ async function P(b = [], A, K) {
3495
+ for (const F of b) {
3496
+ const { type: j, criteria: z } = F;
3497
+ if (F.workflowId && F.stepId)
3498
+ throw new Error(`Cannot use both workflowId: ${F.workflowId} and stepId: ${F.stepId} in ${F.type} action`);
3499
+ if (Ds({
3500
+ workflowId: e,
3501
+ step: r,
3502
+ criteria: z,
3503
+ ctx: t
3504
+ }).every((I) => I.passed)) {
3505
+ const I = F.workflowId ? fe({ value: F.workflowId, ctx: t, logger: t.options.logger }) : void 0, B = F.workflowId ? await xr(F.workflowId, I, t, t.options.config) : { ...t, executedSteps: [] }, H = F.stepId ? F.stepId : void 0;
3506
+ if (j === "retry") {
3507
+ const { retryAfter: ee, retryLimit: he = 0 } = F;
3508
+ if (n = n ?? he, r.retriesLeft = n, n === 0)
3509
+ return { retriesLeft: 0, shouldEnd: !1 };
3510
+ if (ee && await Xa(ee), (I || H) && Nt({
3511
+ stepId: f,
3512
+ actionName: F.name,
3513
+ kind: A,
3514
+ logger: t.options.logger
3515
+ }), I) {
3516
+ const ne = await Ue({
3517
+ workflowInput: I,
3518
+ ctx: B,
3519
+ skipLineSeparator: !0,
3520
+ invocationContext: `Retry action for step ${f}`,
3521
+ executedStepsCount: K,
3522
+ retriesLeft: n - 1
3523
+ });
3524
+ t.executedSteps.push(ne);
3525
+ } else if (H) {
3526
+ const ne = c?.steps.find((re) => re.stepId === H);
3527
+ if (!ne)
3528
+ throw new Error(`Step ${H} not found in workflow ${e}`);
3529
+ await Br({
3530
+ step: ne,
3531
+ ctx: B,
3532
+ workflowId: e,
3533
+ executedStepsCount: K
3534
+ });
3535
+ }
3536
+ return t.options.logger.output(`
3537
+ Retrying step ${Re(f)} (${he - n + 1}/${he})
3538
+ `), {
3539
+ stepResult: await Br({
3540
+ step: r,
3541
+ ctx: t,
3542
+ workflowId: e,
3543
+ retriesLeft: n - 1,
3544
+ executedStepsCount: K
3545
+ }),
3546
+ retriesLeft: n
3547
+ };
3548
+ } else {
3549
+ if (j === "end")
3550
+ return { shouldEnd: !0 };
3551
+ if (j === "goto") {
3552
+ if (!I && !H)
3553
+ throw new Error("Either workflowId or stepId must be provided in goto action");
3554
+ (I || H) && Nt({
3555
+ stepId: f,
3556
+ actionName: F.name,
3557
+ kind: A,
3558
+ logger: t.options.logger
3559
+ });
3560
+ const ee = await Ue({
3561
+ workflowInput: I || c,
3562
+ ctx: B,
3563
+ fromStepId: H,
3564
+ skipLineSeparator: !0,
3565
+ invocationContext: `Goto from step ${f}`,
3566
+ executedStepsCount: K
3567
+ });
3568
+ return t.executedSteps.push(ee), { shouldEnd: !0 };
3569
+ }
3570
+ }
3571
+ break;
3572
+ }
3573
+ }
3574
+ if (A === "failure")
3575
+ return { shouldEnd: !0 };
3576
+ }
3577
+ }
3578
+ function ar(r) {
3579
+ if (r) {
3580
+ if (typeof r == "string")
3581
+ return r.includes(",") ? r.split(",").map((t) => t.trim()) : [r];
3582
+ if (Array.isArray(r)) {
3583
+ const t = [];
3584
+ for (const e of r)
3585
+ e.includes(",") ? t.push(...e.split(",").map((n) => n.trim())) : t.push(e);
3586
+ return t;
3587
+ }
3588
+ }
3589
+ }
3590
+ async function cc({ options: r, collectSpecData: t, executedStepsCount: e }) {
3591
+ const n = {
3592
+ ...r,
3593
+ filePath: r.file,
3594
+ metadata: { ...r }
3595
+ }, a = await ds({
3596
+ filePath: r.file,
3597
+ collectSpecData: t,
3598
+ version: r?.version,
3599
+ logger: r.logger,
3600
+ externalRefResolver: r?.externalRefResolver,
3601
+ skipLint: r?.skipLint
3602
+ });
3603
+ return await fc({
3604
+ testDescription: a,
3605
+ options: n,
3606
+ executedStepsCount: e
3607
+ });
3608
+ }
3609
+ async function fc({ testDescription: r, options: t, executedStepsCount: e }) {
3610
+ const n = new Xi({
3611
+ fetch: t.fetch
3612
+ }), a = await gs(r, t, n), c = ar(t.workflow), f = ar(t.skip), l = ta({
3613
+ workflows: a.workflows,
3614
+ workflowsToRun: c,
3615
+ workflowsToSkip: f,
3616
+ logger: a.options.logger
3617
+ }), h = [];
3618
+ for (const d of l) {
3619
+ a.executedSteps = [], d.dependsOn?.length && await uc({ workflow: d, ctx: a, config: t.config, executedStepsCount: e });
3620
+ const m = await Ue({
3621
+ workflowInput: d.workflowId,
3622
+ ctx: a,
3623
+ executedStepsCount: e
3624
+ });
3625
+ h.push(m);
3626
+ }
3627
+ return { ctx: a, executedWorkflows: h };
3628
+ }
3629
+ async function Ue({ workflowInput: r, ctx: t, fromStepId: e, skipLineSeparator: n, parentStepId: a, invocationContext: c, executedStepsCount: f, retriesLeft: l }) {
3630
+ const { logger: h } = t.options, d = performance.now(), m = Y.basename(t.options.filePath), y = typeof r == "string" ? t.workflows.find((D) => D.workflowId === r) : r;
3631
+ if (!y)
3632
+ throw new Error(`
3633
+ ${Re("Workflow")} ${r} ${Re("not found")}
3634
+ `);
3635
+ const E = y.inputs;
3636
+ if (E) {
3637
+ const D = t.$workflows[y.workflowId].inputs;
3638
+ t.$workflows[y.workflowId].inputs = hs({
3639
+ inputs: D,
3640
+ workflowInputSchema: E,
3641
+ env: t.options.envVariables
3642
+ });
3643
+ }
3644
+ const S = y.workflowId;
3645
+ e || Zo({
3646
+ fileName: m,
3647
+ workflowName: S,
3648
+ skipLineSeparator: n,
3649
+ logger: h
3650
+ });
3651
+ const N = e ? y.steps.findIndex((D) => D.stepId === e) : 0, T = y.steps.slice(N);
3652
+ t.$steps = {};
3653
+ for (const D of T)
3654
+ try {
3655
+ if ((await Br({
3656
+ step: D,
3657
+ ctx: t,
3658
+ workflowId: S,
3659
+ executedStepsCount: f,
3660
+ retriesLeft: l
3661
+ }))?.shouldEnd)
3662
+ break;
3663
+ } catch (P) {
3664
+ const b = {
3665
+ name: V.UNEXPECTED_ERROR,
3666
+ message: P.message,
3667
+ passed: !1,
3668
+ severity: t.severity.UNEXPECTED_ERROR
3669
+ };
3670
+ D.checks.push(b), t.executedSteps.push(D);
3671
+ }
3672
+ const L = y.steps.some((D) => D.checks?.some((P) => !P.passed && P.name == V.GLOBAL_TIMEOUT_ERROR));
3673
+ if (y.outputs && S && !L) {
3674
+ t.$outputs || (t.$outputs = {}), t.$outputs[S] || (t.$outputs[S] = {});
3675
+ const D = lr({
3676
+ ctx: {
3677
+ ...t,
3678
+ $inputs: {
3679
+ ...t.$inputs || {},
3680
+ ...t.$workflows[S]?.inputs || {}
3681
+ }
3682
+ },
3683
+ workflowId: S
3684
+ }), P = {};
3685
+ for (const b of Object.keys(y.outputs))
3686
+ try {
3687
+ P[b] = oe({
3688
+ payload: y.outputs[b],
3689
+ context: D,
3690
+ logger: t.options.logger
3691
+ });
3692
+ } catch (A) {
3693
+ throw new Error(`Failed to resolve output "${b}" in workflow "${S}": ${A.message}`);
3694
+ }
3695
+ t.$outputs[S] = P, t.$workflows[S].outputs = P;
3696
+ }
3697
+ y.time = Math.ceil(performance.now() - d), h.printNewLine();
3698
+ const W = performance.now();
3699
+ return {
3700
+ type: "workflow",
3701
+ invocationContext: c,
3702
+ workflowId: S,
3703
+ stepId: a,
3704
+ startTime: d,
3705
+ endTime: W,
3706
+ totalTimeMs: dc(t.executedSteps),
3707
+ executedSteps: t.executedSteps,
3708
+ ctx: t,
3709
+ globalTimeoutError: L
3710
+ };
3711
+ }
3712
+ async function uc({ workflow: r, ctx: t, config: e, executedStepsCount: n }) {
3713
+ if (!r.dependsOn?.length)
3714
+ return;
3715
+ const a = await Promise.all(r.dependsOn.map(async (l) => {
3716
+ const h = fe({
3717
+ value: l,
3718
+ ctx: t,
3719
+ logger: t.options.logger
3720
+ }), d = await xr(l, h, t, e);
3721
+ return Go(r.workflowId, t.options.logger), Ue({
3722
+ workflowInput: h,
3723
+ ctx: d,
3724
+ skipLineSeparator: !0,
3725
+ executedStepsCount: n
3726
+ });
3727
+ }));
3728
+ if (Vr(a).steps.failed > 0)
3729
+ throw new Error("Dependent workflows has failed steps");
3730
+ }
3731
+ async function xr(r, t, e, n) {
3732
+ const a = r && r.startsWith("$sourceDescriptions.") && r.split(".")[1], c = a && e.$sourceDescriptions[a];
3733
+ return c ? await gs(c, {
3734
+ ...e.options,
3735
+ filePath: lc(a, e.sourceDescriptions, e.options),
3736
+ workflow: [t.workflowId],
3737
+ skip: void 0,
3738
+ config: n
3739
+ }, e.apiClient) : {
3740
+ ...e,
3741
+ executedSteps: []
3742
+ };
3743
+ }
3744
+ function lc(r, t, e) {
3745
+ const n = t && t.find(({ name: a }) => a === r);
3746
+ if (n) {
3747
+ if (n.type === "openapi")
3748
+ return n.url;
3749
+ if (n.type === "arazzo")
3750
+ return Y.resolve(Y.dirname(e.filePath), n.url);
3751
+ throw new Error(`Unknown source description type ${n.type}`);
3752
+ } else return "";
3753
+ }
3754
+ function pc(r) {
3755
+ return "type" in r && r.type === "workflow";
3756
+ }
3757
+ function dc(r) {
3758
+ let t = 0;
3759
+ for (const e of r)
3760
+ pc(e) ? t += e.totalTimeMs : t += e.response?.time || 0;
3761
+ return t;
3762
+ }
3763
+ async function mc(r) {
3764
+ const t = { value: 0 }, { files: e, executionTimeout: n, collectSpecData: a } = r;
3765
+ n && (ce.reset(), ce.getInstance(n));
3766
+ const c = [], f = [];
3767
+ for (const l of e) {
3768
+ const h = await hc({
3769
+ options: { ...r, file: l },
3770
+ startedAt: performance.now(),
3771
+ collectSpecData: a,
3772
+ executedStepsCount: t
3773
+ });
3774
+ c.push(h.hasProblems), f.push(h);
3775
+ }
3776
+ return f;
3777
+ }
3778
+ async function hc({ options: r, startedAt: t, executedStepsCount: e, collectSpecData: n }) {
3779
+ const a = await cc({ options: r, collectSpecData: n, executedStepsCount: e }), { executedWorkflows: c, ctx: f } = a, l = Vr(c), h = l.workflows.failed > 0, d = l.workflows.warnings > 0, m = c.some((y) => y.globalTimeoutError);
3780
+ return (l.steps.failed > 0 || l.steps.warnings > 0 || l.steps.skipped > 0) && Ui(c, r.logger), ji({ startedAt: t, workflows: c, options: r }), {
3781
+ hasProblems: h,
3782
+ hasWarnings: d,
3783
+ file: r.file,
3784
+ executedWorkflows: c,
3785
+ options: r,
3786
+ ctx: f,
3787
+ totalTimeMs: performance.now() - t,
3788
+ totalRequests: l.totalRequests,
3789
+ globalTimeoutError: m,
3790
+ ...f.noSecretsMasking && { secretValues: Array.from(f.secretsSet) || [] }
3791
+ };
3792
+ }
3793
+ export {
3794
+ Ze as RESET_ESCAPE_CODE,
3795
+ Vr as calculateTotals,
3796
+ ge as conditionallyMaskSecrets,
3797
+ Bi as maskSecrets,
3798
+ Io as parseRuntimeExpression,
3799
+ mc as run
3800
+ };