callman-core 1.29.0 → 1.31.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.
Files changed (218) hide show
  1. package/dist/ai/prompts/diagram.d.ts.map +1 -1
  2. package/dist/ai/prompts/diagram.js +24 -7
  3. package/dist/ai/prompts/diagram.js.map +1 -1
  4. package/dist/ai/types.d.ts +1 -1
  5. package/dist/ai/types.d.ts.map +1 -1
  6. package/dist/diagram/componentCatalog.d.ts +3 -0
  7. package/dist/diagram/componentCatalog.d.ts.map +1 -1
  8. package/dist/diagram/componentCatalog.js +5 -1
  9. package/dist/diagram/componentCatalog.js.map +1 -1
  10. package/dist/diagram/database/derive.d.ts +14 -0
  11. package/dist/diagram/database/derive.d.ts.map +1 -0
  12. package/dist/diagram/database/derive.js +114 -0
  13. package/dist/diagram/database/derive.js.map +1 -0
  14. package/dist/diagram/database/diff.d.ts +48 -0
  15. package/dist/diagram/database/diff.d.ts.map +1 -0
  16. package/dist/diagram/database/diff.js +109 -0
  17. package/dist/diagram/database/diff.js.map +1 -0
  18. package/dist/diagram/database/edit.d.ts +113 -0
  19. package/dist/diagram/database/edit.d.ts.map +1 -0
  20. package/dist/diagram/database/edit.js +359 -0
  21. package/dist/diagram/database/edit.js.map +1 -0
  22. package/dist/diagram/database/fromSchema.d.ts +12 -0
  23. package/dist/diagram/database/fromSchema.d.ts.map +1 -0
  24. package/dist/diagram/database/fromSchema.js +182 -0
  25. package/dist/diagram/database/fromSchema.js.map +1 -0
  26. package/dist/diagram/database/index.d.ts +9 -0
  27. package/dist/diagram/database/index.d.ts.map +1 -0
  28. package/dist/diagram/database/index.js +14 -0
  29. package/dist/diagram/database/index.js.map +1 -0
  30. package/dist/diagram/database/model.d.ts +93 -0
  31. package/dist/diagram/database/model.d.ts.map +1 -0
  32. package/dist/diagram/database/model.js +294 -0
  33. package/dist/diagram/database/model.js.map +1 -0
  34. package/dist/diagram/database/patch.d.ts +14 -0
  35. package/dist/diagram/database/patch.d.ts.map +1 -0
  36. package/dist/diagram/database/patch.js +186 -0
  37. package/dist/diagram/database/patch.js.map +1 -0
  38. package/dist/diagram/database/place.d.ts +4 -0
  39. package/dist/diagram/database/place.d.ts.map +1 -0
  40. package/dist/diagram/database/place.js +22 -0
  41. package/dist/diagram/database/place.js.map +1 -0
  42. package/dist/diagram/database/types.d.ts +50 -0
  43. package/dist/diagram/database/types.d.ts.map +1 -0
  44. package/dist/diagram/database/types.js +106 -0
  45. package/dist/diagram/database/types.js.map +1 -0
  46. package/dist/diagram/index.d.ts +1 -0
  47. package/dist/diagram/index.d.ts.map +1 -1
  48. package/dist/diagram/index.js +1 -0
  49. package/dist/diagram/index.js.map +1 -1
  50. package/dist/diagram/layout.d.ts +1 -0
  51. package/dist/diagram/layout.d.ts.map +1 -1
  52. package/dist/diagram/layout.js +2 -1
  53. package/dist/diagram/layout.js.map +1 -1
  54. package/dist/diagram/ops.d.ts +1 -1
  55. package/dist/diagram/ops.d.ts.map +1 -1
  56. package/dist/diagram/ops.js +42 -0
  57. package/dist/diagram/ops.js.map +1 -1
  58. package/dist/diagram/opsReference.d.ts +1 -1
  59. package/dist/diagram/opsReference.d.ts.map +1 -1
  60. package/dist/diagram/opsReference.js +9 -0
  61. package/dist/diagram/opsReference.js.map +1 -1
  62. package/dist/diagram/patchInput.d.ts +65 -1
  63. package/dist/diagram/patchInput.d.ts.map +1 -1
  64. package/dist/diagram/patchInput.js +414 -11
  65. package/dist/diagram/patchInput.js.map +1 -1
  66. package/dist/diagram/schema.d.ts +2 -2
  67. package/dist/diagram/schema.d.ts.map +1 -1
  68. package/dist/diagram/schema.js +3 -3
  69. package/dist/diagram/schema.js.map +1 -1
  70. package/dist/diagram/views.d.ts +13 -0
  71. package/dist/diagram/views.d.ts.map +1 -1
  72. package/dist/diagram/views.js +49 -0
  73. package/dist/diagram/views.js.map +1 -1
  74. package/dist/host/db/introspection/index.d.ts +9 -0
  75. package/dist/host/db/introspection/index.d.ts.map +1 -0
  76. package/dist/host/db/introspection/index.js +35 -0
  77. package/dist/host/db/introspection/index.js.map +1 -0
  78. package/dist/host/db/introspection/mongo.d.ts +7 -0
  79. package/dist/host/db/introspection/mongo.d.ts.map +1 -0
  80. package/dist/host/db/introspection/mongo.js +183 -0
  81. package/dist/host/db/introspection/mongo.js.map +1 -0
  82. package/dist/host/db/introspection/mssql.d.ts +6 -0
  83. package/dist/host/db/introspection/mssql.d.ts.map +1 -0
  84. package/dist/host/db/introspection/mssql.js +211 -0
  85. package/dist/host/db/introspection/mssql.js.map +1 -0
  86. package/dist/host/db/introspection/mysql.d.ts +5 -0
  87. package/dist/host/db/introspection/mysql.d.ts.map +1 -0
  88. package/dist/host/db/introspection/mysql.js +163 -0
  89. package/dist/host/db/introspection/mysql.js.map +1 -0
  90. package/dist/host/db/introspection/oracle.d.ts +12 -0
  91. package/dist/host/db/introspection/oracle.d.ts.map +1 -0
  92. package/dist/host/db/introspection/oracle.js +225 -0
  93. package/dist/host/db/introspection/oracle.js.map +1 -0
  94. package/dist/host/db/introspection/postgres.d.ts +5 -0
  95. package/dist/host/db/introspection/postgres.d.ts.map +1 -0
  96. package/dist/host/db/introspection/postgres.js +172 -0
  97. package/dist/host/db/introspection/postgres.js.map +1 -0
  98. package/dist/host/db/introspection/shared.d.ts +29 -0
  99. package/dist/host/db/introspection/shared.d.ts.map +1 -0
  100. package/dist/host/db/introspection/shared.js +119 -0
  101. package/dist/host/db/introspection/shared.js.map +1 -0
  102. package/dist/host/db/introspection/types.d.ts +58 -0
  103. package/dist/host/db/introspection/types.d.ts.map +1 -0
  104. package/dist/host/db/introspection/types.js +6 -0
  105. package/dist/host/db/introspection/types.js.map +1 -0
  106. package/dist/host/db/mongoAdapter.d.ts +1 -0
  107. package/dist/host/db/mongoAdapter.d.ts.map +1 -1
  108. package/dist/host/db/mongoAdapter.js +13 -0
  109. package/dist/host/db/mongoAdapter.js.map +1 -1
  110. package/dist/host/db/mssqlAdapter.d.ts +1 -0
  111. package/dist/host/db/mssqlAdapter.d.ts.map +1 -1
  112. package/dist/host/db/mssqlAdapter.js +3 -1
  113. package/dist/host/db/mssqlAdapter.js.map +1 -1
  114. package/dist/host/db/mysqlAdapter.d.ts +1 -0
  115. package/dist/host/db/mysqlAdapter.d.ts.map +1 -1
  116. package/dist/host/db/mysqlAdapter.js +11 -0
  117. package/dist/host/db/mysqlAdapter.js.map +1 -1
  118. package/dist/host/db/oracleAdapter.d.ts +1 -0
  119. package/dist/host/db/oracleAdapter.d.ts.map +1 -1
  120. package/dist/host/db/oracleAdapter.js +22 -0
  121. package/dist/host/db/oracleAdapter.js.map +1 -1
  122. package/dist/host/db/postgresAdapter.d.ts +1 -0
  123. package/dist/host/db/postgresAdapter.d.ts.map +1 -1
  124. package/dist/host/db/postgresAdapter.js +13 -0
  125. package/dist/host/db/postgresAdapter.js.map +1 -1
  126. package/dist/host/db/queryExecutor.d.ts +2 -1
  127. package/dist/host/db/queryExecutor.d.ts.map +1 -1
  128. package/dist/host/db/queryExecutor.js +1 -1
  129. package/dist/host/db/queryExecutor.js.map +1 -1
  130. package/dist/host/index.d.ts +7 -0
  131. package/dist/host/index.d.ts.map +1 -1
  132. package/dist/host/index.js +9 -0
  133. package/dist/host/index.js.map +1 -1
  134. package/dist/index.d.ts +2 -0
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +2 -0
  137. package/dist/index.js.map +1 -1
  138. package/dist/ui-test/commands.d.ts +54 -0
  139. package/dist/ui-test/commands.d.ts.map +1 -0
  140. package/dist/ui-test/commands.js +436 -0
  141. package/dist/ui-test/commands.js.map +1 -0
  142. package/dist/ui-test/flow-lint.d.ts +43 -0
  143. package/dist/ui-test/flow-lint.d.ts.map +1 -0
  144. package/dist/ui-test/flow-lint.js +229 -0
  145. package/dist/ui-test/flow-lint.js.map +1 -0
  146. package/dist-cjs/ai/prompts/diagram.js +23 -6
  147. package/dist-cjs/ai/prompts/diagram.js.map +1 -1
  148. package/dist-cjs/diagram/componentCatalog.js +5 -1
  149. package/dist-cjs/diagram/componentCatalog.js.map +1 -1
  150. package/dist-cjs/diagram/database/derive.js +119 -0
  151. package/dist-cjs/diagram/database/derive.js.map +1 -0
  152. package/dist-cjs/diagram/database/diff.js +115 -0
  153. package/dist-cjs/diagram/database/diff.js.map +1 -0
  154. package/dist-cjs/diagram/database/edit.js +366 -0
  155. package/dist-cjs/diagram/database/edit.js.map +1 -0
  156. package/dist-cjs/diagram/database/fromSchema.js +188 -0
  157. package/dist-cjs/diagram/database/fromSchema.js.map +1 -0
  158. package/dist-cjs/diagram/database/index.js +32 -0
  159. package/dist-cjs/diagram/database/index.js.map +1 -0
  160. package/dist-cjs/diagram/database/model.js +311 -0
  161. package/dist-cjs/diagram/database/model.js.map +1 -0
  162. package/dist-cjs/diagram/database/patch.js +190 -0
  163. package/dist-cjs/diagram/database/patch.js.map +1 -0
  164. package/dist-cjs/diagram/database/place.js +26 -0
  165. package/dist-cjs/diagram/database/place.js.map +1 -0
  166. package/dist-cjs/diagram/database/types.js +122 -0
  167. package/dist-cjs/diagram/database/types.js.map +1 -0
  168. package/dist-cjs/diagram/index.js +1 -0
  169. package/dist-cjs/diagram/index.js.map +1 -1
  170. package/dist-cjs/diagram/layout.js +3 -2
  171. package/dist-cjs/diagram/layout.js.map +1 -1
  172. package/dist-cjs/diagram/ops.js +42 -0
  173. package/dist-cjs/diagram/ops.js.map +1 -1
  174. package/dist-cjs/diagram/opsReference.js +9 -0
  175. package/dist-cjs/diagram/opsReference.js.map +1 -1
  176. package/dist-cjs/diagram/patchInput.js +414 -11
  177. package/dist-cjs/diagram/patchInput.js.map +1 -1
  178. package/dist-cjs/diagram/schema.js +3 -3
  179. package/dist-cjs/diagram/schema.js.map +1 -1
  180. package/dist-cjs/diagram/views.js +51 -1
  181. package/dist-cjs/diagram/views.js.map +1 -1
  182. package/dist-cjs/host/db/introspection/index.js +59 -0
  183. package/dist-cjs/host/db/introspection/index.js.map +1 -0
  184. package/dist-cjs/host/db/introspection/mongo.js +189 -0
  185. package/dist-cjs/host/db/introspection/mongo.js.map +1 -0
  186. package/dist-cjs/host/db/introspection/mssql.js +216 -0
  187. package/dist-cjs/host/db/introspection/mssql.js.map +1 -0
  188. package/dist-cjs/host/db/introspection/mysql.js +167 -0
  189. package/dist-cjs/host/db/introspection/mysql.js.map +1 -0
  190. package/dist-cjs/host/db/introspection/oracle.js +230 -0
  191. package/dist-cjs/host/db/introspection/oracle.js.map +1 -0
  192. package/dist-cjs/host/db/introspection/postgres.js +176 -0
  193. package/dist-cjs/host/db/introspection/postgres.js.map +1 -0
  194. package/dist-cjs/host/db/introspection/shared.js +133 -0
  195. package/dist-cjs/host/db/introspection/shared.js.map +1 -0
  196. package/dist-cjs/host/db/introspection/types.js +7 -0
  197. package/dist-cjs/host/db/introspection/types.js.map +1 -0
  198. package/dist-cjs/host/db/mongoAdapter.js +15 -1
  199. package/dist-cjs/host/db/mongoAdapter.js.map +1 -1
  200. package/dist-cjs/host/db/mssqlAdapter.js +5 -2
  201. package/dist-cjs/host/db/mssqlAdapter.js.map +1 -1
  202. package/dist-cjs/host/db/mysqlAdapter.js +13 -1
  203. package/dist-cjs/host/db/mysqlAdapter.js.map +1 -1
  204. package/dist-cjs/host/db/oracleAdapter.js +24 -1
  205. package/dist-cjs/host/db/oracleAdapter.js.map +1 -1
  206. package/dist-cjs/host/db/postgresAdapter.js +15 -1
  207. package/dist-cjs/host/db/postgresAdapter.js.map +1 -1
  208. package/dist-cjs/host/db/queryExecutor.js +5 -4
  209. package/dist-cjs/host/db/queryExecutor.js.map +1 -1
  210. package/dist-cjs/host/index.js +24 -1
  211. package/dist-cjs/host/index.js.map +1 -1
  212. package/dist-cjs/index.js +2 -0
  213. package/dist-cjs/index.js.map +1 -1
  214. package/dist-cjs/ui-test/commands.js +441 -0
  215. package/dist-cjs/ui-test/commands.js.map +1 -0
  216. package/dist-cjs/ui-test/flow-lint.js +235 -0
  217. package/dist-cjs/ui-test/flow-lint.js.map +1 -0
  218. package/package.json +3 -1
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /**
3
+ * UI-test flow linter — checks a flow's YAML the way the engines will read it
4
+ * and reports what would silently go wrong at run time: unknown steps (the
5
+ * engines skip them), missing required arguments, steps the flow's platform
6
+ * cannot run, unresolved `runFlow` references, unknown connections and
7
+ * placeholders nothing fills.
8
+ *
9
+ * Reads the document exactly like the flow parsers do (dedent, then
10
+ * `loadAll`: document 0 = header, document 1 = steps; a single list document
11
+ * = steps only). Never throws.
12
+ */
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.lintUiTestFlow = lintUiTestFlow;
18
+ const js_yaml_1 = __importDefault(require("js-yaml"));
19
+ const commands_js_1 = require("./commands.js");
20
+ const compose_js_1 = require("./compose.js");
21
+ const ARG_SYNONYMS = {
22
+ url: ["url", "link"],
23
+ text: ["text", "value", "element"],
24
+ urlContains: ["urlContains", "url"],
25
+ name: ["name", "commands", "file", "path"],
26
+ };
27
+ /** Keys any step mapping may carry beyond its own args. */
28
+ const COMMON_STEP_KEYS = new Set(["label", "optional", "timeout", "when", "retryTapIfNoChange", "waitToSettleTimeoutMs"]);
29
+ const EXAMPLE_URL_RE = /^https?:\/\/(www\.)?example\.com\/?$/i;
30
+ const PLACEHOLDER_RE = /\{\{\s*([A-Za-z_][\w.-]*)\s*\}\}/g;
31
+ function dedent(text) {
32
+ const lines = text.split("\n");
33
+ const nonEmpty = lines.filter((l) => l.trim().length > 0);
34
+ if (nonEmpty.length === 0)
35
+ return text;
36
+ const min = Math.min(...nonEmpty.map((l) => l.match(/^(\s*)/)?.[1].length ?? 0));
37
+ return lines.map((l) => l.slice(min)).join("\n");
38
+ }
39
+ function isRecord(v) {
40
+ return !!v && typeof v === "object" && !Array.isArray(v);
41
+ }
42
+ function lintUiTestFlow(content, options) {
43
+ const errors = [];
44
+ const warnings = [];
45
+ const steps = [];
46
+ let header = {};
47
+ let rawSteps = [];
48
+ const docs = [];
49
+ try {
50
+ js_yaml_1.default.loadAll(dedent(content ?? ""), (d) => docs.push(d));
51
+ }
52
+ catch (err) {
53
+ const e = err;
54
+ const where = e.mark?.line != null ? ` (line ${e.mark.line + 1}, column ${(e.mark.column ?? 0) + 1})` : "";
55
+ errors.push({ code: "YAML_SYNTAX", message: `YAML syntax error: ${e.reason ?? e.message ?? String(err)}${where}` });
56
+ return { ok: false, errors, warnings, header, steps, preconditions: [] };
57
+ }
58
+ const nonEmpty = docs.filter((d) => d !== null && d !== undefined);
59
+ if (docs.length >= 2) {
60
+ if (docs[0] != null && !isRecord(docs[0]))
61
+ errors.push({ code: "HEADER_NOT_MAPPING", message: "The header (before `---`) must be a mapping like `url: https://…`." });
62
+ header = isRecord(docs[0]) ? docs[0] : {};
63
+ if (docs[1] != null && !Array.isArray(docs[1]))
64
+ errors.push({ code: "STEPS_NOT_LIST", message: "The steps (after `---`) must be a YAML list: each step starts with `- `." });
65
+ rawSteps = Array.isArray(docs[1]) ? docs[1] : [];
66
+ if (docs.length > 2 && docs.slice(2).some((d) => d != null))
67
+ warnings.push({ code: "EXTRA_DOCUMENTS", message: "Only the first two YAML documents (header, steps) are read; the rest is ignored." });
68
+ }
69
+ else if (nonEmpty.length === 1) {
70
+ if (Array.isArray(nonEmpty[0]))
71
+ rawSteps = nonEmpty[0];
72
+ else if (isRecord(nonEmpty[0]))
73
+ header = nonEmpty[0];
74
+ }
75
+ // ── Header ────────────────────────────────────────────────────────────────
76
+ const { platform } = options;
77
+ const knownHeader = new Set(commands_js_1.UI_TEST_HEADER_KEYS.map((h) => h.key));
78
+ for (const key of Object.keys(header)) {
79
+ if (!knownHeader.has(key))
80
+ warnings.push({ code: "HEADER_UNKNOWN_KEY", message: `Header key \`${key}\` is not used by the engines.` });
81
+ }
82
+ const preconditions = (0, compose_js_1.extractPreconditions)(content ?? "").names;
83
+ if (platform === "web") {
84
+ const url = typeof header.url === "string" ? header.url.trim() : "";
85
+ if (!url && preconditions.length === 0) {
86
+ warnings.push({ code: "HEADER_URL_MISSING", message: "Web flow has no `url:` header — the browser starts on a blank page unless a step navigates." });
87
+ }
88
+ else if (EXAMPLE_URL_RE.test(url) && preconditions.length === 0) {
89
+ warnings.push({ code: "HEADER_URL_PLACEHOLDER", message: "`url:` is still the example.com placeholder." });
90
+ }
91
+ if (header.appId !== undefined)
92
+ warnings.push({ code: "HEADER_PLATFORM", message: "`appId` is a mobile header; it is ignored on web." });
93
+ }
94
+ else {
95
+ const appId = typeof header.appId === "string" ? header.appId.trim() : "";
96
+ if (!appId)
97
+ warnings.push({ code: "HEADER_APPID_MISSING", message: "Mobile flow has no `appId:` header — `launchApp` needs it." });
98
+ else if (appId === "com.example.app")
99
+ warnings.push({ code: "HEADER_APPID_PLACEHOLDER", message: "`appId:` is still the com.example.app placeholder." });
100
+ if (header.url !== undefined)
101
+ warnings.push({ code: "HEADER_PLATFORM", message: "`url` is a web header; use `openLink` for deep links on mobile." });
102
+ }
103
+ // ── Steps ─────────────────────────────────────────────────────────────────
104
+ if (rawSteps.length === 0)
105
+ warnings.push({ code: "NO_STEPS", message: "The flow has no steps." });
106
+ const knownFlows = options.knownFlowNames ? new Set(options.knownFlowNames.map((n) => n.trim())) : null;
107
+ const knownConns = options.knownConnections ? new Set(options.knownConnections.map((n) => n.trim().toLowerCase())) : null;
108
+ const produced = new Set(["copiedText"]);
109
+ const walk = (items, prefix) => {
110
+ items.forEach((item, i) => {
111
+ const step = prefix ? `${prefix}.${i + 1}` : String(i + 1);
112
+ checkStep(item, step);
113
+ });
114
+ };
115
+ const checkStep = (item, step) => {
116
+ let key;
117
+ let value;
118
+ let label;
119
+ if (typeof item === "string") {
120
+ key = item.trim();
121
+ value = null;
122
+ }
123
+ else if (isRecord(item)) {
124
+ const keys = Object.keys(item).filter((k) => k !== "label");
125
+ if (typeof item.label === "string")
126
+ label = item.label;
127
+ if (keys.length === 0) {
128
+ errors.push({ code: "STEP_EMPTY", message: "Step has no command.", step });
129
+ return;
130
+ }
131
+ if (keys.length > 1) {
132
+ errors.push({ code: "STEP_MULTIPLE_KEYS", message: `Step has several commands (${keys.join(", ")}); put each on its own \`- \` line.`, step });
133
+ }
134
+ key = keys[0];
135
+ value = item[key];
136
+ }
137
+ else {
138
+ errors.push({ code: "STEP_INVALID", message: `Step must be a command (e.g. \`- tapOn: "Login"\`), got ${JSON.stringify(item)}.`, step });
139
+ return;
140
+ }
141
+ const spec = (0, commands_js_1.findUiTestCommand)(key);
142
+ if (isRecord(value) && typeof value.label === "string")
143
+ label = value.label;
144
+ steps.push({ step, key, command: spec?.key, ...(label ? { label } : {}) });
145
+ if (!spec) {
146
+ errors.push({ code: "STEP_UNKNOWN", message: `Unknown step \`${key}\` — the engine would skip it. See callman://docs/ui-test-steps.`, step });
147
+ return;
148
+ }
149
+ if (!spec.platforms.includes(platform)) {
150
+ warnings.push({ code: "STEP_PLATFORM", message: `\`${key}\` does not run on ${platform} (${spec.platforms.join("/")} only) — it will be skipped.`, step });
151
+ }
152
+ if (spec.unavailable)
153
+ warnings.push({ code: "STEP_UNAVAILABLE", message: `\`${key}\`: ${spec.unavailable}`, step });
154
+ checkArgs(spec, key, value, step);
155
+ if (isRecord(value)) {
156
+ const extract = value.extract;
157
+ if (isRecord(extract))
158
+ Object.keys(extract).forEach((k) => produced.add(k));
159
+ if (spec.key === "copyTextFrom" && typeof value.into === "string")
160
+ produced.add(value.into);
161
+ if (Array.isArray(value.commands))
162
+ walk(value.commands, step);
163
+ }
164
+ if (spec.key === "runFlow") {
165
+ const name = typeof value === "string" ? value : isRecord(value) && typeof value.name === "string" ? value.name : null;
166
+ if (name && knownFlows && !knownFlows.has(name.trim())) {
167
+ errors.push({ code: "RUNFLOW_UNRESOLVED", message: `runFlow "${name}" does not match any flow in the library (names are exact).`, step });
168
+ }
169
+ }
170
+ if (spec.hybrid && isRecord(value) && typeof value.connection === "string" && knownConns) {
171
+ if (!knownConns.has(value.connection.trim().toLowerCase())) {
172
+ warnings.push({ code: "CONNECTION_UNKNOWN", message: `Connection "${value.connection}" is not a workspace connection name or id.`, step });
173
+ }
174
+ }
175
+ };
176
+ const checkArgs = (spec, key, value, step) => {
177
+ const isBare = value === null || value === undefined;
178
+ const isScalar = !isBare && (typeof value === "string" || typeof value === "number" || typeof value === "boolean");
179
+ const isMapping = isRecord(value);
180
+ const isList = Array.isArray(value);
181
+ if (isBare && !spec.forms.includes("bare")) {
182
+ const needs = spec.args.filter((a) => a.required).map((a) => a.name);
183
+ errors.push({ code: "STEP_ARGS_MISSING", message: `\`${key}\` needs a value${needs.length ? ` (${needs.join(", ")})` : ""}.`, step });
184
+ return;
185
+ }
186
+ if (isScalar && !spec.forms.includes("scalar")) {
187
+ errors.push({ code: "STEP_FORM", message: `\`${key}\` takes a mapping, not a single value. Example:\n${spec.example}`, step });
188
+ return;
189
+ }
190
+ if (isList && spec.key !== "addMedia") {
191
+ errors.push({ code: "STEP_FORM", message: `\`${key}\` value must not be a list. Example:\n${spec.example}`, step });
192
+ return;
193
+ }
194
+ if (!isMapping)
195
+ return;
196
+ if (!spec.forms.includes("mapping")) {
197
+ errors.push({ code: "STEP_FORM", message: `\`${key}\` takes a single value, not a mapping. Example:\n${spec.example}`, step });
198
+ return;
199
+ }
200
+ for (const arg of spec.args) {
201
+ if (!arg.required)
202
+ continue;
203
+ const names = ARG_SYNONYMS[arg.name] ?? [arg.name];
204
+ if (!names.some((n) => value[n] !== undefined && value[n] !== null && value[n] !== "")) {
205
+ // Locator steps: any locator satisfies a missing `text`.
206
+ if (arg.name === "text" && ["id", "testId", "css", "xpath", "name", "placeholder"].some((n) => value[n] != null))
207
+ continue;
208
+ errors.push({ code: "STEP_ARG_REQUIRED", message: `\`${key}\` is missing \`${arg.name}\`.`, step });
209
+ }
210
+ }
211
+ const allowed = new Set([...spec.args.map((a) => a.name), ...Object.values(ARG_SYNONYMS).flat()]);
212
+ for (const k of Object.keys(value)) {
213
+ if (!allowed.has(k) && !COMMON_STEP_KEYS.has(k)) {
214
+ warnings.push({ code: "STEP_ARG_UNKNOWN", message: `\`${key}\` does not use \`${k}\` — it is ignored.`, step });
215
+ }
216
+ }
217
+ };
218
+ walk(rawSteps, "");
219
+ // ── Placeholders ──────────────────────────────────────────────────────────
220
+ if (options.datasetKeys) {
221
+ const known = new Set([...options.datasetKeys, ...produced]);
222
+ const env = isRecord(header.env) ? header.env : isRecord(header.defineAttributes) ? header.defineAttributes : {};
223
+ Object.keys(env).forEach((k) => known.add(k));
224
+ const missing = new Set();
225
+ for (const m of (content ?? "").matchAll(PLACEHOLDER_RE)) {
226
+ if (!known.has(m[1]))
227
+ missing.add(m[1]);
228
+ }
229
+ for (const name of missing) {
230
+ warnings.push({ code: "PLACEHOLDER_UNRESOLVED", message: `{{${name}}} is not a dataset key, header env value or extracted variable — it will stay literal.` });
231
+ }
232
+ }
233
+ return { ok: errors.length === 0, errors, warnings, header, steps, preconditions };
234
+ }
235
+ //# sourceMappingURL=flow-lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-lint.js","sourceRoot":"","sources":["../../src/ui-test/flow-lint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;AAgEH,wCAsLC;AApPD,sDAA2B;AAC3B,+CAAoH;AACpH,6CAAoD;AAmCpD,MAAM,YAAY,GAA6B;IAC7C,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;IAClC,WAAW,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;CAC3C,CAAC;AAEF,2DAA2D;AAC3D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAE1H,MAAM,cAAc,GAAG,uCAAuC,CAAC;AAC/D,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAE3D,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,cAAc,CAAC,OAAe,EAAE,OAA0B;IACxE,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,QAAQ,GAAc,EAAE,CAAC;IAE7B,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,iBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAuF,CAAC;QAClG,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;QACpH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,oEAAoE,EAAE,CAAC,CAAC;QACtK,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0EAA0E,EAAE,CAAC,CAAC;QAC7K,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,kFAAkF,EAAE,CAAC,CAAC;IACvM,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClD,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,6EAA6E;IAC7E,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,iCAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,GAAG,gCAAgC,EAAE,CAAC,CAAC;IACzI,CAAC;IACD,MAAM,aAAa,GAAG,IAAA,iCAAoB,EAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;IAChE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,6FAA6F,EAAE,CAAC,CAAC;QACxJ,CAAC;aAAM,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC,CAAC;IAC3I,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC,CAAC;aAC9H,IAAI,KAAK,KAAK,iBAAiB;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,oDAAoD,EAAE,CAAC,CAAC;QACzJ,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iEAAiE,EAAE,CAAC,CAAC;IACvJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAElG,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxG,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1H,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAEjD,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,MAAc,EAAQ,EAAE;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,IAAa,EAAE,IAAY,EAAQ,EAAE;QACtD,IAAI,GAAW,CAAC;QAChB,IAAI,KAAc,CAAC;QACnB,IAAI,KAAyB,CAAC;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;YAC5D,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,8BAA8B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAC;YACjJ,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,2DAA2D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACzI,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,+BAAiB,EAAC,GAAG,CAAC,CAAC;QACpC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,GAAG,kEAAkE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9I,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,GAAG,sBAAsB,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7J,CAAC;QACD,IAAI,IAAI,CAAC,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpH,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAElC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,GAAG,KAAK,cAAc,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5F,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvH,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,IAAI,6DAA6D,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5I,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,UAAU,EAAE,CAAC;YACzF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,eAAe,KAAK,CAAC,UAAU,6CAA6C,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7I,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAE,GAAW,EAAE,KAAc,EAAE,IAAY,EAAQ,EAAE;QAC7F,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC;QACnH,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,GAAG,mBAAmB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACtI,OAAO;QACT,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,GAAG,qDAAqD,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/H,OAAO;QACT,CAAC;QACD,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,GAAG,0CAA0C,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACpH,OAAO;QACT,CAAC;QACD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,GAAG,qDAAqD,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/H,OAAO;QACT,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAAE,SAAS;YAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBACvF,yDAAyD;gBACzD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;oBAAE,SAAS;gBAC3H,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,GAAG,mBAAmB,GAAG,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClG,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,GAAG,qBAAqB,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEnB,6EAA6E;IAC7E,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK,IAAI,yFAAyF,EAAE,CAAC,CAAC;QACjK,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;AACrF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "callman-core",
3
- "version": "1.29.0",
3
+ "version": "1.31.0",
4
4
  "main": "dist-cjs/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -36,6 +36,7 @@
36
36
  "axios": "^1.6.0",
37
37
  "crypto-js": "^4.2.0",
38
38
  "fast-xml-parser": "^4.5.1",
39
+ "js-yaml": "^4.3.2",
39
40
  "jsonpath-plus": "^10.4.0",
40
41
  "lodash": "^4.18.1",
41
42
  "xpath": "^0.0.34"
@@ -50,6 +51,7 @@
50
51
  },
51
52
  "devDependencies": {
52
53
  "@types/crypto-js": "^4.2.2",
54
+ "@types/js-yaml": "^4.0.9",
53
55
  "@types/lodash": "^4.17.24",
54
56
  "@types/node": "^25.6.1",
55
57
  "typescript": "^5.7.2"