mmt-mcp 1.48.4 → 1.49.1-pre
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/server.cjs +112 -24
- package/dist/server.js +112 -24
- package/package.json +1 -1
package/dist/server.cjs
CHANGED
|
@@ -12210,7 +12210,11 @@ function currentValueForToken(spec) {
|
|
|
12210
12210
|
return void 0;
|
|
12211
12211
|
}
|
|
12212
12212
|
if (alias) {
|
|
12213
|
-
const
|
|
12213
|
+
const raw = String(match[2] || "").trim();
|
|
12214
|
+
if (/^[+-]/.test(raw)) {
|
|
12215
|
+
return void 0;
|
|
12216
|
+
}
|
|
12217
|
+
const duration = parseRelativeAmountMs(raw);
|
|
12214
12218
|
if (duration === void 0) {
|
|
12215
12219
|
return void 0;
|
|
12216
12220
|
}
|
|
@@ -12234,7 +12238,7 @@ var ACCESSOR_SEGMENT_RE = "(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[(?:-?\\d+(?::-?\\d*)?
|
|
|
12234
12238
|
var ACCESSOR_PATH_RE = `${ACCESSOR_SEGMENT_RE}*`;
|
|
12235
12239
|
var RANDOM_TOKEN_ARGUMENTS_RE = "\\(\\s*[^(),\\s]+(?:\\s*,\\s*[^(),\\s]+)?\\s*\\)";
|
|
12236
12240
|
var RANDOM_TOKEN_SPEC_RE = `${TOKEN_NAME_RE}(?:${RANDOM_TOKEN_ARGUMENTS_RE})?`;
|
|
12237
|
-
var CURRENT_TOKEN_ARGUMENTS_RE = "\\([
|
|
12241
|
+
var CURRENT_TOKEN_ARGUMENTS_RE = "\\([^()]*\\)";
|
|
12238
12242
|
var CURRENT_TOKEN_SPEC_RE = `${TOKEN_NAME_RE}(?:${CURRENT_TOKEN_ARGUMENTS_RE})?`;
|
|
12239
12243
|
var RUNTIME_ARGS_LOOSE_RE = "(?:\\([^)]*\\))?";
|
|
12240
12244
|
var RUNTIME_SPEC_RE = `${TOKEN_NAME_RE}${RUNTIME_ARGS_LOOSE_RE}`;
|
|
@@ -12874,7 +12878,7 @@ function isNonEmptyList(value) {
|
|
|
12874
12878
|
var TOKEN_NAME_RE2 = "[A-Za-z_][A-Za-z0-9_\\-]*";
|
|
12875
12879
|
var RANDOM_TOKEN_ARGUMENTS_RE2 = "\\(\\s*[^(),\\s]+(?:\\s*,\\s*[^(),\\s]+)?\\s*\\)";
|
|
12876
12880
|
var RANDOM_TOKEN_SPEC_RE2 = `${TOKEN_NAME_RE2}(?:${RANDOM_TOKEN_ARGUMENTS_RE2})?`;
|
|
12877
|
-
var CURRENT_TOKEN_ARGUMENTS_RE2 = "\\([
|
|
12881
|
+
var CURRENT_TOKEN_ARGUMENTS_RE2 = "\\([^()]*\\)";
|
|
12878
12882
|
var CURRENT_TOKEN_SPEC_RE2 = `${TOKEN_NAME_RE2}(?:${CURRENT_TOKEN_ARGUMENTS_RE2})?`;
|
|
12879
12883
|
var ACCESSOR_SEGMENT_RE2 = "(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[(?:-?\\d+(?::-?\\d*)?|:-?\\d*|[A-Za-z_][A-Za-z0-9_]*)\\])";
|
|
12880
12884
|
var ACCESSOR_PATH_RE2 = `${ACCESSOR_SEGMENT_RE2}*`;
|
|
@@ -13141,11 +13145,25 @@ function embedDynamicTokensAsJsInterpolations(value, options) {
|
|
|
13141
13145
|
}
|
|
13142
13146
|
return value;
|
|
13143
13147
|
}
|
|
13148
|
+
function unwrapWholeValueDollarRef(value) {
|
|
13149
|
+
const trimmed = String(value ?? "").trim();
|
|
13150
|
+
if (!trimmed.startsWith("${") || !trimmed.endsWith("}")) {
|
|
13151
|
+
return void 0;
|
|
13152
|
+
}
|
|
13153
|
+
if (trimmed.indexOf("${", 2) !== -1) {
|
|
13154
|
+
return void 0;
|
|
13155
|
+
}
|
|
13156
|
+
return trimmed.slice(2, -1).trim();
|
|
13157
|
+
}
|
|
13144
13158
|
function toTemplateValueJs(value, options) {
|
|
13145
13159
|
const s = String(value ?? "");
|
|
13146
13160
|
if (isLiteralTokenValue(s)) {
|
|
13147
13161
|
return JSON.stringify(unwrapLiteralToken(s));
|
|
13148
13162
|
}
|
|
13163
|
+
const wholeRef = unwrapWholeValueDollarRef(s);
|
|
13164
|
+
if (wholeRef !== void 0) {
|
|
13165
|
+
return wholeRef || "undefined";
|
|
13166
|
+
}
|
|
13149
13167
|
const fullEnvAngle = new RegExp(`^<<\\s*e:(${TOKEN_NAME_RE2})(${ACCESSOR_PATH_RE2})\\s*>>$`);
|
|
13150
13168
|
const fullEnvCurly = new RegExp(`^\\{\\{\\s*e:(${TOKEN_NAME_RE2})(${ACCESSOR_PATH_RE2})\\s*\\}\\}$`, "i");
|
|
13151
13169
|
const fullEnvPlain = new RegExp(`^e:(${TOKEN_NAME_RE2})(${ACCESSOR_PATH_RE2})$`);
|
|
@@ -13816,7 +13834,7 @@ var PARSE_DURATION_JS_FN = `(function __parseDurationMs(v) {
|
|
|
13816
13834
|
}
|
|
13817
13835
|
return Math.round(total);
|
|
13818
13836
|
})`;
|
|
13819
|
-
function durationToJsMsExpr(value) {
|
|
13837
|
+
function durationToJsMsExpr(value, tokenOptions) {
|
|
13820
13838
|
if (typeof value === "number") {
|
|
13821
13839
|
return String(Math.round(value));
|
|
13822
13840
|
}
|
|
@@ -13828,7 +13846,8 @@ function durationToJsMsExpr(value) {
|
|
|
13828
13846
|
if (/^\d+(?:\.\d+)?$/.test(trimmed)) {
|
|
13829
13847
|
return String(Math.round(Number(trimmed)));
|
|
13830
13848
|
}
|
|
13831
|
-
|
|
13849
|
+
const resolved = toTemplateValueJs(trimmed, tokenOptions);
|
|
13850
|
+
return `${PARSE_DURATION_JS_FN}(${resolved})`;
|
|
13832
13851
|
}
|
|
13833
13852
|
function toLowerUnderscore(input) {
|
|
13834
13853
|
if (input === void 0 || input === null) {
|
|
@@ -20026,8 +20045,9 @@ var toConditionJsExpr = (value, knownInputNames) => {
|
|
|
20026
20045
|
if (!trimmed) {
|
|
20027
20046
|
return "undefined";
|
|
20028
20047
|
}
|
|
20029
|
-
|
|
20030
|
-
|
|
20048
|
+
const wholeRef = unwrapWholeValueDollarRef(trimmed);
|
|
20049
|
+
if (wholeRef !== void 0) {
|
|
20050
|
+
return normalizeRuntimeActualExpression(wholeRef) || "undefined";
|
|
20031
20051
|
}
|
|
20032
20052
|
try {
|
|
20033
20053
|
const parsed = YAML5.parse(trimmed);
|
|
@@ -20311,14 +20331,46 @@ var repeatToJSfunc = async (loop, useExternalReport, importTitleMap, hoistedIds,
|
|
|
20311
20331
|
${indentLines(loopBody)}
|
|
20312
20332
|
}`;
|
|
20313
20333
|
}
|
|
20314
|
-
|
|
20334
|
+
if (loopCondition.toLowerCase() === "inf") {
|
|
20335
|
+
return `for (;;) {
|
|
20315
20336
|
${indentLines(loopBody)}
|
|
20337
|
+
}`;
|
|
20338
|
+
}
|
|
20339
|
+
if (typeof loop.repeat === "number" || /^\d+$/.test(loopCondition)) {
|
|
20340
|
+
return `for (let i = 0; i < ${loopCondition}; i++) {
|
|
20341
|
+
${indentLines(loopBody)}
|
|
20342
|
+
}`;
|
|
20343
|
+
}
|
|
20344
|
+
const rawExpr = toTemplateValueJs(
|
|
20345
|
+
loopCondition,
|
|
20346
|
+
jsTokenOptions(knownInputNames)
|
|
20347
|
+
);
|
|
20348
|
+
const indentedBody = indentLines(loopBody);
|
|
20349
|
+
return `{
|
|
20350
|
+
const __repeatRaw = ${rawExpr};
|
|
20351
|
+
const __repeatStr = String(__repeatRaw ?? '').trim();
|
|
20352
|
+
const __repeatLower = __repeatStr.toLowerCase();
|
|
20353
|
+
if (__repeatLower === 'inf') {
|
|
20354
|
+
for (;;) {
|
|
20355
|
+
${indentedBody}
|
|
20356
|
+
}
|
|
20357
|
+
} else if (/^((?:\\d+(?:\\.\\d+)?)(?:ns|ms|s|m|h))+$/i.test(__repeatLower)) {
|
|
20358
|
+
const __repeatMs = ${PARSE_DURATION_JS_FN}(__repeatStr);
|
|
20359
|
+
for (const __repeatStart = Date.now(); Date.now() < __repeatStart + __repeatMs; ) {
|
|
20360
|
+
${indentedBody}
|
|
20361
|
+
}
|
|
20362
|
+
} else {
|
|
20363
|
+
const __repeatN = Number(__repeatRaw);
|
|
20364
|
+
for (let i = 0; i < __repeatN; i++) {
|
|
20365
|
+
${indentedBody}
|
|
20366
|
+
}
|
|
20367
|
+
}
|
|
20316
20368
|
}`;
|
|
20317
20369
|
};
|
|
20318
20370
|
var DELAY_ABORT_CHECK_MS = 2e3;
|
|
20319
|
-
function delayToJSfunc(d) {
|
|
20371
|
+
function delayToJSfunc(d, knownInputNames) {
|
|
20320
20372
|
return `{
|
|
20321
|
-
let __delayLeft = ${durationToJsMsExpr(d)};
|
|
20373
|
+
let __delayLeft = ${durationToJsMsExpr(d, jsTokenOptions(knownInputNames))};
|
|
20322
20374
|
while (__delayLeft > 0) {
|
|
20323
20375
|
await checkAbort_();
|
|
20324
20376
|
const __wait = Math.min(__delayLeft, ${DELAY_ABORT_CHECK_MS});
|
|
@@ -20354,7 +20406,8 @@ var comparisonToJSfunc = (type, comparison, useExternalReport, knownInputNames)
|
|
|
20354
20406
|
);
|
|
20355
20407
|
const reportLevel = useExternalReport ? reportCfg.external : reportCfg.internal;
|
|
20356
20408
|
const actualTrimmed = typeof actual === "string" ? actual.trim() : "";
|
|
20357
|
-
const
|
|
20409
|
+
const actualWholeRef = actualTrimmed ? unwrapWholeValueDollarRef(actualTrimmed) : void 0;
|
|
20410
|
+
const actualRuntimeExpr = actualWholeRef !== void 0 ? normalizeRuntimeActualExpression(actualWholeRef) : void 0;
|
|
20358
20411
|
const conditionStatement = actualRuntimeExpr ? comparisonFromPartsToJSfunc(actualRuntimeExpr, operator, expected, knownInputNames) : conditionalStatementToJSfunc(raw, knownInputNames);
|
|
20359
20412
|
const finalTitle = typeof title === "string" ? toTemplateWithVars(title) : void 0;
|
|
20360
20413
|
const finalDetails = typeof details === "string" ? toTemplateWithVars(details) : void 0;
|
|
@@ -20383,8 +20436,9 @@ var checkToJSfunc = (check, useExternalReport, knownInputNames) => comparisonToJ
|
|
|
20383
20436
|
var assertToJSfunc = (assert, useExternalReport, knownInputNames) => comparisonToJSfunc("assert", assert, useExternalReport, knownInputNames);
|
|
20384
20437
|
var judgeValueToJs = (value, knownInputNames) => {
|
|
20385
20438
|
if (typeof value === "string") {
|
|
20386
|
-
|
|
20387
|
-
|
|
20439
|
+
const wholeRef = unwrapWholeValueDollarRef(value);
|
|
20440
|
+
if (wholeRef !== void 0) {
|
|
20441
|
+
return normalizeRuntimeActualExpression(wholeRef) || "undefined";
|
|
20388
20442
|
}
|
|
20389
20443
|
return toTemplateValueJs(value, jsTokenOptions(knownInputNames));
|
|
20390
20444
|
}
|
|
@@ -20450,7 +20504,14 @@ var isExplicitMultiCheckArray = (value) => {
|
|
|
20450
20504
|
};
|
|
20451
20505
|
var expectValueToJs = (value, knownInputNames) => {
|
|
20452
20506
|
const normalized = normalizeOmitToNull(value);
|
|
20453
|
-
|
|
20507
|
+
if (typeof normalized === "string") {
|
|
20508
|
+
const wholeRef = unwrapWholeValueDollarRef(normalized);
|
|
20509
|
+
if (wholeRef !== void 0) {
|
|
20510
|
+
return normalizeRuntimeActualExpression(wholeRef) || "undefined";
|
|
20511
|
+
}
|
|
20512
|
+
return toTemplateValueJs(normalized, jsTokenOptions(knownInputNames));
|
|
20513
|
+
}
|
|
20514
|
+
return JSON.stringify(normalized);
|
|
20454
20515
|
};
|
|
20455
20516
|
var comparisonFromPartsToJSfunc = (actualExpr, operator, expected, knownInputNames) => {
|
|
20456
20517
|
if (isOmitSentinel(expected) || expected === null) {
|
|
@@ -20793,17 +20854,17 @@ try {
|
|
|
20793
20854
|
);
|
|
20794
20855
|
return result;
|
|
20795
20856
|
};
|
|
20796
|
-
var varToJSfunc = (decl, step, rewriteOutputKeys = false) => {
|
|
20857
|
+
var varToJSfunc = (decl, step, rewriteOutputKeys = false, knownInputNames) => {
|
|
20797
20858
|
return Object.entries(step).map(([varName, value]) => {
|
|
20798
20859
|
const lhs = rewriteOutputKeys ? rewriteOutputSetKey(varName) ?? varName : varName;
|
|
20799
20860
|
if (typeof value === "string") {
|
|
20800
|
-
return `${decl}${lhs} =
|
|
20861
|
+
return `${decl}${lhs} = ${toTemplateValueJs(value, jsTokenOptions(knownInputNames))};`;
|
|
20801
20862
|
} else {
|
|
20802
20863
|
return `${decl}${lhs} = ${value};`;
|
|
20803
20864
|
}
|
|
20804
20865
|
}).join("\n");
|
|
20805
20866
|
};
|
|
20806
|
-
var setenvToJSfunc = (setenv, enabled) => {
|
|
20867
|
+
var setenvToJSfunc = (setenv, enabled, knownInputNames) => {
|
|
20807
20868
|
if (!enabled) {
|
|
20808
20869
|
return "";
|
|
20809
20870
|
}
|
|
@@ -20812,7 +20873,10 @@ var setenvToJSfunc = (setenv, enabled) => {
|
|
|
20812
20873
|
return "";
|
|
20813
20874
|
}
|
|
20814
20875
|
const objEntries = entries.map(([envKey, outputKeyOrValue]) => {
|
|
20815
|
-
const valueExpr = typeof outputKeyOrValue === "string" ?
|
|
20876
|
+
const valueExpr = typeof outputKeyOrValue === "string" ? toTemplateValueJs(
|
|
20877
|
+
outputKeyOrValue,
|
|
20878
|
+
jsTokenOptions(knownInputNames)
|
|
20879
|
+
) : JSON.stringify(outputKeyOrValue);
|
|
20816
20880
|
return `${JSON.stringify(envKey)}: ${valueExpr}`;
|
|
20817
20881
|
});
|
|
20818
20882
|
return `setenv_({ ${objEntries.join(", ")} });`;
|
|
@@ -20894,7 +20958,7 @@ var flowStepsToJsfunc = async (flow, root, useExternalReport = !root, importTitl
|
|
|
20894
20958
|
);
|
|
20895
20959
|
break;
|
|
20896
20960
|
case "delay":
|
|
20897
|
-
stepJs = delayToJSfunc(step.delay);
|
|
20961
|
+
stepJs = delayToJSfunc(step.delay, knownInputNames);
|
|
20898
20962
|
break;
|
|
20899
20963
|
case "for":
|
|
20900
20964
|
stepJs = await forToJSfunc(
|
|
@@ -20918,19 +20982,43 @@ var flowStepsToJsfunc = async (flow, root, useExternalReport = !root, importTitl
|
|
|
20918
20982
|
}
|
|
20919
20983
|
break;
|
|
20920
20984
|
case "set":
|
|
20921
|
-
stepJs = varToJSfunc(
|
|
20985
|
+
stepJs = varToJSfunc(
|
|
20986
|
+
"",
|
|
20987
|
+
step.set,
|
|
20988
|
+
true,
|
|
20989
|
+
knownInputNames
|
|
20990
|
+
);
|
|
20922
20991
|
break;
|
|
20923
20992
|
case "var":
|
|
20924
|
-
stepJs = varToJSfunc(
|
|
20993
|
+
stepJs = varToJSfunc(
|
|
20994
|
+
"var ",
|
|
20995
|
+
step.var,
|
|
20996
|
+
false,
|
|
20997
|
+
knownInputNames
|
|
20998
|
+
);
|
|
20925
20999
|
break;
|
|
20926
21000
|
case "const":
|
|
20927
|
-
stepJs = varToJSfunc(
|
|
21001
|
+
stepJs = varToJSfunc(
|
|
21002
|
+
"const ",
|
|
21003
|
+
step.const,
|
|
21004
|
+
false,
|
|
21005
|
+
knownInputNames
|
|
21006
|
+
);
|
|
20928
21007
|
break;
|
|
20929
21008
|
case "let":
|
|
20930
|
-
stepJs = varToJSfunc(
|
|
21009
|
+
stepJs = varToJSfunc(
|
|
21010
|
+
"let ",
|
|
21011
|
+
step.let,
|
|
21012
|
+
false,
|
|
21013
|
+
knownInputNames
|
|
21014
|
+
);
|
|
20931
21015
|
break;
|
|
20932
21016
|
case "setenv":
|
|
20933
|
-
stepJs = setenvToJSfunc(
|
|
21017
|
+
stepJs = setenvToJSfunc(
|
|
21018
|
+
step.setenv,
|
|
21019
|
+
emitSetenv,
|
|
21020
|
+
knownInputNames
|
|
21021
|
+
);
|
|
20934
21022
|
break;
|
|
20935
21023
|
default:
|
|
20936
21024
|
stepJs = "";
|
package/dist/server.js
CHANGED
|
@@ -12210,7 +12210,11 @@ function currentValueForToken(spec) {
|
|
|
12210
12210
|
return void 0;
|
|
12211
12211
|
}
|
|
12212
12212
|
if (alias) {
|
|
12213
|
-
const
|
|
12213
|
+
const raw = String(match[2] || "").trim();
|
|
12214
|
+
if (/^[+-]/.test(raw)) {
|
|
12215
|
+
return void 0;
|
|
12216
|
+
}
|
|
12217
|
+
const duration = parseRelativeAmountMs(raw);
|
|
12214
12218
|
if (duration === void 0) {
|
|
12215
12219
|
return void 0;
|
|
12216
12220
|
}
|
|
@@ -12234,7 +12238,7 @@ var ACCESSOR_SEGMENT_RE = "(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[(?:-?\\d+(?::-?\\d*)?
|
|
|
12234
12238
|
var ACCESSOR_PATH_RE = `${ACCESSOR_SEGMENT_RE}*`;
|
|
12235
12239
|
var RANDOM_TOKEN_ARGUMENTS_RE = "\\(\\s*[^(),\\s]+(?:\\s*,\\s*[^(),\\s]+)?\\s*\\)";
|
|
12236
12240
|
var RANDOM_TOKEN_SPEC_RE = `${TOKEN_NAME_RE}(?:${RANDOM_TOKEN_ARGUMENTS_RE})?`;
|
|
12237
|
-
var CURRENT_TOKEN_ARGUMENTS_RE = "\\([
|
|
12241
|
+
var CURRENT_TOKEN_ARGUMENTS_RE = "\\([^()]*\\)";
|
|
12238
12242
|
var CURRENT_TOKEN_SPEC_RE = `${TOKEN_NAME_RE}(?:${CURRENT_TOKEN_ARGUMENTS_RE})?`;
|
|
12239
12243
|
var RUNTIME_ARGS_LOOSE_RE = "(?:\\([^)]*\\))?";
|
|
12240
12244
|
var RUNTIME_SPEC_RE = `${TOKEN_NAME_RE}${RUNTIME_ARGS_LOOSE_RE}`;
|
|
@@ -12874,7 +12878,7 @@ function isNonEmptyList(value) {
|
|
|
12874
12878
|
var TOKEN_NAME_RE2 = "[A-Za-z_][A-Za-z0-9_\\-]*";
|
|
12875
12879
|
var RANDOM_TOKEN_ARGUMENTS_RE2 = "\\(\\s*[^(),\\s]+(?:\\s*,\\s*[^(),\\s]+)?\\s*\\)";
|
|
12876
12880
|
var RANDOM_TOKEN_SPEC_RE2 = `${TOKEN_NAME_RE2}(?:${RANDOM_TOKEN_ARGUMENTS_RE2})?`;
|
|
12877
|
-
var CURRENT_TOKEN_ARGUMENTS_RE2 = "\\([
|
|
12881
|
+
var CURRENT_TOKEN_ARGUMENTS_RE2 = "\\([^()]*\\)";
|
|
12878
12882
|
var CURRENT_TOKEN_SPEC_RE2 = `${TOKEN_NAME_RE2}(?:${CURRENT_TOKEN_ARGUMENTS_RE2})?`;
|
|
12879
12883
|
var ACCESSOR_SEGMENT_RE2 = "(?:\\.[A-Za-z_][A-Za-z0-9_]*|\\[(?:-?\\d+(?::-?\\d*)?|:-?\\d*|[A-Za-z_][A-Za-z0-9_]*)\\])";
|
|
12880
12884
|
var ACCESSOR_PATH_RE2 = `${ACCESSOR_SEGMENT_RE2}*`;
|
|
@@ -13141,11 +13145,25 @@ function embedDynamicTokensAsJsInterpolations(value, options) {
|
|
|
13141
13145
|
}
|
|
13142
13146
|
return value;
|
|
13143
13147
|
}
|
|
13148
|
+
function unwrapWholeValueDollarRef(value) {
|
|
13149
|
+
const trimmed = String(value ?? "").trim();
|
|
13150
|
+
if (!trimmed.startsWith("${") || !trimmed.endsWith("}")) {
|
|
13151
|
+
return void 0;
|
|
13152
|
+
}
|
|
13153
|
+
if (trimmed.indexOf("${", 2) !== -1) {
|
|
13154
|
+
return void 0;
|
|
13155
|
+
}
|
|
13156
|
+
return trimmed.slice(2, -1).trim();
|
|
13157
|
+
}
|
|
13144
13158
|
function toTemplateValueJs(value, options) {
|
|
13145
13159
|
const s = String(value ?? "");
|
|
13146
13160
|
if (isLiteralTokenValue(s)) {
|
|
13147
13161
|
return JSON.stringify(unwrapLiteralToken(s));
|
|
13148
13162
|
}
|
|
13163
|
+
const wholeRef = unwrapWholeValueDollarRef(s);
|
|
13164
|
+
if (wholeRef !== void 0) {
|
|
13165
|
+
return wholeRef || "undefined";
|
|
13166
|
+
}
|
|
13149
13167
|
const fullEnvAngle = new RegExp(`^<<\\s*e:(${TOKEN_NAME_RE2})(${ACCESSOR_PATH_RE2})\\s*>>$`);
|
|
13150
13168
|
const fullEnvCurly = new RegExp(`^\\{\\{\\s*e:(${TOKEN_NAME_RE2})(${ACCESSOR_PATH_RE2})\\s*\\}\\}$`, "i");
|
|
13151
13169
|
const fullEnvPlain = new RegExp(`^e:(${TOKEN_NAME_RE2})(${ACCESSOR_PATH_RE2})$`);
|
|
@@ -13816,7 +13834,7 @@ var PARSE_DURATION_JS_FN = `(function __parseDurationMs(v) {
|
|
|
13816
13834
|
}
|
|
13817
13835
|
return Math.round(total);
|
|
13818
13836
|
})`;
|
|
13819
|
-
function durationToJsMsExpr(value) {
|
|
13837
|
+
function durationToJsMsExpr(value, tokenOptions) {
|
|
13820
13838
|
if (typeof value === "number") {
|
|
13821
13839
|
return String(Math.round(value));
|
|
13822
13840
|
}
|
|
@@ -13828,7 +13846,8 @@ function durationToJsMsExpr(value) {
|
|
|
13828
13846
|
if (/^\d+(?:\.\d+)?$/.test(trimmed)) {
|
|
13829
13847
|
return String(Math.round(Number(trimmed)));
|
|
13830
13848
|
}
|
|
13831
|
-
|
|
13849
|
+
const resolved = toTemplateValueJs(trimmed, tokenOptions);
|
|
13850
|
+
return `${PARSE_DURATION_JS_FN}(${resolved})`;
|
|
13832
13851
|
}
|
|
13833
13852
|
function toLowerUnderscore(input) {
|
|
13834
13853
|
if (input === void 0 || input === null) {
|
|
@@ -20026,8 +20045,9 @@ var toConditionJsExpr = (value, knownInputNames) => {
|
|
|
20026
20045
|
if (!trimmed) {
|
|
20027
20046
|
return "undefined";
|
|
20028
20047
|
}
|
|
20029
|
-
|
|
20030
|
-
|
|
20048
|
+
const wholeRef = unwrapWholeValueDollarRef(trimmed);
|
|
20049
|
+
if (wholeRef !== void 0) {
|
|
20050
|
+
return normalizeRuntimeActualExpression(wholeRef) || "undefined";
|
|
20031
20051
|
}
|
|
20032
20052
|
try {
|
|
20033
20053
|
const parsed = YAML5.parse(trimmed);
|
|
@@ -20311,14 +20331,46 @@ var repeatToJSfunc = async (loop, useExternalReport, importTitleMap, hoistedIds,
|
|
|
20311
20331
|
${indentLines(loopBody)}
|
|
20312
20332
|
}`;
|
|
20313
20333
|
}
|
|
20314
|
-
|
|
20334
|
+
if (loopCondition.toLowerCase() === "inf") {
|
|
20335
|
+
return `for (;;) {
|
|
20315
20336
|
${indentLines(loopBody)}
|
|
20337
|
+
}`;
|
|
20338
|
+
}
|
|
20339
|
+
if (typeof loop.repeat === "number" || /^\d+$/.test(loopCondition)) {
|
|
20340
|
+
return `for (let i = 0; i < ${loopCondition}; i++) {
|
|
20341
|
+
${indentLines(loopBody)}
|
|
20342
|
+
}`;
|
|
20343
|
+
}
|
|
20344
|
+
const rawExpr = toTemplateValueJs(
|
|
20345
|
+
loopCondition,
|
|
20346
|
+
jsTokenOptions(knownInputNames)
|
|
20347
|
+
);
|
|
20348
|
+
const indentedBody = indentLines(loopBody);
|
|
20349
|
+
return `{
|
|
20350
|
+
const __repeatRaw = ${rawExpr};
|
|
20351
|
+
const __repeatStr = String(__repeatRaw ?? '').trim();
|
|
20352
|
+
const __repeatLower = __repeatStr.toLowerCase();
|
|
20353
|
+
if (__repeatLower === 'inf') {
|
|
20354
|
+
for (;;) {
|
|
20355
|
+
${indentedBody}
|
|
20356
|
+
}
|
|
20357
|
+
} else if (/^((?:\\d+(?:\\.\\d+)?)(?:ns|ms|s|m|h))+$/i.test(__repeatLower)) {
|
|
20358
|
+
const __repeatMs = ${PARSE_DURATION_JS_FN}(__repeatStr);
|
|
20359
|
+
for (const __repeatStart = Date.now(); Date.now() < __repeatStart + __repeatMs; ) {
|
|
20360
|
+
${indentedBody}
|
|
20361
|
+
}
|
|
20362
|
+
} else {
|
|
20363
|
+
const __repeatN = Number(__repeatRaw);
|
|
20364
|
+
for (let i = 0; i < __repeatN; i++) {
|
|
20365
|
+
${indentedBody}
|
|
20366
|
+
}
|
|
20367
|
+
}
|
|
20316
20368
|
}`;
|
|
20317
20369
|
};
|
|
20318
20370
|
var DELAY_ABORT_CHECK_MS = 2e3;
|
|
20319
|
-
function delayToJSfunc(d) {
|
|
20371
|
+
function delayToJSfunc(d, knownInputNames) {
|
|
20320
20372
|
return `{
|
|
20321
|
-
let __delayLeft = ${durationToJsMsExpr(d)};
|
|
20373
|
+
let __delayLeft = ${durationToJsMsExpr(d, jsTokenOptions(knownInputNames))};
|
|
20322
20374
|
while (__delayLeft > 0) {
|
|
20323
20375
|
await checkAbort_();
|
|
20324
20376
|
const __wait = Math.min(__delayLeft, ${DELAY_ABORT_CHECK_MS});
|
|
@@ -20354,7 +20406,8 @@ var comparisonToJSfunc = (type, comparison, useExternalReport, knownInputNames)
|
|
|
20354
20406
|
);
|
|
20355
20407
|
const reportLevel = useExternalReport ? reportCfg.external : reportCfg.internal;
|
|
20356
20408
|
const actualTrimmed = typeof actual === "string" ? actual.trim() : "";
|
|
20357
|
-
const
|
|
20409
|
+
const actualWholeRef = actualTrimmed ? unwrapWholeValueDollarRef(actualTrimmed) : void 0;
|
|
20410
|
+
const actualRuntimeExpr = actualWholeRef !== void 0 ? normalizeRuntimeActualExpression(actualWholeRef) : void 0;
|
|
20358
20411
|
const conditionStatement = actualRuntimeExpr ? comparisonFromPartsToJSfunc(actualRuntimeExpr, operator, expected, knownInputNames) : conditionalStatementToJSfunc(raw, knownInputNames);
|
|
20359
20412
|
const finalTitle = typeof title === "string" ? toTemplateWithVars(title) : void 0;
|
|
20360
20413
|
const finalDetails = typeof details === "string" ? toTemplateWithVars(details) : void 0;
|
|
@@ -20383,8 +20436,9 @@ var checkToJSfunc = (check, useExternalReport, knownInputNames) => comparisonToJ
|
|
|
20383
20436
|
var assertToJSfunc = (assert, useExternalReport, knownInputNames) => comparisonToJSfunc("assert", assert, useExternalReport, knownInputNames);
|
|
20384
20437
|
var judgeValueToJs = (value, knownInputNames) => {
|
|
20385
20438
|
if (typeof value === "string") {
|
|
20386
|
-
|
|
20387
|
-
|
|
20439
|
+
const wholeRef = unwrapWholeValueDollarRef(value);
|
|
20440
|
+
if (wholeRef !== void 0) {
|
|
20441
|
+
return normalizeRuntimeActualExpression(wholeRef) || "undefined";
|
|
20388
20442
|
}
|
|
20389
20443
|
return toTemplateValueJs(value, jsTokenOptions(knownInputNames));
|
|
20390
20444
|
}
|
|
@@ -20450,7 +20504,14 @@ var isExplicitMultiCheckArray = (value) => {
|
|
|
20450
20504
|
};
|
|
20451
20505
|
var expectValueToJs = (value, knownInputNames) => {
|
|
20452
20506
|
const normalized = normalizeOmitToNull(value);
|
|
20453
|
-
|
|
20507
|
+
if (typeof normalized === "string") {
|
|
20508
|
+
const wholeRef = unwrapWholeValueDollarRef(normalized);
|
|
20509
|
+
if (wholeRef !== void 0) {
|
|
20510
|
+
return normalizeRuntimeActualExpression(wholeRef) || "undefined";
|
|
20511
|
+
}
|
|
20512
|
+
return toTemplateValueJs(normalized, jsTokenOptions(knownInputNames));
|
|
20513
|
+
}
|
|
20514
|
+
return JSON.stringify(normalized);
|
|
20454
20515
|
};
|
|
20455
20516
|
var comparisonFromPartsToJSfunc = (actualExpr, operator, expected, knownInputNames) => {
|
|
20456
20517
|
if (isOmitSentinel(expected) || expected === null) {
|
|
@@ -20793,17 +20854,17 @@ try {
|
|
|
20793
20854
|
);
|
|
20794
20855
|
return result;
|
|
20795
20856
|
};
|
|
20796
|
-
var varToJSfunc = (decl, step, rewriteOutputKeys = false) => {
|
|
20857
|
+
var varToJSfunc = (decl, step, rewriteOutputKeys = false, knownInputNames) => {
|
|
20797
20858
|
return Object.entries(step).map(([varName, value]) => {
|
|
20798
20859
|
const lhs = rewriteOutputKeys ? rewriteOutputSetKey(varName) ?? varName : varName;
|
|
20799
20860
|
if (typeof value === "string") {
|
|
20800
|
-
return `${decl}${lhs} =
|
|
20861
|
+
return `${decl}${lhs} = ${toTemplateValueJs(value, jsTokenOptions(knownInputNames))};`;
|
|
20801
20862
|
} else {
|
|
20802
20863
|
return `${decl}${lhs} = ${value};`;
|
|
20803
20864
|
}
|
|
20804
20865
|
}).join("\n");
|
|
20805
20866
|
};
|
|
20806
|
-
var setenvToJSfunc = (setenv, enabled) => {
|
|
20867
|
+
var setenvToJSfunc = (setenv, enabled, knownInputNames) => {
|
|
20807
20868
|
if (!enabled) {
|
|
20808
20869
|
return "";
|
|
20809
20870
|
}
|
|
@@ -20812,7 +20873,10 @@ var setenvToJSfunc = (setenv, enabled) => {
|
|
|
20812
20873
|
return "";
|
|
20813
20874
|
}
|
|
20814
20875
|
const objEntries = entries.map(([envKey, outputKeyOrValue]) => {
|
|
20815
|
-
const valueExpr = typeof outputKeyOrValue === "string" ?
|
|
20876
|
+
const valueExpr = typeof outputKeyOrValue === "string" ? toTemplateValueJs(
|
|
20877
|
+
outputKeyOrValue,
|
|
20878
|
+
jsTokenOptions(knownInputNames)
|
|
20879
|
+
) : JSON.stringify(outputKeyOrValue);
|
|
20816
20880
|
return `${JSON.stringify(envKey)}: ${valueExpr}`;
|
|
20817
20881
|
});
|
|
20818
20882
|
return `setenv_({ ${objEntries.join(", ")} });`;
|
|
@@ -20894,7 +20958,7 @@ var flowStepsToJsfunc = async (flow, root, useExternalReport = !root, importTitl
|
|
|
20894
20958
|
);
|
|
20895
20959
|
break;
|
|
20896
20960
|
case "delay":
|
|
20897
|
-
stepJs = delayToJSfunc(step.delay);
|
|
20961
|
+
stepJs = delayToJSfunc(step.delay, knownInputNames);
|
|
20898
20962
|
break;
|
|
20899
20963
|
case "for":
|
|
20900
20964
|
stepJs = await forToJSfunc(
|
|
@@ -20918,19 +20982,43 @@ var flowStepsToJsfunc = async (flow, root, useExternalReport = !root, importTitl
|
|
|
20918
20982
|
}
|
|
20919
20983
|
break;
|
|
20920
20984
|
case "set":
|
|
20921
|
-
stepJs = varToJSfunc(
|
|
20985
|
+
stepJs = varToJSfunc(
|
|
20986
|
+
"",
|
|
20987
|
+
step.set,
|
|
20988
|
+
true,
|
|
20989
|
+
knownInputNames
|
|
20990
|
+
);
|
|
20922
20991
|
break;
|
|
20923
20992
|
case "var":
|
|
20924
|
-
stepJs = varToJSfunc(
|
|
20993
|
+
stepJs = varToJSfunc(
|
|
20994
|
+
"var ",
|
|
20995
|
+
step.var,
|
|
20996
|
+
false,
|
|
20997
|
+
knownInputNames
|
|
20998
|
+
);
|
|
20925
20999
|
break;
|
|
20926
21000
|
case "const":
|
|
20927
|
-
stepJs = varToJSfunc(
|
|
21001
|
+
stepJs = varToJSfunc(
|
|
21002
|
+
"const ",
|
|
21003
|
+
step.const,
|
|
21004
|
+
false,
|
|
21005
|
+
knownInputNames
|
|
21006
|
+
);
|
|
20928
21007
|
break;
|
|
20929
21008
|
case "let":
|
|
20930
|
-
stepJs = varToJSfunc(
|
|
21009
|
+
stepJs = varToJSfunc(
|
|
21010
|
+
"let ",
|
|
21011
|
+
step.let,
|
|
21012
|
+
false,
|
|
21013
|
+
knownInputNames
|
|
21014
|
+
);
|
|
20931
21015
|
break;
|
|
20932
21016
|
case "setenv":
|
|
20933
|
-
stepJs = setenvToJSfunc(
|
|
21017
|
+
stepJs = setenvToJSfunc(
|
|
21018
|
+
step.setenv,
|
|
21019
|
+
emitSetenv,
|
|
21020
|
+
knownInputNames
|
|
21021
|
+
);
|
|
20934
21022
|
break;
|
|
20935
21023
|
default:
|
|
20936
21024
|
stepJs = "";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mmt-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.49.1-pre",
|
|
4
4
|
"description": "Multimeter MCP server for Cursor, Copilot, and Claude. Scaffold, validate, format, and run YAML .mmt API tests. Do not invent .mmt syntax.",
|
|
5
5
|
"mcpName": "io.github.mshobeyri/multimeter",
|
|
6
6
|
"type": "module",
|