@redocly/replay 0.18.0-next.1 → 0.18.0-next.11

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