@calltelemetry/cli 0.4.17 → 0.4.19
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.
- package/dist/index.js +1 -1
- package/dist/lib/curri-probe.d.ts +28 -0
- package/dist/lib/curri-probe.d.ts.map +1 -0
- package/dist/lib/curri-probe.js +61 -0
- package/dist/lib/curri-probe.js.map +1 -0
- package/dist/lib/loadtest.d.ts +3 -2
- package/dist/lib/loadtest.d.ts.map +1 -1
- package/dist/lib/loadtest.js +3 -2
- package/dist/lib/loadtest.js.map +1 -1
- package/dist/ui/views/LoadTestProbeView.d.ts +9 -0
- package/dist/ui/views/LoadTestProbeView.d.ts.map +1 -0
- package/dist/ui/views/LoadTestProbeView.js +53 -0
- package/dist/ui/views/LoadTestProbeView.js.map +1 -0
- package/dist/ui/views/LoadTestView.d.ts.map +1 -1
- package/dist/ui/views/LoadTestView.js +7 -0
- package/dist/ui/views/LoadTestView.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Send a single CURRI probe request and return the raw HTTP response details. */
|
|
2
|
+
export interface CurriProbeResult {
|
|
3
|
+
/** HTTP status code (0 if connection failed) */
|
|
4
|
+
statusCode: number;
|
|
5
|
+
/** HTTP status text */
|
|
6
|
+
statusText: string;
|
|
7
|
+
/** Response headers as key-value pairs */
|
|
8
|
+
headers: Record<string, string>;
|
|
9
|
+
/** Raw response body */
|
|
10
|
+
body: string;
|
|
11
|
+
/** Request URL */
|
|
12
|
+
requestUrl: string;
|
|
13
|
+
/** Request body (XML) */
|
|
14
|
+
requestBody: string;
|
|
15
|
+
/** Round-trip time in ms */
|
|
16
|
+
latencyMs: number;
|
|
17
|
+
/** Connection error message, if any */
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function curriProbe(opts: {
|
|
21
|
+
url: string;
|
|
22
|
+
apiKey: string;
|
|
23
|
+
callingNumber: string;
|
|
24
|
+
calledNumber: string;
|
|
25
|
+
deviceName: string;
|
|
26
|
+
triggerType: string;
|
|
27
|
+
}): Promise<CurriProbeResult>;
|
|
28
|
+
//# sourceMappingURL=curri-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curri-probe.d.ts","sourceRoot":"","sources":["../../src/lib/curri-probe.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAMlF,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgE5B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** Send a single CURRI probe request and return the raw HTTP response details. */
|
|
2
|
+
import https from 'node:https';
|
|
3
|
+
import http from 'node:http';
|
|
4
|
+
import { buildCurriXmlFromConfig } from './curri-xml.js';
|
|
5
|
+
export async function curriProbe(opts) {
|
|
6
|
+
const targetUrl = `${opts.url}/api/policy?api_key=${opts.apiKey}`;
|
|
7
|
+
const xmlBody = buildCurriXmlFromConfig({
|
|
8
|
+
callingNumber: opts.callingNumber,
|
|
9
|
+
calledNumber: opts.calledNumber,
|
|
10
|
+
deviceName: opts.deviceName,
|
|
11
|
+
triggerType: opts.triggerType,
|
|
12
|
+
});
|
|
13
|
+
const start = performance.now();
|
|
14
|
+
const parsed = new URL(targetUrl);
|
|
15
|
+
const isHttps = parsed.protocol === 'https:';
|
|
16
|
+
const transport = isHttps ? https : http;
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
const req = transport.request(targetUrl, {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: { 'content-type': 'application/xml' },
|
|
21
|
+
rejectUnauthorized: false,
|
|
22
|
+
}, (res) => {
|
|
23
|
+
const chunks = [];
|
|
24
|
+
res.on('data', (chunk) => chunks.push(chunk));
|
|
25
|
+
res.on('end', () => {
|
|
26
|
+
const latencyMs = performance.now() - start;
|
|
27
|
+
const body = Buffer.concat(chunks).toString('utf-8');
|
|
28
|
+
const headers = {};
|
|
29
|
+
for (const [key, val] of Object.entries(res.headers)) {
|
|
30
|
+
if (val)
|
|
31
|
+
headers[key] = Array.isArray(val) ? val.join(', ') : val;
|
|
32
|
+
}
|
|
33
|
+
resolve({
|
|
34
|
+
statusCode: res.statusCode ?? 0,
|
|
35
|
+
statusText: res.statusMessage ?? '',
|
|
36
|
+
headers,
|
|
37
|
+
body,
|
|
38
|
+
requestUrl: targetUrl,
|
|
39
|
+
requestBody: xmlBody,
|
|
40
|
+
latencyMs,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
req.on('error', (err) => {
|
|
45
|
+
const latencyMs = performance.now() - start;
|
|
46
|
+
resolve({
|
|
47
|
+
statusCode: 0,
|
|
48
|
+
statusText: 'Connection Failed',
|
|
49
|
+
headers: {},
|
|
50
|
+
body: '',
|
|
51
|
+
requestUrl: targetUrl,
|
|
52
|
+
requestBody: xmlBody,
|
|
53
|
+
latencyMs,
|
|
54
|
+
error: err.message,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
req.write(xmlBody);
|
|
58
|
+
req.end();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=curri-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curri-probe.js","sourceRoot":"","sources":["../../src/lib/curri-probe.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/loadtest.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** CURRI load test engine wrapping autocannon. */
|
|
2
2
|
import type { LoadTestConfig, LoadTestResults, LoadTestSnapshot } from './loadtest-stats.js';
|
|
3
3
|
export type { LoadTestConfig, LoadTestResults, LoadTestSnapshot } from './loadtest-stats.js';
|
|
4
|
-
/** Default CURRI endpoint URL.
|
|
5
|
-
|
|
4
|
+
/** Default CURRI endpoint URL. Caddy routes HTTP /api/* to the CURRI Phoenix endpoint (port 4080).
|
|
5
|
+
* HTTPS /api* goes to the main web endpoint (port 4000) which does NOT have CURRI routes. */
|
|
6
|
+
export declare const DEFAULT_CURRI_URL = "http://127.0.0.1";
|
|
6
7
|
export interface LoadTestHandle {
|
|
7
8
|
/** Promise that resolves when the test completes. */
|
|
8
9
|
promise: Promise<LoadTestResults>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadtest.d.ts","sourceRoot":"","sources":["../../src/lib/loadtest.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAoB,MAAM,qBAAqB,CAAC;AAO/G,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7F
|
|
1
|
+
{"version":3,"file":"loadtest.d.ts","sourceRoot":"","sources":["../../src/lib/loadtest.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAIlD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAoB,MAAM,qBAAqB,CAAC;AAO/G,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7F;8FAC8F;AAC9F,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAKpD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,gCAAgC;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAC/C,cAAc,CAoOhB"}
|
package/dist/lib/loadtest.js
CHANGED
|
@@ -5,8 +5,9 @@ import { MAX_RATE_HISTORY, percentile } from './loadtest-stats.js';
|
|
|
5
5
|
// autocannon is CJS — use createRequire for ESM compatibility
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
7
|
const autocannon = require('autocannon');
|
|
8
|
-
/** Default CURRI endpoint URL.
|
|
9
|
-
|
|
8
|
+
/** Default CURRI endpoint URL. Caddy routes HTTP /api/* to the CURRI Phoenix endpoint (port 4080).
|
|
9
|
+
* HTTPS /api* goes to the main web endpoint (port 4000) which does NOT have CURRI routes. */
|
|
10
|
+
export const DEFAULT_CURRI_URL = 'http://127.0.0.1';
|
|
10
11
|
/** Size of the sliding window for live latency computation. */
|
|
11
12
|
const LATENCY_WINDOW_SIZE = 2000;
|
|
12
13
|
/** Start a CURRI load test with live progress callbacks. */
|
package/dist/lib/loadtest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadtest.js","sourceRoot":"","sources":["../../src/lib/loadtest.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnE,8DAA8D;AAC9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAgC,CAAC;AAIxE
|
|
1
|
+
{"version":3,"file":"loadtest.js","sourceRoot":"","sources":["../../src/lib/loadtest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LoadTestUserConfig } from './LoadTestConfigView.js';
|
|
2
|
+
interface LoadTestProbeViewProps {
|
|
3
|
+
userConfig: LoadTestUserConfig;
|
|
4
|
+
onContinue: () => void;
|
|
5
|
+
onBack: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function LoadTestProbeView({ userConfig, onContinue, onBack }: LoadTestProbeViewProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=LoadTestProbeView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadTestProbeView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/LoadTestProbeView.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,UAAU,sBAAsB;IAC9B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AA+ED,wBAAgB,iBAAiB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,sBAAsB,2CA0C3F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
import { AppShell, Section, Spinner, StatusBox } from '../components/index.js';
|
|
4
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
5
|
+
import { curriProbe } from '../../lib/curri-probe.js';
|
|
6
|
+
function statusColor(code) {
|
|
7
|
+
if (code >= 200 && code < 300)
|
|
8
|
+
return 'green';
|
|
9
|
+
if (code >= 300 && code < 400)
|
|
10
|
+
return 'yellow';
|
|
11
|
+
return 'red';
|
|
12
|
+
}
|
|
13
|
+
function ProbeResults({ result }) {
|
|
14
|
+
const bodyPreview = result.body.length > 2000
|
|
15
|
+
? result.body.slice(0, 2000) + '\n... (truncated)'
|
|
16
|
+
: result.body;
|
|
17
|
+
const isSuccess = result.statusCode >= 200 && result.statusCode < 300;
|
|
18
|
+
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, children: "HTTP " }), _jsxs(Text, { bold: true, color: statusColor(result.statusCode), children: [result.statusCode, " ", result.statusText] }), _jsx(Text, { dimColor: true, children: ` (${result.latencyMs.toFixed(0)}ms)` })] }), result.error && (_jsx(Box, { marginBottom: 1, children: _jsx(StatusBox, { variant: "error", title: "Connection Error", lines: [result.error] }) })), _jsx(Text, { bold: true, underline: true, children: "Request" }), _jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["POST ", result.requestUrl] }), _jsx(Text, { dimColor: true, children: "Content-Type: application/xml" })] }), _jsx(Text, { bold: true, underline: true, children: "Response Headers" }), _jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [Object.entries(result.headers).map(([key, val]) => (_jsxs(Text, { children: [_jsxs(Text, { dimColor: true, children: [key, ": "] }), _jsx(Text, { children: val })] }, key))), Object.keys(result.headers).length === 0 && (_jsx(Text, { dimColor: true, children: "(none)" }))] }), _jsx(Text, { bold: true, underline: true, children: "Response Body" }), _jsx(Box, { marginBottom: 1, flexDirection: "column", children: bodyPreview ? (_jsx(Text, { children: bodyPreview })) : (_jsx(Text, { dimColor: true, children: "(empty)" })) }), isSuccess ? (_jsx(StatusBox, { variant: "success", title: "CURRI endpoint is responding", lines: ['Press Enter to start load test, or q to go back.'] })) : (_jsx(StatusBox, { variant: "error", title: "CURRI endpoint returned an error", lines: [
|
|
19
|
+
`HTTP ${result.statusCode} — the load test will likely show 100% errors.`,
|
|
20
|
+
'Check the API key, endpoint URL, and policy configuration.',
|
|
21
|
+
'',
|
|
22
|
+
'Press Enter to start load test anyway, or q to go back.',
|
|
23
|
+
] }))] }));
|
|
24
|
+
}
|
|
25
|
+
export function LoadTestProbeView({ userConfig, onContinue, onBack }) {
|
|
26
|
+
const probeTask = useAsyncTask(async () => {
|
|
27
|
+
return curriProbe({
|
|
28
|
+
url: userConfig.url,
|
|
29
|
+
apiKey: userConfig.policy.api_key,
|
|
30
|
+
callingNumber: userConfig.callingNumber,
|
|
31
|
+
calledNumber: userConfig.calledNumber,
|
|
32
|
+
deviceName: userConfig.deviceName,
|
|
33
|
+
triggerType: userConfig.triggerType,
|
|
34
|
+
});
|
|
35
|
+
}, true);
|
|
36
|
+
useInput((input, key) => {
|
|
37
|
+
if (probeTask.status === 'done') {
|
|
38
|
+
if (key.return) {
|
|
39
|
+
onContinue();
|
|
40
|
+
}
|
|
41
|
+
else if (input === 'q' || key.escape) {
|
|
42
|
+
onBack();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (probeTask.status === 'error') {
|
|
46
|
+
if (input === 'q' || key.escape) {
|
|
47
|
+
onBack();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return (_jsx(AppShell, { command: "ct loadtest", onBack: onBack, children: _jsxs(Section, { title: `CURRI Probe — ${userConfig.policy.name}`, children: [probeTask.status === 'pending' && (_jsx(Spinner, { label: `Sending probe to ${userConfig.url}...` })), probeTask.status === 'error' && (_jsx(StatusBox, { variant: "error", title: "Probe failed", lines: [probeTask.error?.message ?? 'Unknown error'] })), probeTask.status === 'done' && probeTask.data && (_jsx(ProbeResults, { result: probeTask.data }))] }) }));
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=LoadTestProbeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadTestProbeView.js","sourceRoot":"","sources":["../../../src/ui/views/LoadTestProbeView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadTestView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/LoadTestView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LoadTestView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/LoadTestView.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAMtF,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,iBAAiB,kDA0ErE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useCallback } from 'react';
|
|
3
3
|
import { LoadTestConfigView } from './LoadTestConfigView.js';
|
|
4
|
+
import { LoadTestProbeView } from './LoadTestProbeView.js';
|
|
4
5
|
import { LoadTestRunView } from './LoadTestRunView.js';
|
|
5
6
|
import { LoadTestSummaryView } from './LoadTestSummaryView.js';
|
|
6
7
|
import { useApp } from 'ink';
|
|
@@ -11,6 +12,9 @@ export function LoadTestView({ onBack, cliOptions }) {
|
|
|
11
12
|
const [results, setResults] = useState(null);
|
|
12
13
|
const handleStart = useCallback((config) => {
|
|
13
14
|
setUserConfig(config);
|
|
15
|
+
setPhase('probe');
|
|
16
|
+
}, []);
|
|
17
|
+
const handleProbeComplete = useCallback(() => {
|
|
14
18
|
setPhase('running');
|
|
15
19
|
}, []);
|
|
16
20
|
const handleComplete = useCallback((res) => {
|
|
@@ -32,6 +36,9 @@ export function LoadTestView({ onBack, cliOptions }) {
|
|
|
32
36
|
if (phase === 'config') {
|
|
33
37
|
return (_jsx(LoadTestConfigView, { onBack: handleBack, onStart: handleStart, cliOptions: cliOptions }));
|
|
34
38
|
}
|
|
39
|
+
if (phase === 'probe' && userConfig) {
|
|
40
|
+
return (_jsx(LoadTestProbeView, { userConfig: userConfig, onContinue: handleProbeComplete, onBack: () => setPhase('config') }));
|
|
41
|
+
}
|
|
35
42
|
if (phase === 'running' && userConfig) {
|
|
36
43
|
return (_jsx(LoadTestRunView, { userConfig: userConfig, onComplete: handleComplete, onBack: handleBack }));
|
|
37
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadTestView.js","sourceRoot":"","sources":["../../../src/ui/views/LoadTestView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAS7B,MAAM,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAqB;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,QAAQ,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA4B,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,MAA0B,EAAE,EAAE;QAC7D,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,GAAoB,EAAE,EAAE;QAC1D,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEnB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,kBAAkB,IACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,UAAU,GACtB,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,UAAU,EAAE,CAAC;QACtC,OAAO,CACL,KAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,UAAU,GAClB,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;QACnC,OAAO,CACL,KAAC,mBAAmB,IAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GAClB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"LoadTestView.js","sourceRoot":"","sources":["../../../src/ui/views/LoadTestView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAS7B,MAAM,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAqB;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,QAAQ,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA4B,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,MAA0B,EAAE,EAAE;QAC7D,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,GAAoB,EAAE,EAAE;QAC1D,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;QACX,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEnB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,kBAAkB,IACjB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,UAAU,GACtB,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC;QACpC,OAAO,CACL,KAAC,iBAAiB,IAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAChC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,UAAU,EAAE,CAAC;QACtC,OAAO,CACL,KAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,UAAU,GAClB,CACH,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;QACnC,OAAO,CACL,KAAC,mBAAmB,IAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GAClB,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|