@redocly/replay 0.20.0-next.2 → 0.20.0-next.4

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