mmt-testlight 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadTestFile = loadTestFile;
7
+ exports.extractFlow = extractFlow;
8
+ exports.summarize = summarize;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const js_yaml_1 = __importDefault(require("js-yaml"));
12
+ function loadTestFile(filePath) {
13
+ const full = path_1.default.resolve(process.cwd(), filePath);
14
+ if (!fs_1.default.existsSync(full)) {
15
+ throw new Error(`File not found: ${full}`);
16
+ }
17
+ const txt = fs_1.default.readFileSync(full, 'utf8');
18
+ if (/(\.ya?ml|\.mmt)$/i.test(full)) {
19
+ return js_yaml_1.default.load(txt);
20
+ }
21
+ if (/\.json$/i.test(full)) {
22
+ return JSON.parse(txt);
23
+ }
24
+ try {
25
+ return js_yaml_1.default.load(txt);
26
+ }
27
+ catch {
28
+ return JSON.parse(txt);
29
+ }
30
+ }
31
+ function extractFlow(obj) {
32
+ if (Array.isArray(obj?.stages)) {
33
+ return { steps: [], stages: obj.stages };
34
+ }
35
+ if (Array.isArray(obj?.steps)) {
36
+ return { steps: obj.steps };
37
+ }
38
+ return { steps: [] };
39
+ }
40
+ function summarize(obj) {
41
+ const { steps, stages } = extractFlow(obj);
42
+ return stages ? `stages: ${stages.length}` : `steps: ${steps.length}`;
43
+ }
44
+ //# sourceMappingURL=loadTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTest.js","sourceRoot":"","sources":["../src/loadTest.ts"],"names":[],"mappings":";;;;;AAKA,oCAiBC;AAED,kCAQC;AAED,8BAGC;AArCD,4CAAoB;AACpB,gDAAwB;AACxB,sDAA2B;AAG3B,SAAgB,YAAY,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,iBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,iBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,GAAQ;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACvB,CAAC;AAED,SAAgB,SAAS,CAAC,GAAQ;IAChC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.startMockServerFromPath = startMockServerFromPath;
40
+ exports.stopAllServers = stopAllServers;
41
+ /**
42
+ * CLI mock server runner – starts HTTP/HTTPS mock servers from .mmt server files.
43
+ * Mirrors the functionality in src/mmtAPI/mockRunner.ts but without VS Code dependencies.
44
+ */
45
+ const fs_1 = __importDefault(require("fs"));
46
+ const http_1 = __importDefault(require("http"));
47
+ const https_1 = __importDefault(require("https"));
48
+ const path_1 = __importDefault(require("path"));
49
+ const js_yaml_1 = __importDefault(require("js-yaml"));
50
+ const mmtcore = __importStar(require("mmt-core"));
51
+ const { mockParsePack, mockServer, variableReplacer } = mmtcore;
52
+ /** Track active servers so we can clean them all up at exit. */
53
+ const activeServers = new Map();
54
+ function resolveFilePath(relative, basePath) {
55
+ if (path_1.default.isAbsolute(relative)) {
56
+ return relative;
57
+ }
58
+ return path_1.default.resolve(path_1.default.dirname(basePath), relative);
59
+ }
60
+ /**
61
+ * Start a mock server from a .mmt server file.
62
+ * Returns a cleanup function that stops the server.
63
+ */
64
+ async function startMockServerFromPath(filePath, envVars = {}) {
65
+ // Stop existing server on this path if any
66
+ const existing = activeServers.get(filePath);
67
+ if (existing) {
68
+ existing.dispose();
69
+ }
70
+ const rawContent = fs_1.default.readFileSync(filePath, 'utf-8');
71
+ let parsed;
72
+ try {
73
+ parsed = js_yaml_1.default.load(rawContent);
74
+ }
75
+ catch (err) {
76
+ throw new Error(`Mock server: YAML parse error in ${path_1.default.basename(filePath)}: ${err.message}`);
77
+ }
78
+ const { data, errors } = mockParsePack.parseMockData(parsed);
79
+ if (errors.length > 0 || !data) {
80
+ const msg = errors.map((e) => e.message).join('; ');
81
+ throw new Error(`Mock server validation errors in ${path_1.default.basename(filePath)}: ${msg}`);
82
+ }
83
+ // Check if a server is already running on this port
84
+ for (const [, handle] of activeServers) {
85
+ if (handle.port === data.port) {
86
+ // Server already running on this port — return a no‑op cleanup
87
+ return () => { };
88
+ }
89
+ }
90
+ // Create token resolver
91
+ const tokenResolver = (value) => {
92
+ variableReplacer.resetRandomTokenCache();
93
+ variableReplacer.resetCurrentTokenCache();
94
+ return variableReplacer.resolveEmbeddedTokens(value, envVars);
95
+ };
96
+ // Resolve tokens in global headers
97
+ if (data.headers) {
98
+ for (const [k, v] of Object.entries(data.headers)) {
99
+ if (typeof v === 'string') {
100
+ data.headers[k] = String(variableReplacer.resolveEmbeddedTokens(v, envVars));
101
+ }
102
+ }
103
+ }
104
+ // Build the router
105
+ const router = mockServer.createMockRouter(data, tokenResolver);
106
+ const requestHandler = (req, res) => {
107
+ const method = (req.method || 'GET').toLowerCase();
108
+ const urlStr = req.url || '/';
109
+ // Handle CORS preflight
110
+ if (data.cors) {
111
+ res.setHeader('Access-Control-Allow-Origin', '*');
112
+ res.setHeader('Access-Control-Allow-Methods', '*');
113
+ res.setHeader('Access-Control-Allow-Headers', '*');
114
+ if (method === 'options') {
115
+ res.statusCode = 204;
116
+ res.end();
117
+ return;
118
+ }
119
+ }
120
+ let body = '';
121
+ req.on('data', (chunk) => { body += chunk; });
122
+ req.on('end', async () => {
123
+ let pathname = urlStr;
124
+ const queryObj = {};
125
+ const qIdx = urlStr.indexOf('?');
126
+ if (qIdx >= 0) {
127
+ pathname = urlStr.slice(0, qIdx);
128
+ const searchParams = new URLSearchParams(urlStr.slice(qIdx + 1));
129
+ searchParams.forEach((v, k) => { queryObj[k] = v; });
130
+ }
131
+ let parsedBody;
132
+ try {
133
+ parsedBody = JSON.parse(body);
134
+ }
135
+ catch {
136
+ parsedBody = body || undefined;
137
+ }
138
+ const mockReq = {
139
+ method,
140
+ path: pathname,
141
+ headers: (req.headers || {}),
142
+ query: queryObj,
143
+ body: parsedBody,
144
+ };
145
+ let mockRes;
146
+ try {
147
+ mockRes = router(mockReq);
148
+ }
149
+ catch (err) {
150
+ res.statusCode = 500;
151
+ res.end(JSON.stringify({ error: 'Mock router error', message: err.message }));
152
+ return;
153
+ }
154
+ // Apply delay
155
+ if (mockRes.delay && mockRes.delay > 0) {
156
+ await new Promise(resolve => setTimeout(resolve, mockRes.delay));
157
+ }
158
+ // Resolve tokens in response headers per-request
159
+ if (mockRes.headers) {
160
+ for (const [k, v] of Object.entries(mockRes.headers)) {
161
+ if (typeof v === 'string') {
162
+ res.setHeader(k, String(variableReplacer.resolveEmbeddedTokens(v, envVars)));
163
+ }
164
+ else {
165
+ res.setHeader(k, v);
166
+ }
167
+ }
168
+ }
169
+ res.statusCode = mockRes.status;
170
+ const responseBody = mockRes.body !== undefined ? (typeof mockRes.body === 'string' ? mockRes.body : JSON.stringify(mockRes.body)) : '';
171
+ res.end(responseBody);
172
+ });
173
+ };
174
+ // Create server based on protocol
175
+ let server;
176
+ const protocol = data.protocol || 'http';
177
+ if (protocol === 'https' && data.tls) {
178
+ const certPath = resolveFilePath(data.tls.cert, filePath);
179
+ const keyPath = resolveFilePath(data.tls.key, filePath);
180
+ const tlsOptions = {
181
+ cert: fs_1.default.readFileSync(certPath),
182
+ key: fs_1.default.readFileSync(keyPath),
183
+ };
184
+ if (data.tls.ca) {
185
+ tlsOptions.ca = fs_1.default.readFileSync(resolveFilePath(data.tls.ca, filePath));
186
+ }
187
+ if (data.tls.requestCert) {
188
+ tlsOptions.requestCert = true;
189
+ tlsOptions.rejectUnauthorized = false;
190
+ }
191
+ server = https_1.default.createServer(tlsOptions, requestHandler);
192
+ }
193
+ else {
194
+ server = http_1.default.createServer(requestHandler);
195
+ }
196
+ return new Promise((resolve, reject) => {
197
+ server.on('listening', () => {
198
+ const dispose = () => {
199
+ try {
200
+ server.close();
201
+ }
202
+ catch {
203
+ // ignore
204
+ }
205
+ activeServers.delete(filePath);
206
+ };
207
+ activeServers.set(filePath, { server, port: data.port, dispose });
208
+ resolve(dispose);
209
+ });
210
+ server.on('error', (err) => {
211
+ activeServers.delete(filePath);
212
+ if (err.code === 'EADDRINUSE') {
213
+ reject(new Error(`Mock server: port ${data.port} is already in use.`));
214
+ }
215
+ else {
216
+ reject(new Error(`Mock server error: ${err.message}`));
217
+ }
218
+ });
219
+ server.listen(data.port);
220
+ });
221
+ }
222
+ /** Stop all active mock servers. */
223
+ function stopAllServers() {
224
+ for (const [, handle] of activeServers) {
225
+ handle.dispose();
226
+ }
227
+ activeServers.clear();
228
+ }
229
+ //# sourceMappingURL=mockRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockRunner.js","sourceRoot":"","sources":["../src/mockRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.buildNetworkConfigFromEnv = buildNetworkConfigFromEnv;
40
+ exports.buildCliRunArgs = buildCliRunArgs;
41
+ exports.parsePairs = parsePairs;
42
+ exports.coerceCliValue = coerceCliValue;
43
+ const fileHelper_1 = require("mmt-core/fileHelper");
44
+ const fs_1 = __importDefault(require("fs"));
45
+ const js_yaml_1 = __importDefault(require("js-yaml"));
46
+ const mmtcore = __importStar(require("mmt-core"));
47
+ const NetworkData_1 = require("mmt-core/NetworkData");
48
+ const path_1 = __importDefault(require("path"));
49
+ const { mergeEnv, resolvePresetEnv, resolveEnvFromDoc } = (mmtcore.runConfig || {});
50
+ function coerceCliValue(v) {
51
+ const t = (v ?? '').trim();
52
+ if (/^(true|false)$/i.test(t)) {
53
+ return /^true$/i.test(t);
54
+ }
55
+ if (/^[-+]?\d+$/.test(t)) {
56
+ return Number(t);
57
+ }
58
+ if (/^[-+]?\d*\.\d+$/.test(t)) {
59
+ return Number(t);
60
+ }
61
+ if ((t.startsWith('"') && t.endsWith('"')) ||
62
+ (t.startsWith('\'') && t.endsWith('\''))) {
63
+ return t.slice(1, -1);
64
+ }
65
+ return t;
66
+ }
67
+ function parsePairs(list) {
68
+ const out = {};
69
+ const arr = Array.isArray(list) ? list : [];
70
+ for (let i = 0; i < arr.length; i++) {
71
+ const token = arr[i] ?? '';
72
+ const eq = token.indexOf('=');
73
+ if (eq > 0) {
74
+ const k = token.slice(0, eq).trim();
75
+ const v = token.slice(eq + 1);
76
+ if (k) {
77
+ out[k] = coerceCliValue(v);
78
+ }
79
+ }
80
+ else if (i + 1 < arr.length) {
81
+ const k = token.trim();
82
+ const v = arr[++i];
83
+ if (k) {
84
+ out[k] = coerceCliValue(v);
85
+ }
86
+ }
87
+ }
88
+ return out;
89
+ }
90
+ function loadEnvDoc(envPath) {
91
+ try {
92
+ const txt = fs_1.default.readFileSync(envPath, 'utf8');
93
+ const data = js_yaml_1.default.load(txt);
94
+ if (!data || typeof data !== 'object') {
95
+ return {};
96
+ }
97
+ if (data.type && String(data.type) !== 'env') {
98
+ return {};
99
+ }
100
+ return {
101
+ variables: data.variables || {},
102
+ presets: data.presets || {},
103
+ certificates: data.certificates || undefined,
104
+ };
105
+ }
106
+ catch {
107
+ return {};
108
+ }
109
+ }
110
+ // Resolve certificate path relative to env file directory
111
+ function resolveCertPath(certPath, envFileDir) {
112
+ if (!certPath) {
113
+ return '';
114
+ }
115
+ if (path_1.default.isAbsolute(certPath)) {
116
+ return certPath;
117
+ }
118
+ return path_1.default.resolve(envFileDir, certPath);
119
+ }
120
+ // Build NetworkConfig from certificate settings in env file
121
+ // Note: Boolean settings (sslValidation, allowSelfSigned, enabled) default to sensible values
122
+ // since they are not stored in YAML
123
+ function buildNetworkConfigFromEnv(certSettings, envFileDir, envVars) {
124
+ if (!certSettings) {
125
+ return { ...NetworkData_1.DEFAULT_NETWORK_CONFIG };
126
+ }
127
+ // Load CA certs (multiple paths)
128
+ const caCertDataList = [];
129
+ const caPaths = certSettings.ca?.paths || [];
130
+ // CA is enabled if there are paths defined
131
+ const caEnabled = caPaths.length > 0;
132
+ for (const caPath of caPaths) {
133
+ if (caPath) {
134
+ try {
135
+ const resolvedPath = resolveCertPath(caPath, envFileDir);
136
+ caCertDataList.push(fs_1.default.readFileSync(resolvedPath));
137
+ }
138
+ catch (e) {
139
+ console.warn(`Failed to load CA certificate from ${caPath}: ${e}`);
140
+ }
141
+ }
142
+ }
143
+ // Load client certs (use snake_case fields from YAML)
144
+ const clients = (certSettings.clients || []).map((client, idx) => {
145
+ let certData = undefined;
146
+ let keyData = undefined;
147
+ // Client is enabled by default (boolean not in YAML)
148
+ const clientEnabled = true;
149
+ const certPath = client.cert_path || '';
150
+ const keyPath = client.key_path || '';
151
+ if (certPath && keyPath) {
152
+ try {
153
+ const certResolvedPath = resolveCertPath(certPath, envFileDir);
154
+ const keyResolvedPath = resolveCertPath(keyPath, envFileDir);
155
+ certData = fs_1.default.readFileSync(certResolvedPath);
156
+ keyData = fs_1.default.readFileSync(keyResolvedPath);
157
+ }
158
+ catch (e) {
159
+ console.warn(`Failed to load client certificate for ${client.host || 'unknown'}: ${e}`);
160
+ }
161
+ }
162
+ const passphrase = (0, NetworkData_1.resolvePassphrase)(client.passphrase_plain, client.passphrase_env, envVars, process.env);
163
+ return {
164
+ id: `client-${idx}`,
165
+ name: client.name || '',
166
+ host: client.host || '*',
167
+ cert_path: certPath,
168
+ key_path: keyPath,
169
+ passphrase_plain: passphrase,
170
+ certData,
171
+ keyData,
172
+ enabled: clientEnabled,
173
+ };
174
+ });
175
+ return {
176
+ ca: { enabled: caEnabled, certPaths: caPaths, certData: caCertDataList.length > 0 ? caCertDataList : undefined },
177
+ clients,
178
+ sslValidation: true, // Default true (not stored in YAML)
179
+ allowSelfSigned: false, // Default false (not stored in YAML)
180
+ timeout: 30000,
181
+ autoFormat: false,
182
+ };
183
+ }
184
+ /**
185
+ * Find the project root by walking up from startPath looking for multimeter.mmt.
186
+ * Returns the directory containing multimeter.mmt, or undefined if not found.
187
+ */
188
+ function findProjectRootForCli(startPath) {
189
+ return (0, fileHelper_1.findProjectRootSync)(startPath, fs_1.default.existsSync, path_1.default.dirname, path_1.default.join) ?? undefined;
190
+ }
191
+ function buildCliRunArgs(file, opts) {
192
+ const full = path_1.default.resolve(process.cwd(), file);
193
+ const dir = path_1.default.dirname(full);
194
+ const rawText = fs_1.default.readFileSync(full, 'utf8');
195
+ const manualInputs = parsePairs(opts.input);
196
+ const manualEnvvars = parsePairs(opts.env);
197
+ const exampleOptRaw = typeof opts.example === 'string' ?
198
+ String(opts.example) :
199
+ undefined;
200
+ let exampleIndexOpt = undefined;
201
+ let exampleNameOpt = undefined;
202
+ if (exampleOptRaw && exampleOptRaw.trim()) {
203
+ const trimmed = exampleOptRaw.trim();
204
+ const numeric = trimmed.match(/^#?(\d+)$/);
205
+ if (numeric) {
206
+ const parsed = Number(numeric[1]);
207
+ exampleIndexOpt = parsed > 0 ? parsed - 1 : 0;
208
+ }
209
+ else {
210
+ exampleNameOpt = trimmed;
211
+ }
212
+ }
213
+ let envvar = undefined;
214
+ let networkConfig = undefined;
215
+ const envFileOpt = opts.envFile;
216
+ const presetName = opts.preset;
217
+ let envFileDir = dir;
218
+ // Detect if this is a suite file and check for suite environment config
219
+ let suiteEnvConfig;
220
+ try {
221
+ const parsed = js_yaml_1.default.load(rawText);
222
+ if (parsed && parsed.type === 'suite' && parsed.environment) {
223
+ suiteEnvConfig = parsed.environment;
224
+ }
225
+ }
226
+ catch {
227
+ // Not valid YAML or not a suite, continue normally
228
+ }
229
+ if (envFileOpt) {
230
+ let p = String(envFileOpt);
231
+ if (!path_1.default.isAbsolute(p)) {
232
+ const fromCwd = path_1.default.resolve(process.cwd(), p);
233
+ if (fs_1.default.existsSync(fromCwd)) {
234
+ p = fromCwd;
235
+ }
236
+ else {
237
+ p = path_1.default.resolve(dir, p);
238
+ }
239
+ }
240
+ envFileDir = path_1.default.dirname(p);
241
+ const doc = loadEnvDoc(p);
242
+ if (typeof resolveEnvFromDoc === 'function') {
243
+ envvar = resolveEnvFromDoc({ doc, presetName, manualEnvvars });
244
+ }
245
+ else {
246
+ const presetEnv = resolvePresetEnv(doc, presetName);
247
+ envvar = mergeEnv({ envvar: presetEnv, manualEnvvars });
248
+ }
249
+ // Build network config from certificates in env file
250
+ if (doc.certificates) {
251
+ networkConfig = buildNetworkConfigFromEnv(doc.certificates, envFileDir, envvar);
252
+ }
253
+ }
254
+ else {
255
+ envvar = mergeEnv({ envvar: undefined, manualEnvvars });
256
+ }
257
+ // Merge suite environment for CLI
258
+ // Priority: CLI -e > suite environment.variables > suite preset > --env-file/--preset > defaults
259
+ if (suiteEnvConfig) {
260
+ const projectRoot = findProjectRootForCli(full);
261
+ // Resolve suite preset if specified
262
+ let suitePresetEnv = {};
263
+ if (suiteEnvConfig.preset) {
264
+ let suiteEnvFilePath;
265
+ if (suiteEnvConfig.file) {
266
+ // Resolve relative to suite file or project root for +/ paths
267
+ if (suiteEnvConfig.file.startsWith('+/')) {
268
+ suiteEnvFilePath = projectRoot ? path_1.default.join(projectRoot, suiteEnvConfig.file.slice(2)) : undefined;
269
+ }
270
+ else {
271
+ suiteEnvFilePath = path_1.default.resolve(dir, suiteEnvConfig.file);
272
+ }
273
+ }
274
+ else if (projectRoot) {
275
+ // Use multimeter.mmt in project root
276
+ suiteEnvFilePath = path_1.default.join(projectRoot, 'multimeter.mmt');
277
+ }
278
+ if (suiteEnvFilePath && fs_1.default.existsSync(suiteEnvFilePath)) {
279
+ const suiteEnvDoc = loadEnvDoc(suiteEnvFilePath);
280
+ suitePresetEnv = resolvePresetEnv(suiteEnvDoc, suiteEnvConfig.preset);
281
+ }
282
+ }
283
+ // Merge: base (--env-file/--preset) < suite preset < suite variables < CLI -e
284
+ const baseEnv = { ...(envvar || {}) };
285
+ // Remove CLI -e from base (it will be applied at highest priority)
286
+ for (const key of Object.keys(manualEnvvars)) {
287
+ delete baseEnv[key];
288
+ }
289
+ const suiteVariables = suiteEnvConfig.variables ? { ...suiteEnvConfig.variables } : {};
290
+ envvar = { ...baseEnv, ...suitePresetEnv, ...suiteVariables, ...manualEnvvars };
291
+ }
292
+ const runFileOptions = {
293
+ file: rawText,
294
+ fileType: 'raw',
295
+ filePath: full,
296
+ exampleIndex: exampleIndexOpt,
297
+ exampleName: exampleNameOpt,
298
+ manualInputs,
299
+ envvar,
300
+ manualEnvvars,
301
+ fileLoader: async (p) => {
302
+ const rel = path_1.default.isAbsolute(p) ? p : path_1.default.join(dir, p);
303
+ if (!fs_1.default.existsSync(rel)) {
304
+ return '';
305
+ }
306
+ return fs_1.default.readFileSync(rel, 'utf8');
307
+ },
308
+ jsRunner: async () => { },
309
+ logger: (level, msg) => {
310
+ console.log(`[${level}] ${msg}`);
311
+ },
312
+ reporter: (_message) => { },
313
+ projectRoot: findProjectRootForCli(full),
314
+ };
315
+ // Wire collecting reporter when --report is requested
316
+ const reportFormat = opts.report;
317
+ let getReportResults;
318
+ if (reportFormat) {
319
+ const { createReportCollector } = mmtcore.reportCollector || {};
320
+ if (typeof createReportCollector === 'function') {
321
+ const collector = createReportCollector();
322
+ runFileOptions.reporter = collector.reporter;
323
+ getReportResults = collector.getResults;
324
+ }
325
+ }
326
+ const defaultReportFiles = {
327
+ junit: 'test-results.xml',
328
+ mmt: 'test-results.mmt',
329
+ html: 'test-results.html',
330
+ md: 'test-results.md',
331
+ };
332
+ return {
333
+ runFileOptions,
334
+ networkConfig,
335
+ quiet: !!opts.quiet,
336
+ outFile: opts.out ? String(opts.out) : undefined,
337
+ printJs: !!opts.printJs,
338
+ reportFormat,
339
+ reportFile: reportFormat
340
+ ? (opts.reportFile ? String(opts.reportFile) : defaultReportFiles[reportFormat])
341
+ : undefined,
342
+ getReportResults,
343
+ };
344
+ }
345
+ //# sourceMappingURL=runArgs.js.map