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.
- package/dist/ai/prompts/diagram.d.ts.map +1 -1
- package/dist/ai/prompts/diagram.js +24 -7
- package/dist/ai/prompts/diagram.js.map +1 -1
- package/dist/ai/types.d.ts +1 -1
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/diagram/componentCatalog.d.ts +3 -0
- package/dist/diagram/componentCatalog.d.ts.map +1 -1
- package/dist/diagram/componentCatalog.js +5 -1
- package/dist/diagram/componentCatalog.js.map +1 -1
- package/dist/diagram/database/derive.d.ts +14 -0
- package/dist/diagram/database/derive.d.ts.map +1 -0
- package/dist/diagram/database/derive.js +114 -0
- package/dist/diagram/database/derive.js.map +1 -0
- package/dist/diagram/database/diff.d.ts +48 -0
- package/dist/diagram/database/diff.d.ts.map +1 -0
- package/dist/diagram/database/diff.js +109 -0
- package/dist/diagram/database/diff.js.map +1 -0
- package/dist/diagram/database/edit.d.ts +113 -0
- package/dist/diagram/database/edit.d.ts.map +1 -0
- package/dist/diagram/database/edit.js +359 -0
- package/dist/diagram/database/edit.js.map +1 -0
- package/dist/diagram/database/fromSchema.d.ts +12 -0
- package/dist/diagram/database/fromSchema.d.ts.map +1 -0
- package/dist/diagram/database/fromSchema.js +182 -0
- package/dist/diagram/database/fromSchema.js.map +1 -0
- package/dist/diagram/database/index.d.ts +9 -0
- package/dist/diagram/database/index.d.ts.map +1 -0
- package/dist/diagram/database/index.js +14 -0
- package/dist/diagram/database/index.js.map +1 -0
- package/dist/diagram/database/model.d.ts +93 -0
- package/dist/diagram/database/model.d.ts.map +1 -0
- package/dist/diagram/database/model.js +294 -0
- package/dist/diagram/database/model.js.map +1 -0
- package/dist/diagram/database/patch.d.ts +14 -0
- package/dist/diagram/database/patch.d.ts.map +1 -0
- package/dist/diagram/database/patch.js +186 -0
- package/dist/diagram/database/patch.js.map +1 -0
- package/dist/diagram/database/place.d.ts +4 -0
- package/dist/diagram/database/place.d.ts.map +1 -0
- package/dist/diagram/database/place.js +22 -0
- package/dist/diagram/database/place.js.map +1 -0
- package/dist/diagram/database/types.d.ts +50 -0
- package/dist/diagram/database/types.d.ts.map +1 -0
- package/dist/diagram/database/types.js +106 -0
- package/dist/diagram/database/types.js.map +1 -0
- package/dist/diagram/index.d.ts +1 -0
- package/dist/diagram/index.d.ts.map +1 -1
- package/dist/diagram/index.js +1 -0
- package/dist/diagram/index.js.map +1 -1
- package/dist/diagram/layout.d.ts +1 -0
- package/dist/diagram/layout.d.ts.map +1 -1
- package/dist/diagram/layout.js +2 -1
- package/dist/diagram/layout.js.map +1 -1
- package/dist/diagram/ops.d.ts +1 -1
- package/dist/diagram/ops.d.ts.map +1 -1
- package/dist/diagram/ops.js +42 -0
- package/dist/diagram/ops.js.map +1 -1
- package/dist/diagram/opsReference.d.ts +1 -1
- package/dist/diagram/opsReference.d.ts.map +1 -1
- package/dist/diagram/opsReference.js +9 -0
- package/dist/diagram/opsReference.js.map +1 -1
- package/dist/diagram/patchInput.d.ts +65 -1
- package/dist/diagram/patchInput.d.ts.map +1 -1
- package/dist/diagram/patchInput.js +414 -11
- package/dist/diagram/patchInput.js.map +1 -1
- package/dist/diagram/schema.d.ts +2 -2
- package/dist/diagram/schema.d.ts.map +1 -1
- package/dist/diagram/schema.js +3 -3
- package/dist/diagram/schema.js.map +1 -1
- package/dist/diagram/views.d.ts +13 -0
- package/dist/diagram/views.d.ts.map +1 -1
- package/dist/diagram/views.js +49 -0
- package/dist/diagram/views.js.map +1 -1
- package/dist/host/db/introspection/index.d.ts +9 -0
- package/dist/host/db/introspection/index.d.ts.map +1 -0
- package/dist/host/db/introspection/index.js +35 -0
- package/dist/host/db/introspection/index.js.map +1 -0
- package/dist/host/db/introspection/mongo.d.ts +7 -0
- package/dist/host/db/introspection/mongo.d.ts.map +1 -0
- package/dist/host/db/introspection/mongo.js +183 -0
- package/dist/host/db/introspection/mongo.js.map +1 -0
- package/dist/host/db/introspection/mssql.d.ts +6 -0
- package/dist/host/db/introspection/mssql.d.ts.map +1 -0
- package/dist/host/db/introspection/mssql.js +211 -0
- package/dist/host/db/introspection/mssql.js.map +1 -0
- package/dist/host/db/introspection/mysql.d.ts +5 -0
- package/dist/host/db/introspection/mysql.d.ts.map +1 -0
- package/dist/host/db/introspection/mysql.js +163 -0
- package/dist/host/db/introspection/mysql.js.map +1 -0
- package/dist/host/db/introspection/oracle.d.ts +12 -0
- package/dist/host/db/introspection/oracle.d.ts.map +1 -0
- package/dist/host/db/introspection/oracle.js +225 -0
- package/dist/host/db/introspection/oracle.js.map +1 -0
- package/dist/host/db/introspection/postgres.d.ts +5 -0
- package/dist/host/db/introspection/postgres.d.ts.map +1 -0
- package/dist/host/db/introspection/postgres.js +172 -0
- package/dist/host/db/introspection/postgres.js.map +1 -0
- package/dist/host/db/introspection/shared.d.ts +29 -0
- package/dist/host/db/introspection/shared.d.ts.map +1 -0
- package/dist/host/db/introspection/shared.js +119 -0
- package/dist/host/db/introspection/shared.js.map +1 -0
- package/dist/host/db/introspection/types.d.ts +58 -0
- package/dist/host/db/introspection/types.d.ts.map +1 -0
- package/dist/host/db/introspection/types.js +6 -0
- package/dist/host/db/introspection/types.js.map +1 -0
- package/dist/host/db/mongoAdapter.d.ts +1 -0
- package/dist/host/db/mongoAdapter.d.ts.map +1 -1
- package/dist/host/db/mongoAdapter.js +13 -0
- package/dist/host/db/mongoAdapter.js.map +1 -1
- package/dist/host/db/mssqlAdapter.d.ts +1 -0
- package/dist/host/db/mssqlAdapter.d.ts.map +1 -1
- package/dist/host/db/mssqlAdapter.js +3 -1
- package/dist/host/db/mssqlAdapter.js.map +1 -1
- package/dist/host/db/mysqlAdapter.d.ts +1 -0
- package/dist/host/db/mysqlAdapter.d.ts.map +1 -1
- package/dist/host/db/mysqlAdapter.js +11 -0
- package/dist/host/db/mysqlAdapter.js.map +1 -1
- package/dist/host/db/oracleAdapter.d.ts +1 -0
- package/dist/host/db/oracleAdapter.d.ts.map +1 -1
- package/dist/host/db/oracleAdapter.js +22 -0
- package/dist/host/db/oracleAdapter.js.map +1 -1
- package/dist/host/db/postgresAdapter.d.ts +1 -0
- package/dist/host/db/postgresAdapter.d.ts.map +1 -1
- package/dist/host/db/postgresAdapter.js +13 -0
- package/dist/host/db/postgresAdapter.js.map +1 -1
- package/dist/host/db/queryExecutor.d.ts +2 -1
- package/dist/host/db/queryExecutor.d.ts.map +1 -1
- package/dist/host/db/queryExecutor.js +1 -1
- package/dist/host/db/queryExecutor.js.map +1 -1
- package/dist/host/index.d.ts +7 -0
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +9 -0
- package/dist/host/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/ui-test/commands.d.ts +54 -0
- package/dist/ui-test/commands.d.ts.map +1 -0
- package/dist/ui-test/commands.js +436 -0
- package/dist/ui-test/commands.js.map +1 -0
- package/dist/ui-test/flow-lint.d.ts +43 -0
- package/dist/ui-test/flow-lint.d.ts.map +1 -0
- package/dist/ui-test/flow-lint.js +229 -0
- package/dist/ui-test/flow-lint.js.map +1 -0
- package/dist-cjs/ai/prompts/diagram.js +23 -6
- package/dist-cjs/ai/prompts/diagram.js.map +1 -1
- package/dist-cjs/diagram/componentCatalog.js +5 -1
- package/dist-cjs/diagram/componentCatalog.js.map +1 -1
- package/dist-cjs/diagram/database/derive.js +119 -0
- package/dist-cjs/diagram/database/derive.js.map +1 -0
- package/dist-cjs/diagram/database/diff.js +115 -0
- package/dist-cjs/diagram/database/diff.js.map +1 -0
- package/dist-cjs/diagram/database/edit.js +366 -0
- package/dist-cjs/diagram/database/edit.js.map +1 -0
- package/dist-cjs/diagram/database/fromSchema.js +188 -0
- package/dist-cjs/diagram/database/fromSchema.js.map +1 -0
- package/dist-cjs/diagram/database/index.js +32 -0
- package/dist-cjs/diagram/database/index.js.map +1 -0
- package/dist-cjs/diagram/database/model.js +311 -0
- package/dist-cjs/diagram/database/model.js.map +1 -0
- package/dist-cjs/diagram/database/patch.js +190 -0
- package/dist-cjs/diagram/database/patch.js.map +1 -0
- package/dist-cjs/diagram/database/place.js +26 -0
- package/dist-cjs/diagram/database/place.js.map +1 -0
- package/dist-cjs/diagram/database/types.js +122 -0
- package/dist-cjs/diagram/database/types.js.map +1 -0
- package/dist-cjs/diagram/index.js +1 -0
- package/dist-cjs/diagram/index.js.map +1 -1
- package/dist-cjs/diagram/layout.js +3 -2
- package/dist-cjs/diagram/layout.js.map +1 -1
- package/dist-cjs/diagram/ops.js +42 -0
- package/dist-cjs/diagram/ops.js.map +1 -1
- package/dist-cjs/diagram/opsReference.js +9 -0
- package/dist-cjs/diagram/opsReference.js.map +1 -1
- package/dist-cjs/diagram/patchInput.js +414 -11
- package/dist-cjs/diagram/patchInput.js.map +1 -1
- package/dist-cjs/diagram/schema.js +3 -3
- package/dist-cjs/diagram/schema.js.map +1 -1
- package/dist-cjs/diagram/views.js +51 -1
- package/dist-cjs/diagram/views.js.map +1 -1
- package/dist-cjs/host/db/introspection/index.js +59 -0
- package/dist-cjs/host/db/introspection/index.js.map +1 -0
- package/dist-cjs/host/db/introspection/mongo.js +189 -0
- package/dist-cjs/host/db/introspection/mongo.js.map +1 -0
- package/dist-cjs/host/db/introspection/mssql.js +216 -0
- package/dist-cjs/host/db/introspection/mssql.js.map +1 -0
- package/dist-cjs/host/db/introspection/mysql.js +167 -0
- package/dist-cjs/host/db/introspection/mysql.js.map +1 -0
- package/dist-cjs/host/db/introspection/oracle.js +230 -0
- package/dist-cjs/host/db/introspection/oracle.js.map +1 -0
- package/dist-cjs/host/db/introspection/postgres.js +176 -0
- package/dist-cjs/host/db/introspection/postgres.js.map +1 -0
- package/dist-cjs/host/db/introspection/shared.js +133 -0
- package/dist-cjs/host/db/introspection/shared.js.map +1 -0
- package/dist-cjs/host/db/introspection/types.js +7 -0
- package/dist-cjs/host/db/introspection/types.js.map +1 -0
- package/dist-cjs/host/db/mongoAdapter.js +15 -1
- package/dist-cjs/host/db/mongoAdapter.js.map +1 -1
- package/dist-cjs/host/db/mssqlAdapter.js +5 -2
- package/dist-cjs/host/db/mssqlAdapter.js.map +1 -1
- package/dist-cjs/host/db/mysqlAdapter.js +13 -1
- package/dist-cjs/host/db/mysqlAdapter.js.map +1 -1
- package/dist-cjs/host/db/oracleAdapter.js +24 -1
- package/dist-cjs/host/db/oracleAdapter.js.map +1 -1
- package/dist-cjs/host/db/postgresAdapter.js +15 -1
- package/dist-cjs/host/db/postgresAdapter.js.map +1 -1
- package/dist-cjs/host/db/queryExecutor.js +5 -4
- package/dist-cjs/host/db/queryExecutor.js.map +1 -1
- package/dist-cjs/host/index.js +24 -1
- package/dist-cjs/host/index.js.map +1 -1
- package/dist-cjs/index.js +2 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/ui-test/commands.js +441 -0
- package/dist-cjs/ui-test/commands.js.map +1 -0
- package/dist-cjs/ui-test/flow-lint.js +235 -0
- package/dist-cjs/ui-test/flow-lint.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ui-test/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI-test flow linter — checks a flow's YAML the way the engines will read it
|
|
3
|
+
* and reports what would silently go wrong at run time: unknown steps (the
|
|
4
|
+
* engines skip them), missing required arguments, steps the flow's platform
|
|
5
|
+
* cannot run, unresolved `runFlow` references, unknown connections and
|
|
6
|
+
* placeholders nothing fills.
|
|
7
|
+
*
|
|
8
|
+
* Reads the document exactly like the flow parsers do (dedent, then
|
|
9
|
+
* `loadAll`: document 0 = header, document 1 = steps; a single list document
|
|
10
|
+
* = steps only). Never throws.
|
|
11
|
+
*/
|
|
12
|
+
import { type UiTestPlatform } from "./commands.js";
|
|
13
|
+
export interface UiTestLintIssue {
|
|
14
|
+
code: string;
|
|
15
|
+
message: string;
|
|
16
|
+
/** 1-based top-level step number (nested steps: "3.2"). */
|
|
17
|
+
step?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface UiTestLintOptions {
|
|
20
|
+
platform: UiTestPlatform;
|
|
21
|
+
/** Names of the flows in the library — enables the runFlow check. */
|
|
22
|
+
knownFlowNames?: string[];
|
|
23
|
+
/** Names/ids of the workspace connections — enables the connection check. */
|
|
24
|
+
knownConnections?: string[];
|
|
25
|
+
/** Dataset keys of the flow — enables the placeholder check. */
|
|
26
|
+
datasetKeys?: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface UiTestLintStep {
|
|
29
|
+
step: string;
|
|
30
|
+
key: string;
|
|
31
|
+
command?: string;
|
|
32
|
+
label?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface UiTestLintResult {
|
|
35
|
+
ok: boolean;
|
|
36
|
+
errors: UiTestLintIssue[];
|
|
37
|
+
warnings: UiTestLintIssue[];
|
|
38
|
+
header: Record<string, unknown>;
|
|
39
|
+
steps: UiTestLintStep[];
|
|
40
|
+
preconditions: string[];
|
|
41
|
+
}
|
|
42
|
+
export declare function lintUiTestFlow(content: string, options: UiTestLintOptions): UiTestLintResult;
|
|
43
|
+
//# sourceMappingURL=flow-lint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-lint.d.ts","sourceRoot":"","sources":["../../src/ui-test/flow-lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,CAAC;IACzB,qEAAqE;IACrE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AA2BD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAsL5F"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI-test flow linter — checks a flow's YAML the way the engines will read it
|
|
3
|
+
* and reports what would silently go wrong at run time: unknown steps (the
|
|
4
|
+
* engines skip them), missing required arguments, steps the flow's platform
|
|
5
|
+
* cannot run, unresolved `runFlow` references, unknown connections and
|
|
6
|
+
* placeholders nothing fills.
|
|
7
|
+
*
|
|
8
|
+
* Reads the document exactly like the flow parsers do (dedent, then
|
|
9
|
+
* `loadAll`: document 0 = header, document 1 = steps; a single list document
|
|
10
|
+
* = steps only). Never throws.
|
|
11
|
+
*/
|
|
12
|
+
import yaml from "js-yaml";
|
|
13
|
+
import { findUiTestCommand, UI_TEST_HEADER_KEYS } from "./commands.js";
|
|
14
|
+
import { extractPreconditions } from "./compose.js";
|
|
15
|
+
const ARG_SYNONYMS = {
|
|
16
|
+
url: ["url", "link"],
|
|
17
|
+
text: ["text", "value", "element"],
|
|
18
|
+
urlContains: ["urlContains", "url"],
|
|
19
|
+
name: ["name", "commands", "file", "path"],
|
|
20
|
+
};
|
|
21
|
+
/** Keys any step mapping may carry beyond its own args. */
|
|
22
|
+
const COMMON_STEP_KEYS = new Set(["label", "optional", "timeout", "when", "retryTapIfNoChange", "waitToSettleTimeoutMs"]);
|
|
23
|
+
const EXAMPLE_URL_RE = /^https?:\/\/(www\.)?example\.com\/?$/i;
|
|
24
|
+
const PLACEHOLDER_RE = /\{\{\s*([A-Za-z_][\w.-]*)\s*\}\}/g;
|
|
25
|
+
function dedent(text) {
|
|
26
|
+
const lines = text.split("\n");
|
|
27
|
+
const nonEmpty = lines.filter((l) => l.trim().length > 0);
|
|
28
|
+
if (nonEmpty.length === 0)
|
|
29
|
+
return text;
|
|
30
|
+
const min = Math.min(...nonEmpty.map((l) => l.match(/^(\s*)/)?.[1].length ?? 0));
|
|
31
|
+
return lines.map((l) => l.slice(min)).join("\n");
|
|
32
|
+
}
|
|
33
|
+
function isRecord(v) {
|
|
34
|
+
return !!v && typeof v === "object" && !Array.isArray(v);
|
|
35
|
+
}
|
|
36
|
+
export function lintUiTestFlow(content, options) {
|
|
37
|
+
const errors = [];
|
|
38
|
+
const warnings = [];
|
|
39
|
+
const steps = [];
|
|
40
|
+
let header = {};
|
|
41
|
+
let rawSteps = [];
|
|
42
|
+
const docs = [];
|
|
43
|
+
try {
|
|
44
|
+
yaml.loadAll(dedent(content ?? ""), (d) => docs.push(d));
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const e = err;
|
|
48
|
+
const where = e.mark?.line != null ? ` (line ${e.mark.line + 1}, column ${(e.mark.column ?? 0) + 1})` : "";
|
|
49
|
+
errors.push({ code: "YAML_SYNTAX", message: `YAML syntax error: ${e.reason ?? e.message ?? String(err)}${where}` });
|
|
50
|
+
return { ok: false, errors, warnings, header, steps, preconditions: [] };
|
|
51
|
+
}
|
|
52
|
+
const nonEmpty = docs.filter((d) => d !== null && d !== undefined);
|
|
53
|
+
if (docs.length >= 2) {
|
|
54
|
+
if (docs[0] != null && !isRecord(docs[0]))
|
|
55
|
+
errors.push({ code: "HEADER_NOT_MAPPING", message: "The header (before `---`) must be a mapping like `url: https://…`." });
|
|
56
|
+
header = isRecord(docs[0]) ? docs[0] : {};
|
|
57
|
+
if (docs[1] != null && !Array.isArray(docs[1]))
|
|
58
|
+
errors.push({ code: "STEPS_NOT_LIST", message: "The steps (after `---`) must be a YAML list: each step starts with `- `." });
|
|
59
|
+
rawSteps = Array.isArray(docs[1]) ? docs[1] : [];
|
|
60
|
+
if (docs.length > 2 && docs.slice(2).some((d) => d != null))
|
|
61
|
+
warnings.push({ code: "EXTRA_DOCUMENTS", message: "Only the first two YAML documents (header, steps) are read; the rest is ignored." });
|
|
62
|
+
}
|
|
63
|
+
else if (nonEmpty.length === 1) {
|
|
64
|
+
if (Array.isArray(nonEmpty[0]))
|
|
65
|
+
rawSteps = nonEmpty[0];
|
|
66
|
+
else if (isRecord(nonEmpty[0]))
|
|
67
|
+
header = nonEmpty[0];
|
|
68
|
+
}
|
|
69
|
+
// ── Header ────────────────────────────────────────────────────────────────
|
|
70
|
+
const { platform } = options;
|
|
71
|
+
const knownHeader = new Set(UI_TEST_HEADER_KEYS.map((h) => h.key));
|
|
72
|
+
for (const key of Object.keys(header)) {
|
|
73
|
+
if (!knownHeader.has(key))
|
|
74
|
+
warnings.push({ code: "HEADER_UNKNOWN_KEY", message: `Header key \`${key}\` is not used by the engines.` });
|
|
75
|
+
}
|
|
76
|
+
const preconditions = extractPreconditions(content ?? "").names;
|
|
77
|
+
if (platform === "web") {
|
|
78
|
+
const url = typeof header.url === "string" ? header.url.trim() : "";
|
|
79
|
+
if (!url && preconditions.length === 0) {
|
|
80
|
+
warnings.push({ code: "HEADER_URL_MISSING", message: "Web flow has no `url:` header — the browser starts on a blank page unless a step navigates." });
|
|
81
|
+
}
|
|
82
|
+
else if (EXAMPLE_URL_RE.test(url) && preconditions.length === 0) {
|
|
83
|
+
warnings.push({ code: "HEADER_URL_PLACEHOLDER", message: "`url:` is still the example.com placeholder." });
|
|
84
|
+
}
|
|
85
|
+
if (header.appId !== undefined)
|
|
86
|
+
warnings.push({ code: "HEADER_PLATFORM", message: "`appId` is a mobile header; it is ignored on web." });
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const appId = typeof header.appId === "string" ? header.appId.trim() : "";
|
|
90
|
+
if (!appId)
|
|
91
|
+
warnings.push({ code: "HEADER_APPID_MISSING", message: "Mobile flow has no `appId:` header — `launchApp` needs it." });
|
|
92
|
+
else if (appId === "com.example.app")
|
|
93
|
+
warnings.push({ code: "HEADER_APPID_PLACEHOLDER", message: "`appId:` is still the com.example.app placeholder." });
|
|
94
|
+
if (header.url !== undefined)
|
|
95
|
+
warnings.push({ code: "HEADER_PLATFORM", message: "`url` is a web header; use `openLink` for deep links on mobile." });
|
|
96
|
+
}
|
|
97
|
+
// ── Steps ─────────────────────────────────────────────────────────────────
|
|
98
|
+
if (rawSteps.length === 0)
|
|
99
|
+
warnings.push({ code: "NO_STEPS", message: "The flow has no steps." });
|
|
100
|
+
const knownFlows = options.knownFlowNames ? new Set(options.knownFlowNames.map((n) => n.trim())) : null;
|
|
101
|
+
const knownConns = options.knownConnections ? new Set(options.knownConnections.map((n) => n.trim().toLowerCase())) : null;
|
|
102
|
+
const produced = new Set(["copiedText"]);
|
|
103
|
+
const walk = (items, prefix) => {
|
|
104
|
+
items.forEach((item, i) => {
|
|
105
|
+
const step = prefix ? `${prefix}.${i + 1}` : String(i + 1);
|
|
106
|
+
checkStep(item, step);
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
const checkStep = (item, step) => {
|
|
110
|
+
let key;
|
|
111
|
+
let value;
|
|
112
|
+
let label;
|
|
113
|
+
if (typeof item === "string") {
|
|
114
|
+
key = item.trim();
|
|
115
|
+
value = null;
|
|
116
|
+
}
|
|
117
|
+
else if (isRecord(item)) {
|
|
118
|
+
const keys = Object.keys(item).filter((k) => k !== "label");
|
|
119
|
+
if (typeof item.label === "string")
|
|
120
|
+
label = item.label;
|
|
121
|
+
if (keys.length === 0) {
|
|
122
|
+
errors.push({ code: "STEP_EMPTY", message: "Step has no command.", step });
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (keys.length > 1) {
|
|
126
|
+
errors.push({ code: "STEP_MULTIPLE_KEYS", message: `Step has several commands (${keys.join(", ")}); put each on its own \`- \` line.`, step });
|
|
127
|
+
}
|
|
128
|
+
key = keys[0];
|
|
129
|
+
value = item[key];
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
errors.push({ code: "STEP_INVALID", message: `Step must be a command (e.g. \`- tapOn: "Login"\`), got ${JSON.stringify(item)}.`, step });
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const spec = findUiTestCommand(key);
|
|
136
|
+
if (isRecord(value) && typeof value.label === "string")
|
|
137
|
+
label = value.label;
|
|
138
|
+
steps.push({ step, key, command: spec?.key, ...(label ? { label } : {}) });
|
|
139
|
+
if (!spec) {
|
|
140
|
+
errors.push({ code: "STEP_UNKNOWN", message: `Unknown step \`${key}\` — the engine would skip it. See callman://docs/ui-test-steps.`, step });
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (!spec.platforms.includes(platform)) {
|
|
144
|
+
warnings.push({ code: "STEP_PLATFORM", message: `\`${key}\` does not run on ${platform} (${spec.platforms.join("/")} only) — it will be skipped.`, step });
|
|
145
|
+
}
|
|
146
|
+
if (spec.unavailable)
|
|
147
|
+
warnings.push({ code: "STEP_UNAVAILABLE", message: `\`${key}\`: ${spec.unavailable}`, step });
|
|
148
|
+
checkArgs(spec, key, value, step);
|
|
149
|
+
if (isRecord(value)) {
|
|
150
|
+
const extract = value.extract;
|
|
151
|
+
if (isRecord(extract))
|
|
152
|
+
Object.keys(extract).forEach((k) => produced.add(k));
|
|
153
|
+
if (spec.key === "copyTextFrom" && typeof value.into === "string")
|
|
154
|
+
produced.add(value.into);
|
|
155
|
+
if (Array.isArray(value.commands))
|
|
156
|
+
walk(value.commands, step);
|
|
157
|
+
}
|
|
158
|
+
if (spec.key === "runFlow") {
|
|
159
|
+
const name = typeof value === "string" ? value : isRecord(value) && typeof value.name === "string" ? value.name : null;
|
|
160
|
+
if (name && knownFlows && !knownFlows.has(name.trim())) {
|
|
161
|
+
errors.push({ code: "RUNFLOW_UNRESOLVED", message: `runFlow "${name}" does not match any flow in the library (names are exact).`, step });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (spec.hybrid && isRecord(value) && typeof value.connection === "string" && knownConns) {
|
|
165
|
+
if (!knownConns.has(value.connection.trim().toLowerCase())) {
|
|
166
|
+
warnings.push({ code: "CONNECTION_UNKNOWN", message: `Connection "${value.connection}" is not a workspace connection name or id.`, step });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
const checkArgs = (spec, key, value, step) => {
|
|
171
|
+
const isBare = value === null || value === undefined;
|
|
172
|
+
const isScalar = !isBare && (typeof value === "string" || typeof value === "number" || typeof value === "boolean");
|
|
173
|
+
const isMapping = isRecord(value);
|
|
174
|
+
const isList = Array.isArray(value);
|
|
175
|
+
if (isBare && !spec.forms.includes("bare")) {
|
|
176
|
+
const needs = spec.args.filter((a) => a.required).map((a) => a.name);
|
|
177
|
+
errors.push({ code: "STEP_ARGS_MISSING", message: `\`${key}\` needs a value${needs.length ? ` (${needs.join(", ")})` : ""}.`, step });
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (isScalar && !spec.forms.includes("scalar")) {
|
|
181
|
+
errors.push({ code: "STEP_FORM", message: `\`${key}\` takes a mapping, not a single value. Example:\n${spec.example}`, step });
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (isList && spec.key !== "addMedia") {
|
|
185
|
+
errors.push({ code: "STEP_FORM", message: `\`${key}\` value must not be a list. Example:\n${spec.example}`, step });
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (!isMapping)
|
|
189
|
+
return;
|
|
190
|
+
if (!spec.forms.includes("mapping")) {
|
|
191
|
+
errors.push({ code: "STEP_FORM", message: `\`${key}\` takes a single value, not a mapping. Example:\n${spec.example}`, step });
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
for (const arg of spec.args) {
|
|
195
|
+
if (!arg.required)
|
|
196
|
+
continue;
|
|
197
|
+
const names = ARG_SYNONYMS[arg.name] ?? [arg.name];
|
|
198
|
+
if (!names.some((n) => value[n] !== undefined && value[n] !== null && value[n] !== "")) {
|
|
199
|
+
// Locator steps: any locator satisfies a missing `text`.
|
|
200
|
+
if (arg.name === "text" && ["id", "testId", "css", "xpath", "name", "placeholder"].some((n) => value[n] != null))
|
|
201
|
+
continue;
|
|
202
|
+
errors.push({ code: "STEP_ARG_REQUIRED", message: `\`${key}\` is missing \`${arg.name}\`.`, step });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const allowed = new Set([...spec.args.map((a) => a.name), ...Object.values(ARG_SYNONYMS).flat()]);
|
|
206
|
+
for (const k of Object.keys(value)) {
|
|
207
|
+
if (!allowed.has(k) && !COMMON_STEP_KEYS.has(k)) {
|
|
208
|
+
warnings.push({ code: "STEP_ARG_UNKNOWN", message: `\`${key}\` does not use \`${k}\` — it is ignored.`, step });
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
walk(rawSteps, "");
|
|
213
|
+
// ── Placeholders ──────────────────────────────────────────────────────────
|
|
214
|
+
if (options.datasetKeys) {
|
|
215
|
+
const known = new Set([...options.datasetKeys, ...produced]);
|
|
216
|
+
const env = isRecord(header.env) ? header.env : isRecord(header.defineAttributes) ? header.defineAttributes : {};
|
|
217
|
+
Object.keys(env).forEach((k) => known.add(k));
|
|
218
|
+
const missing = new Set();
|
|
219
|
+
for (const m of (content ?? "").matchAll(PLACEHOLDER_RE)) {
|
|
220
|
+
if (!known.has(m[1]))
|
|
221
|
+
missing.add(m[1]);
|
|
222
|
+
}
|
|
223
|
+
for (const name of missing) {
|
|
224
|
+
warnings.push({ code: "PLACEHOLDER_UNRESOLVED", message: `{{${name}}} is not a dataset key, header env value or extracted variable — it will stay literal.` });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return { ok: errors.length === 0, errors, warnings, header, steps, preconditions };
|
|
228
|
+
}
|
|
229
|
+
//# 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":"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"}
|
|
@@ -27,6 +27,20 @@ const BPMN_SECTION = () => [
|
|
|
27
27
|
" 100x80, gateways 50x50, a 60px gap, one row per branch) — the app writes the BPMN XML.",
|
|
28
28
|
"- EDIT mode: emit ops; new nodes need no position (the app places them after their predecessor).",
|
|
29
29
|
];
|
|
30
|
+
const DATABASE_SECTION = () => [
|
|
31
|
+
"",
|
|
32
|
+
"THIS IS A DATABASE DIAGRAM (an entity-relationship diagram of a database schema, not an architecture diagram):",
|
|
33
|
+
"- Node `type` MUST be db.table, db.view or db.collection (MongoDB). Never use catalog types here.",
|
|
34
|
+
"- CREATE mode: each node's `label` is the table name and `data.db` holds the schema facts:",
|
|
35
|
+
' {"db": {"schema"?: "public", "columns": [{"name": "id", "dataType": "uuid", "primaryKey": true}, {"name": "email", "dataType": "varchar(255)", "unique": true}, {"name": "created_at", "dataType": "timestamp", "nullable": false}], "comment"?: "…"}}.',
|
|
36
|
+
" Use the database's own type names. Mark primary keys, unique columns, nullable columns, defaults and foreign-key columns (name them <parent>_id).",
|
|
37
|
+
"- Edges are RELATIONSHIPS: `source` is the child (foreign-key) table, `target` the parent; `data.db` names the columns and the cardinality:",
|
|
38
|
+
' {"db": {"sourceColumns": ["user_id"], "targetColumns": ["id"], "cardinality": "N:1"}} (also "1:1", "1:N", "N:M"). No markers/routing needed.',
|
|
39
|
+
"- Sizes/positions are optional (the app sizes tables from their columns and lays the diagram out).",
|
|
40
|
+
"- EDIT mode: use the DATABASE OPS (addTable, addColumn, alterColumn, addRelationship, …) — they edit the schema by meaning.",
|
|
41
|
+
" The CURRENT DIAGRAM block is the schema view: tables with columns and keys, relationships as table.column pairs, hidden tables.",
|
|
42
|
+
"- Model what a real database of this domain has: keys, timestamps, status columns, junction tables for N:M, sensible types.",
|
|
43
|
+
];
|
|
30
44
|
const EDIT_AS_OPS_SECTION = (kind) => [
|
|
31
45
|
"",
|
|
32
46
|
"EDIT MODE OUTPUT (this session): do NOT re-emit the document. Respond with",
|
|
@@ -35,7 +49,7 @@ const EDIT_AS_OPS_SECTION = (kind) => [
|
|
|
35
49
|
"without geometry — positions are the app's business. CREATE mode is unchanged: emit the",
|
|
36
50
|
"whole document under `diagram` and leave `ops` null.",
|
|
37
51
|
"",
|
|
38
|
-
(0, opsReference_js_1.renderDiagramOpsReference)(kind === "bpmn" ? "bpmn" : "canvas"),
|
|
52
|
+
(0, opsReference_js_1.renderDiagramOpsReference)(kind === "bpmn" ? "bpmn" : kind === "database" ? "database" : "canvas"),
|
|
39
53
|
];
|
|
40
54
|
const buildDiagramSystemPrompt = (options = {}) => [
|
|
41
55
|
"You are a STAFF-level software/systems architect and domain expert embedded in a visual",
|
|
@@ -137,6 +151,7 @@ const buildDiagramSystemPrompt = (options = {}) => [
|
|
|
137
151
|
" try to hand-pack children into a box; let the layout do it.",
|
|
138
152
|
"- Edges may connect a child to a node outside its container, or to the container itself.",
|
|
139
153
|
...(options.diagramKind === "bpmn" ? BPMN_SECTION() : []),
|
|
154
|
+
...(options.diagramKind === "database" ? DATABASE_SECTION() : []),
|
|
140
155
|
...(options.editOutput === "ops" ? EDIT_AS_OPS_SECTION(options.diagramKind) : []),
|
|
141
156
|
].join("\n");
|
|
142
157
|
exports.buildDiagramSystemPrompt = buildDiagramSystemPrompt;
|
|
@@ -147,22 +162,24 @@ const buildDiagramUserPrompt = ({ instruction, mode, document, components = [],
|
|
|
147
162
|
// Ops mode: the model sees the graph (ids, types, labels, containers,
|
|
148
163
|
// connections) and never the geometry — ~70% smaller and nothing to scramble.
|
|
149
164
|
const documentBlock = mode === "edit" && document
|
|
150
|
-
?
|
|
151
|
-
? JSON.stringify((0, views_js_1.
|
|
152
|
-
:
|
|
165
|
+
? diagramKind === "database"
|
|
166
|
+
? JSON.stringify((0, views_js_1.databaseSchemaView)(document))
|
|
167
|
+
: editOutput === "ops"
|
|
168
|
+
? JSON.stringify((0, views_js_1.diagramGraphView)(document))
|
|
169
|
+
: JSON.stringify(document)
|
|
153
170
|
: "(none — creating a new diagram)";
|
|
154
171
|
const canvasLine = canvas && (canvas.width || canvas.height)
|
|
155
172
|
? `CANVAS SIZE: ${Math.round(canvas.width ?? 0)} x ${Math.round(canvas.height ?? 0)}`
|
|
156
173
|
: null;
|
|
157
174
|
return [
|
|
158
175
|
`MODE: ${mode}`,
|
|
159
|
-
diagramKind === "bpmn" ? "DIAGRAM KIND: bpmn (BPMN 2.0 process; use bpmn.* types only)" : null,
|
|
176
|
+
diagramKind === "bpmn" ? "DIAGRAM KIND: bpmn (BPMN 2.0 process; use bpmn.* types only)" : diagramKind === "database" ? "DIAGRAM KIND: database (entity-relationship diagram; db.table / db.view / db.collection with data.db columns; relationships as edges)" : null,
|
|
160
177
|
canvasLine,
|
|
161
178
|
"",
|
|
162
179
|
"AVAILABLE COMPONENT TYPES (type — label (category)):",
|
|
163
180
|
componentLines,
|
|
164
181
|
"",
|
|
165
|
-
editOutput === "ops" ? "CURRENT DIAGRAM (edit mode; graph view — ids, types, labels, containers, connections):" : "CURRENT DIAGRAM (edit mode; full document JSON):",
|
|
182
|
+
diagramKind === "database" ? "CURRENT DIAGRAM (edit mode; schema view — tables, columns, keys, relationships, hidden tables):" : editOutput === "ops" ? "CURRENT DIAGRAM (edit mode; graph view — ids, types, labels, containers, connections):" : "CURRENT DIAGRAM (edit mode; full document JSON):",
|
|
166
183
|
documentBlock,
|
|
167
184
|
"",
|
|
168
185
|
`SELECTED CELL IDS: ${selection.length ? selection.join(", ") : "(none)"}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../../src/ai/prompts/diagram.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,EAAE;AACF,6DAA6D;AAC7D,+EAA+E;AAC/E,+EAA+E;AAC/E,qEAAqE;;;AAErE,
|
|
1
|
+
{"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../../src/ai/prompts/diagram.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,11 +64,15 @@ const searchDiagramComponents = (query) => {
|
|
|
64
64
|
};
|
|
65
65
|
exports.searchDiagramComponents = searchDiagramComponents;
|
|
66
66
|
// Unknown `type`s in a document (each reported once, in first-seen order).
|
|
67
|
+
// A source-backed diagram brings its own vocabulary: bpmn.* on a BPMN
|
|
68
|
+
// diagram, db.* on a database diagram (neither lives in the catalog).
|
|
67
69
|
const validateComponentTypes = (doc) => {
|
|
68
70
|
const unknown = [];
|
|
69
71
|
const seen = new Set();
|
|
72
|
+
const format = doc.source?.format;
|
|
73
|
+
const ownVocabulary = (type) => (format === "bpmn" && type.startsWith("bpmn.")) || (format === "database" && (type === "db.table" || type === "db.view" || type === "db.collection"));
|
|
70
74
|
for (const node of doc.nodes) {
|
|
71
|
-
if (byType.has(node.type) || seen.has(node.type))
|
|
75
|
+
if (byType.has(node.type) || ownVocabulary(node.type) || seen.has(node.type))
|
|
72
76
|
continue;
|
|
73
77
|
seen.add(node.type);
|
|
74
78
|
unknown.push(node.type);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentCatalog.js","sourceRoot":"","sources":["../../src/diagram/componentCatalog.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAA4E;AAmB/D,QAAA,sBAAsB,GAA+B;IAChE,SAAS;IACT,WAAW;IACX,KAAK;IACL,KAAK;IACL,YAAY;IACZ,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,QAAQ;IACR,MAAM;IACN,eAAe;IACf,KAAK;IACL,OAAO;IACP,KAAK;CACN,CAAC;AAEW,QAAA,uBAAuB,GAA6C;IAC/E,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,UAAU,EAAE,cAAc;IAC1B,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,gBAAgB;IACxB,IAAI,EAAE,iBAAiB;IACvB,aAAa,EAAE,eAAe;IAC9B,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACX,CAAC;AAkBW,QAAA,yBAAyB,GAAoC,yDAA8B,CAAC;AAEzG,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,iCAAyB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC9D,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAoC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAA3F,QAAA,mBAAmB,uBAAwE;AAEjG,MAAM,2BAA2B,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAA1E,QAAA,2BAA2B,+BAA+C;AAEhF,MAAM,2BAA2B,GAAG,GAA6D,EAAE;IACxG,MAAM,GAAG,GAAG,EAA8D,CAAC;IAC3E,KAAK,MAAM,QAAQ,IAAI,8BAAsB;QAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,iCAAyB;QAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AALW,QAAA,2BAA2B,+BAKtC;AAEK,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAA0B,EAAE;IAC/E,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,GAAG,iCAAyB,CAAC,CAAC;IAC9C,OAAO,iCAAyB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAChD,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CACxF,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,uBAAuB,2BAMlC;AAEF,2EAA2E;
|
|
1
|
+
{"version":3,"file":"componentCatalog.js","sourceRoot":"","sources":["../../src/diagram/componentCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Model → diagram: the nodes and edges a database model implies, as ops
|
|
3
|
+
// against the current document (mirror of bpmn/derive: what is missing is
|
|
4
|
+
// added, what is gone is removed, what changed is updated — positions are
|
|
5
|
+
// never touched except for brand-new tables, which the host lays out).
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.syncOpsFromDatabase = exports.parseDatabaseSource = void 0;
|
|
8
|
+
const model_js_1 = require("./model.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
10
|
+
const parseDatabaseSource = (text) => (0, model_js_1.parseDatabaseModel)(text);
|
|
11
|
+
exports.parseDatabaseSource = parseDatabaseSource;
|
|
12
|
+
const sameJson = (a, b) => JSON.stringify(a ?? null) === JSON.stringify(b ?? null);
|
|
13
|
+
const syncOpsFromDatabase = (doc, model) => {
|
|
14
|
+
const ops = [];
|
|
15
|
+
const addedNodeIds = [];
|
|
16
|
+
const removedNodeIds = [];
|
|
17
|
+
const unpositionedNodeIds = [];
|
|
18
|
+
const existingNodes = new Map(doc.nodes.map((node) => [node.id, node]));
|
|
19
|
+
const existingEdges = new Map(doc.edges.map((edge) => [edge.id, edge]));
|
|
20
|
+
const wantedEntities = new Map(model.entities.map((entity) => [entity.id, entity]));
|
|
21
|
+
const wantedRelationships = new Map(model.relationships.map((relationship) => [relationship.id, relationship]));
|
|
22
|
+
// Edges of relationships that are gone (only the diagram's own database edges).
|
|
23
|
+
for (const edge of doc.edges) {
|
|
24
|
+
if (!wantedRelationships.has(edge.id) && (0, types_js_1.dbEdgeData)(edge.data))
|
|
25
|
+
ops.push({ op: "removeEdge", id: edge.id });
|
|
26
|
+
}
|
|
27
|
+
// Tables that are gone.
|
|
28
|
+
for (const node of doc.nodes) {
|
|
29
|
+
if ((0, types_js_1.isDatabaseType)(node.type) && !wantedEntities.has(node.id)) {
|
|
30
|
+
ops.push({ op: "removeNode", id: node.id, children: "lift" });
|
|
31
|
+
removedNodeIds.push(node.id);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const entity of model.entities) {
|
|
35
|
+
const existing = existingNodes.get(entity.id);
|
|
36
|
+
const type = (0, types_js_1.databaseTypeForKind)(entity.kind);
|
|
37
|
+
const data = { name: entity.name, ...(entity.schema ? { schema: entity.schema } : {}), kind: entity.kind, columns: entity.columns.length };
|
|
38
|
+
const label = (0, model_js_1.entityQualifiedName)(entity);
|
|
39
|
+
if (!existing) {
|
|
40
|
+
const node = {
|
|
41
|
+
id: entity.id,
|
|
42
|
+
type,
|
|
43
|
+
position: { x: 0, y: 0 },
|
|
44
|
+
size: (0, types_js_1.databaseEntitySize)(entity),
|
|
45
|
+
label,
|
|
46
|
+
data: { db: data },
|
|
47
|
+
};
|
|
48
|
+
ops.push({ op: "addNode", node });
|
|
49
|
+
addedNodeIds.push(entity.id);
|
|
50
|
+
unpositionedNodeIds.push(entity.id);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const changes = {};
|
|
54
|
+
if (existing.type !== type)
|
|
55
|
+
changes.type = type;
|
|
56
|
+
if ((existing.label ?? null) !== label)
|
|
57
|
+
changes.label = label;
|
|
58
|
+
const previousData = (0, types_js_1.dbNodeData)(existing.data);
|
|
59
|
+
if (!sameJson(previousData, data) || existing.data?.db !== undefined && existing.data.db.columnInputs !== undefined)
|
|
60
|
+
changes.data = { db: data };
|
|
61
|
+
if (Object.keys(changes).length > 0)
|
|
62
|
+
ops.push({ op: "updateNode", id: entity.id, changes });
|
|
63
|
+
// Height follows the column count; the width is the user's (only widened
|
|
64
|
+
// when a new column no longer fits a never-resized box).
|
|
65
|
+
const previousCount = previousData?.columns ?? entity.columns.length;
|
|
66
|
+
if (previousCount !== entity.columns.length || !previousData) {
|
|
67
|
+
const auto = (0, types_js_1.databaseEntitySize)(entity, Boolean(existing.collapsed));
|
|
68
|
+
const height = (0, types_js_1.databaseNodeHeight)(entity.columns.length, Boolean(existing.collapsed));
|
|
69
|
+
const width = Math.max(existing.size.width, previousData ? 0 : auto.width);
|
|
70
|
+
if (Math.abs(height - existing.size.height) >= 0.5 || Math.abs(width - existing.size.width) >= 0.5) {
|
|
71
|
+
ops.push({ op: "resizeNode", id: entity.id, size: { width, height } });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
for (const relationship of model.relationships) {
|
|
76
|
+
if (!wantedEntities.has(relationship.source.entityId) || !wantedEntities.has(relationship.target.entityId))
|
|
77
|
+
continue;
|
|
78
|
+
const existing = existingEdges.get(relationship.id);
|
|
79
|
+
const data = {
|
|
80
|
+
cardinality: relationship.cardinality,
|
|
81
|
+
kind: relationship.kind,
|
|
82
|
+
sourceColumns: [...relationship.source.columnIds],
|
|
83
|
+
targetColumns: [...relationship.target.columnIds],
|
|
84
|
+
...(relationship.name ? { name: relationship.name } : {}),
|
|
85
|
+
};
|
|
86
|
+
const markers = (0, types_js_1.markersForRelationship)(model, relationship);
|
|
87
|
+
if (!existing) {
|
|
88
|
+
const edge = {
|
|
89
|
+
id: relationship.id,
|
|
90
|
+
source: relationship.source.entityId,
|
|
91
|
+
target: relationship.target.entityId,
|
|
92
|
+
...(relationship.label ? { label: relationship.label } : {}),
|
|
93
|
+
markerStart: markers.markerStart,
|
|
94
|
+
markerEnd: markers.markerEnd,
|
|
95
|
+
data: { db: data },
|
|
96
|
+
};
|
|
97
|
+
ops.push({ op: "addEdge", edge });
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const changes = {};
|
|
101
|
+
if (existing.source !== relationship.source.entityId)
|
|
102
|
+
changes.source = relationship.source.entityId;
|
|
103
|
+
if (existing.target !== relationship.target.entityId)
|
|
104
|
+
changes.target = relationship.target.entityId;
|
|
105
|
+
if ((relationship.label ?? null) !== (existing.label ?? null))
|
|
106
|
+
changes.label = relationship.label ?? null;
|
|
107
|
+
if ((existing.markerStart ?? null) !== markers.markerStart)
|
|
108
|
+
changes.markerStart = markers.markerStart;
|
|
109
|
+
if ((existing.markerEnd ?? null) !== markers.markerEnd)
|
|
110
|
+
changes.markerEnd = markers.markerEnd;
|
|
111
|
+
if (!sameJson((0, types_js_1.dbEdgeData)(existing.data), data))
|
|
112
|
+
changes.data = { db: data };
|
|
113
|
+
if (Object.keys(changes).length > 0)
|
|
114
|
+
ops.push({ op: "updateEdge", id: relationship.id, changes });
|
|
115
|
+
}
|
|
116
|
+
return { ops, addedNodeIds, removedNodeIds, unpositionedNodeIds };
|
|
117
|
+
};
|
|
118
|
+
exports.syncOpsFromDatabase = syncOpsFromDatabase;
|
|
119
|
+
//# sourceMappingURL=derive.js.map
|