harness-mcp-v2 3.2.7 → 3.2.9
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/README.md +10 -26
- package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
- package/build/data/schemas/v0/pipeline.js +360 -0
- package/build/data/schemas/v0/pipeline.js.map +1 -1
- package/build/data/schemas/v0/template.d.ts.map +1 -1
- package/build/data/schemas/v0/template.js +457 -0
- package/build/data/schemas/v0/template.js.map +1 -1
- package/build/data/schemas/v1/pipeline.d.ts.map +1 -1
- package/build/data/schemas/v1/pipeline.js +121 -0
- package/build/data/schemas/v1/pipeline.js.map +1 -1
- package/build/data/schemas/v1/template.d.ts.map +1 -1
- package/build/data/schemas/v1/template.js +121 -0
- package/build/data/schemas/v1/template.js.map +1 -1
- package/build/prompts/index.d.ts.map +1 -1
- package/build/prompts/index.js +4 -0
- package/build/prompts/index.js.map +1 -1
- package/build/prompts/summarize-pipeline.d.ts +3 -0
- package/build/prompts/summarize-pipeline.d.ts.map +1 -0
- package/build/prompts/summarize-pipeline.js +64 -0
- package/build/prompts/summarize-pipeline.js.map +1 -0
- package/build/registry/index.d.ts.map +1 -1
- package/build/registry/index.js +0 -2
- package/build/registry/index.js.map +1 -1
- package/build/registry/toolsets/ansible.d.ts.map +1 -1
- package/build/registry/toolsets/ansible.js +2 -3
- package/build/registry/toolsets/ansible.js.map +1 -1
- package/build/registry/toolsets/ccm.d.ts.map +1 -1
- package/build/registry/toolsets/ccm.js +3 -3
- package/build/registry/toolsets/ccm.js.map +1 -1
- package/build/registry/toolsets/iacm.d.ts.map +1 -1
- package/build/registry/toolsets/iacm.js +2 -3
- package/build/registry/toolsets/iacm.js.map +1 -1
- package/build/registry/toolsets/pipelines.d.ts.map +1 -1
- package/build/registry/toolsets/pipelines.js +10 -2
- package/build/registry/toolsets/pipelines.js.map +1 -1
- package/build/registry/toolsets/sto.d.ts.map +1 -1
- package/build/registry/toolsets/sto.js +4 -8
- package/build/registry/toolsets/sto.js.map +1 -1
- package/build/registry/types.d.ts +11 -3
- package/build/registry/types.d.ts.map +1 -1
- package/build/registry/types.js.map +1 -1
- package/build/tools/diagnose/pipeline.d.ts.map +1 -1
- package/build/tools/diagnose/pipeline.js +17 -0
- package/build/tools/diagnose/pipeline.js.map +1 -1
- package/build/tools/harness-diagnose.d.ts.map +1 -1
- package/build/tools/harness-diagnose.js +2 -57
- package/build/tools/harness-diagnose.js.map +1 -1
- package/build/tools/harness-execute.d.ts.map +1 -1
- package/build/tools/harness-execute.js +56 -4
- package/build/tools/harness-execute.js.map +1 -1
- package/build/tools/harness-get.d.ts.map +1 -1
- package/build/tools/harness-get.js +1 -0
- package/build/tools/harness-get.js.map +1 -1
- package/build/tools/harness-list.d.ts.map +1 -1
- package/build/tools/harness-list.js +1 -23
- package/build/tools/harness-list.js.map +1 -1
- package/build/tools/harness-status.d.ts.map +1 -1
- package/build/tools/harness-status.js +1 -16
- package/build/tools/harness-status.js.map +1 -1
- package/build/tools/output-schemas.d.ts +0 -1
- package/build/tools/output-schemas.d.ts.map +1 -1
- package/build/tools/output-schemas.js +0 -1
- package/build/tools/output-schemas.js.map +1 -1
- package/build/utils/materialize-input-sets.d.ts +12 -0
- package/build/utils/materialize-input-sets.d.ts.map +1 -1
- package/build/utils/materialize-input-sets.js +8 -2
- package/build/utils/materialize-input-sets.js.map +1 -1
- package/build/utils/poll-execution.d.ts.map +1 -1
- package/build/utils/poll-execution.js +3 -0
- package/build/utils/poll-execution.js.map +1 -1
- package/build/utils/response-formatter.d.ts +0 -10
- package/build/utils/response-formatter.d.ts.map +1 -1
- package/build/utils/response-formatter.js +0 -21
- package/build/utils/response-formatter.js.map +1 -1
- package/package.json +1 -2
- package/build/registry/toolsets/visualizations.d.ts +0 -8
- package/build/registry/toolsets/visualizations.d.ts.map +0 -1
- package/build/registry/toolsets/visualizations.js +0 -116
- package/build/registry/toolsets/visualizations.js.map +0 -1
- package/build/utils/svg/architecture.d.ts +0 -40
- package/build/utils/svg/architecture.d.ts.map +0 -1
- package/build/utils/svg/architecture.js +0 -354
- package/build/utils/svg/architecture.js.map +0 -1
- package/build/utils/svg/charts/bar.d.ts +0 -11
- package/build/utils/svg/charts/bar.d.ts.map +0 -1
- package/build/utils/svg/charts/bar.js +0 -93
- package/build/utils/svg/charts/bar.js.map +0 -1
- package/build/utils/svg/charts/index.d.ts +0 -8
- package/build/utils/svg/charts/index.d.ts.map +0 -1
- package/build/utils/svg/charts/index.js +0 -4
- package/build/utils/svg/charts/index.js.map +0 -1
- package/build/utils/svg/charts/pie.d.ts +0 -10
- package/build/utils/svg/charts/pie.d.ts.map +0 -1
- package/build/utils/svg/charts/pie.js +0 -105
- package/build/utils/svg/charts/pie.js.map +0 -1
- package/build/utils/svg/charts/scatter.d.ts +0 -11
- package/build/utils/svg/charts/scatter.d.ts.map +0 -1
- package/build/utils/svg/charts/scatter.js +0 -101
- package/build/utils/svg/charts/scatter.js.map +0 -1
- package/build/utils/svg/charts/types.d.ts +0 -39
- package/build/utils/svg/charts/types.d.ts.map +0 -1
- package/build/utils/svg/charts/types.js +0 -5
- package/build/utils/svg/charts/types.js.map +0 -1
- package/build/utils/svg/colors.d.ts +0 -25
- package/build/utils/svg/colors.d.ts.map +0 -1
- package/build/utils/svg/colors.js +0 -66
- package/build/utils/svg/colors.js.map +0 -1
- package/build/utils/svg/escape.d.ts +0 -6
- package/build/utils/svg/escape.d.ts.map +0 -1
- package/build/utils/svg/escape.js +0 -20
- package/build/utils/svg/escape.js.map +0 -1
- package/build/utils/svg/executions-timeseries.d.ts +0 -12
- package/build/utils/svg/executions-timeseries.d.ts.map +0 -1
- package/build/utils/svg/executions-timeseries.js +0 -99
- package/build/utils/svg/executions-timeseries.js.map +0 -1
- package/build/utils/svg/index.d.ts +0 -15
- package/build/utils/svg/index.d.ts.map +0 -1
- package/build/utils/svg/index.js +0 -12
- package/build/utils/svg/index.js.map +0 -1
- package/build/utils/svg/list-visuals.d.ts +0 -15
- package/build/utils/svg/list-visuals.d.ts.map +0 -1
- package/build/utils/svg/list-visuals.js +0 -141
- package/build/utils/svg/list-visuals.js.map +0 -1
- package/build/utils/svg/mappers.d.ts +0 -16
- package/build/utils/svg/mappers.d.ts.map +0 -1
- package/build/utils/svg/mappers.js +0 -93
- package/build/utils/svg/mappers.js.map +0 -1
- package/build/utils/svg/render-png-child.d.ts +0 -2
- package/build/utils/svg/render-png-child.d.ts.map +0 -1
- package/build/utils/svg/render-png-child.js +0 -30
- package/build/utils/svg/render-png-child.js.map +0 -1
- package/build/utils/svg/render-png.d.ts +0 -17
- package/build/utils/svg/render-png.d.ts.map +0 -1
- package/build/utils/svg/render-png.js +0 -112
- package/build/utils/svg/render-png.js.map +0 -1
- package/build/utils/svg/stage-flow.d.ts +0 -11
- package/build/utils/svg/stage-flow.d.ts.map +0 -1
- package/build/utils/svg/stage-flow.js +0 -93
- package/build/utils/svg/stage-flow.js.map +0 -1
- package/build/utils/svg/status-summary.d.ts +0 -10
- package/build/utils/svg/status-summary.d.ts.map +0 -1
- package/build/utils/svg/status-summary.js +0 -73
- package/build/utils/svg/status-summary.js.map +0 -1
- package/build/utils/svg/timeline.d.ts +0 -12
- package/build/utils/svg/timeline.d.ts.map +0 -1
- package/build/utils/svg/timeline.js +0 -132
- package/build/utils/svg/timeline.js.map +0 -1
- package/build/utils/svg/types.d.ts +0 -63
- package/build/utils/svg/types.d.ts.map +0 -1
- package/build/utils/svg/types.js +0 -6
- package/build/utils/svg/types.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harness-mcp-v2",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.9",
|
|
4
4
|
"description": "Give AI agents full access to the Harness.io platform — manage pipelines, deployments, cloud costs, chaos engineering, feature flags, SEI, and 125+ resource types through 11 MCP tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -52,7 +52,6 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@hono/node-server": "^2.0.0",
|
|
54
54
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
55
|
-
"@resvg/resvg-js": "^2.6.2",
|
|
56
55
|
"dotenv": "^17.3.1",
|
|
57
56
|
"express": "^5.2.1",
|
|
58
57
|
"hono": "^4.12.25",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ToolsetDefinition } from "../types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Local-only visualization resource types.
|
|
4
|
-
* These have no API operations — they exist purely as metadata for harness_describe
|
|
5
|
-
* so the LLM can discover what visual chart types are available and how to use them.
|
|
6
|
-
*/
|
|
7
|
-
export declare const visualizationsToolset: ToolsetDefinition;
|
|
8
|
-
//# sourceMappingURL=visualizations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visualizations.d.ts","sourceRoot":"","sources":["../../../src/registry/toolsets/visualizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBA6GnC,CAAC"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local-only visualization resource types.
|
|
3
|
-
* These have no API operations — they exist purely as metadata for harness_describe
|
|
4
|
-
* so the LLM can discover what visual chart types are available and how to use them.
|
|
5
|
-
*/
|
|
6
|
-
export const visualizationsToolset = {
|
|
7
|
-
name: "visualizations",
|
|
8
|
-
displayName: "Visualizations",
|
|
9
|
-
description: "Inline PNG chart visualizations rendered from Harness data. Use include_visual=true on supported tools.",
|
|
10
|
-
resources: [
|
|
11
|
-
{
|
|
12
|
-
resourceType: "visual_timeline",
|
|
13
|
-
displayName: "Pipeline Timeline (Gantt)",
|
|
14
|
-
description: "Horizontal Gantt chart showing pipeline stage execution over time. Color-coded by status (green=success, red=failed, blue=running). Shows duration per stage and bottleneck identification.",
|
|
15
|
-
toolset: "visualizations",
|
|
16
|
-
scope: "project",
|
|
17
|
-
identifierFields: [],
|
|
18
|
-
operations: {},
|
|
19
|
-
diagnosticHint: [
|
|
20
|
-
"To render: call harness_diagnose with options: { include_visual: true, visual_type: 'timeline' }",
|
|
21
|
-
"Requires: an execution_id or pipeline_id (uses latest execution).",
|
|
22
|
-
"Also supports visual_width (number, default 800) for wider charts.",
|
|
23
|
-
"The response includes both JSON diagnosis data and an inline PNG image.",
|
|
24
|
-
].join("\n"),
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
resourceType: "visual_stage_flow",
|
|
28
|
-
displayName: "Pipeline Stage Flow (DAG)",
|
|
29
|
-
description: "Left-to-right flowchart showing pipeline stages as connected nodes with arrows. Status-colored borders, step count labels. Good for understanding pipeline structure.",
|
|
30
|
-
toolset: "visualizations",
|
|
31
|
-
scope: "project",
|
|
32
|
-
identifierFields: [],
|
|
33
|
-
operations: {},
|
|
34
|
-
diagnosticHint: [
|
|
35
|
-
"To render: call harness_diagnose with options: { include_visual: true, visual_type: 'flow' }",
|
|
36
|
-
"Requires: an execution_id or pipeline_id.",
|
|
37
|
-
"Also supports visual_width (number, default 800).",
|
|
38
|
-
].join("\n"),
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
resourceType: "visual_health_dashboard",
|
|
42
|
-
displayName: "Project Health Dashboard",
|
|
43
|
-
description: "Project health overview with health badge (healthy/degraded/failing), metric cards (failed, running, recent counts), and recent execution status bar.",
|
|
44
|
-
toolset: "visualizations",
|
|
45
|
-
scope: "project",
|
|
46
|
-
identifierFields: [],
|
|
47
|
-
operations: {},
|
|
48
|
-
diagnosticHint: [
|
|
49
|
-
"To render: call harness_status with include_visual: true",
|
|
50
|
-
"Optionally pass org_id and project_id to scope the dashboard.",
|
|
51
|
-
"The response includes both JSON health data and an inline PNG image.",
|
|
52
|
-
].join("\n"),
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
resourceType: "visual_pie_chart",
|
|
56
|
-
displayName: "Pie / Donut Chart",
|
|
57
|
-
description: "Donut chart showing execution breakdown by status (Success, Failed, Expired, etc.) with percentages. Includes auto-generated analysis with key insights.",
|
|
58
|
-
toolset: "visualizations",
|
|
59
|
-
scope: "project",
|
|
60
|
-
identifierFields: [],
|
|
61
|
-
operations: {},
|
|
62
|
-
diagnosticHint: [
|
|
63
|
-
"To render: call harness_list with resource_type='execution', include_visual: true, visual_type: 'pie'",
|
|
64
|
-
"The chart aggregates list results by execution status.",
|
|
65
|
-
"The response includes JSON data with an 'analysis' field and an inline PNG donut chart.",
|
|
66
|
-
].join("\n"),
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
resourceType: "visual_bar_chart",
|
|
70
|
-
displayName: "Bar Chart (by Pipeline)",
|
|
71
|
-
description: "Horizontal bar chart showing execution counts grouped by pipeline name. Useful for comparing activity across pipelines.",
|
|
72
|
-
toolset: "visualizations",
|
|
73
|
-
scope: "project",
|
|
74
|
-
identifierFields: [],
|
|
75
|
-
operations: {},
|
|
76
|
-
diagnosticHint: [
|
|
77
|
-
"To render: call harness_list with resource_type='execution', include_visual: true, visual_type: 'bar'",
|
|
78
|
-
"The chart aggregates list results by pipeline identifier.",
|
|
79
|
-
"The response includes JSON data with an 'analysis' field and an inline PNG bar chart.",
|
|
80
|
-
].join("\n"),
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
resourceType: "visual_timeseries",
|
|
84
|
-
displayName: "Execution Timeseries",
|
|
85
|
-
description: "Stacked bar chart showing daily execution counts over the last 30 days, broken down by status (Success/Failed/Expired/Running). Good for spotting trends.",
|
|
86
|
-
toolset: "visualizations",
|
|
87
|
-
scope: "project",
|
|
88
|
-
identifierFields: [],
|
|
89
|
-
operations: {},
|
|
90
|
-
diagnosticHint: [
|
|
91
|
-
"To render: call harness_list with resource_type='execution', include_visual: true, visual_type: 'timeseries'",
|
|
92
|
-
"Aggregates executions by day from startTs timestamps.",
|
|
93
|
-
"For best results, set size=100 to get more data points.",
|
|
94
|
-
"The response includes JSON data and an inline PNG stacked bar chart.",
|
|
95
|
-
].join("\n"),
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
resourceType: "visual_architecture",
|
|
99
|
-
displayName: "Pipeline Architecture Diagram",
|
|
100
|
-
description: "Multi-level architecture diagram showing the full pipeline hierarchy: stages → step groups → steps, with deployment strategy, service/environment refs, rollback paths, and failure handling. Parsed from pipeline YAML.",
|
|
101
|
-
toolset: "visualizations",
|
|
102
|
-
scope: "project",
|
|
103
|
-
identifierFields: [],
|
|
104
|
-
operations: {},
|
|
105
|
-
diagnosticHint: [
|
|
106
|
-
"To render: call harness_diagnose with options: { include_visual: true, visual_type: 'architecture', pipeline_id: '<id>', include_yaml: true }",
|
|
107
|
-
"The include_yaml: true option fetches the pipeline YAML which is parsed into the diagram.",
|
|
108
|
-
"Shows: Pipeline → Stages (with type badge: CI/Deployment/Approval) → Step Groups → Steps (with type + timeout).",
|
|
109
|
-
"For Deployment stages: shows strategy (Canary/Rolling/BlueGreen), service ref, environment ref, infrastructure type.",
|
|
110
|
-
"Rollback steps are shown in a separate red-highlighted section.",
|
|
111
|
-
"The response includes both JSON diagnosis data and an inline PNG architecture diagram.",
|
|
112
|
-
].join("\n"),
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
};
|
|
116
|
-
//# sourceMappingURL=visualizations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visualizations.js","sourceRoot":"","sources":["../../../src/registry/toolsets/visualizations.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,yGAAyG;IACtH,SAAS,EAAE;QACT;YACE,YAAY,EAAE,iBAAiB;YAC/B,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,6LAA6L;YAC1M,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,kGAAkG;gBAClG,mEAAmE;gBACnE,oEAAoE;gBACpE,yEAAyE;aAC1E,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,2BAA2B;YACxC,WAAW,EAAE,uKAAuK;YACpL,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,8FAA8F;gBAC9F,2CAA2C;gBAC3C,mDAAmD;aACpD,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,yBAAyB;YACvC,WAAW,EAAE,0BAA0B;YACvC,WAAW,EAAE,uJAAuJ;YACpK,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,0DAA0D;gBAC1D,+DAA+D;gBAC/D,sEAAsE;aACvE,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,0JAA0J;YACvK,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,uGAAuG;gBACvG,wDAAwD;gBACxD,yFAAyF;aAC1F,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,yBAAyB;YACtC,WAAW,EAAE,yHAAyH;YACtI,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,uGAAuG;gBACvG,2DAA2D;gBAC3D,uFAAuF;aACxF,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,2JAA2J;YACxK,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,8GAA8G;gBAC9G,uDAAuD;gBACvD,yDAAyD;gBACzD,sEAAsE;aACvE,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,YAAY,EAAE,qBAAqB;YACnC,WAAW,EAAE,+BAA+B;YAC5C,WAAW,EAAE,0NAA0N;YACvO,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,SAAS;YAChB,gBAAgB,EAAE,EAAE;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE;gBACd,+IAA+I;gBAC/I,2FAA2F;gBAC3F,iHAAiH;gBACjH,sHAAsH;gBACtH,iEAAiE;gBACjE,wFAAwF;aACzF,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;KACF;CACF,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pipeline Architecture Diagram — multi-level hierarchy from pipeline YAML.
|
|
3
|
-
* Shows: Pipeline → Stages → Step Groups → Steps, with deployment strategy,
|
|
4
|
-
* rollback paths, service/infra refs, and failure handling.
|
|
5
|
-
*/
|
|
6
|
-
interface ParsedStep {
|
|
7
|
-
name: string;
|
|
8
|
-
type: string;
|
|
9
|
-
timeout?: string;
|
|
10
|
-
status?: string;
|
|
11
|
-
}
|
|
12
|
-
interface ParsedStepGroup {
|
|
13
|
-
name: string;
|
|
14
|
-
steps: ParsedStep[];
|
|
15
|
-
}
|
|
16
|
-
interface ParsedStage {
|
|
17
|
-
name: string;
|
|
18
|
-
type: string;
|
|
19
|
-
strategy?: string;
|
|
20
|
-
service?: string;
|
|
21
|
-
environment?: string;
|
|
22
|
-
infrastructure?: string;
|
|
23
|
-
stepGroups: ParsedStepGroup[];
|
|
24
|
-
rollbackSteps: ParsedStep[];
|
|
25
|
-
failureStrategy?: string;
|
|
26
|
-
status?: string;
|
|
27
|
-
}
|
|
28
|
-
interface ParsedPipeline {
|
|
29
|
-
name: string;
|
|
30
|
-
identifier: string;
|
|
31
|
-
stages: ParsedStage[];
|
|
32
|
-
}
|
|
33
|
-
export declare function parsePipelineYaml(yamlObj: unknown): ParsedPipeline | null;
|
|
34
|
-
export interface ArchitectureOptions {
|
|
35
|
-
width?: number;
|
|
36
|
-
maxSteps?: number;
|
|
37
|
-
}
|
|
38
|
-
export declare function renderArchitectureSvg(pipeline: ParsedPipeline, options?: ArchitectureOptions): string;
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=architecture.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../../src/utils/svg/architecture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AA6ED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAgFzE;AAID,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4BD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CA6LrG"}
|
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pipeline Architecture Diagram — multi-level hierarchy from pipeline YAML.
|
|
3
|
-
* Shows: Pipeline → Stages → Step Groups → Steps, with deployment strategy,
|
|
4
|
-
* rollback paths, service/infra refs, and failure handling.
|
|
5
|
-
*/
|
|
6
|
-
import { getStatusColor, FONT_FAMILY, SURFACE_COLOR, BORDER_COLOR, TEXT_PRIMARY, TEXT_SECONDARY, TEXT_MUTED, CHART_PALETTE, svgDefs, } from "./colors.js";
|
|
7
|
-
import { escapeXml, truncateLabel } from "./escape.js";
|
|
8
|
-
// ─── YAML parser ────────────────────────────────────────────────────────────
|
|
9
|
-
function extractSteps(stepsArray) {
|
|
10
|
-
const groups = [];
|
|
11
|
-
const ungrouped = [];
|
|
12
|
-
for (const entry of stepsArray) {
|
|
13
|
-
if (!entry || typeof entry !== "object")
|
|
14
|
-
continue;
|
|
15
|
-
const e = entry;
|
|
16
|
-
if (e.stepGroup && typeof e.stepGroup === "object") {
|
|
17
|
-
const sg = e.stepGroup;
|
|
18
|
-
const steps = [];
|
|
19
|
-
if (Array.isArray(sg.steps)) {
|
|
20
|
-
for (const s of sg.steps) {
|
|
21
|
-
if (s && typeof s === "object" && s.step) {
|
|
22
|
-
const step = s.step;
|
|
23
|
-
steps.push({
|
|
24
|
-
name: String(step.name ?? step.identifier ?? "Step"),
|
|
25
|
-
type: String(step.type ?? "Unknown"),
|
|
26
|
-
timeout: step.timeout ? String(step.timeout) : undefined,
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
groups.push({ name: String(sg.name ?? sg.identifier ?? "Step Group"), steps });
|
|
32
|
-
}
|
|
33
|
-
else if (e.step && typeof e.step === "object") {
|
|
34
|
-
const step = e.step;
|
|
35
|
-
ungrouped.push({
|
|
36
|
-
name: String(step.name ?? step.identifier ?? "Step"),
|
|
37
|
-
type: String(step.type ?? "Unknown"),
|
|
38
|
-
timeout: step.timeout ? String(step.timeout) : undefined,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
else if (e.parallel && Array.isArray(e.parallel)) {
|
|
42
|
-
// Parallel steps — flatten into a single group
|
|
43
|
-
const steps = [];
|
|
44
|
-
for (const p of e.parallel) {
|
|
45
|
-
if (p && typeof p === "object" && p.step) {
|
|
46
|
-
const step = p.step;
|
|
47
|
-
steps.push({
|
|
48
|
-
name: String(step.name ?? step.identifier ?? "Step"),
|
|
49
|
-
type: String(step.type ?? "Unknown"),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (steps.length > 0)
|
|
54
|
-
groups.push({ name: "Parallel", steps });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return { groups, ungrouped };
|
|
58
|
-
}
|
|
59
|
-
function extractRollback(stepsArray) {
|
|
60
|
-
const steps = [];
|
|
61
|
-
for (const entry of stepsArray) {
|
|
62
|
-
if (!entry || typeof entry !== "object")
|
|
63
|
-
continue;
|
|
64
|
-
const e = entry;
|
|
65
|
-
if (e.step && typeof e.step === "object") {
|
|
66
|
-
const step = e.step;
|
|
67
|
-
steps.push({
|
|
68
|
-
name: String(step.name ?? step.identifier ?? "Step"),
|
|
69
|
-
type: String(step.type ?? "Unknown"),
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return steps;
|
|
74
|
-
}
|
|
75
|
-
function extractFailureStrategy(strategies) {
|
|
76
|
-
if (!Array.isArray(strategies) || strategies.length === 0)
|
|
77
|
-
return undefined;
|
|
78
|
-
const first = strategies[0];
|
|
79
|
-
const onFailure = first?.onFailure;
|
|
80
|
-
const action = onFailure?.action;
|
|
81
|
-
return action?.type ? String(action.type) : undefined;
|
|
82
|
-
}
|
|
83
|
-
export function parsePipelineYaml(yamlObj) {
|
|
84
|
-
if (!yamlObj || typeof yamlObj !== "object")
|
|
85
|
-
return null;
|
|
86
|
-
const root = yamlObj;
|
|
87
|
-
const pipeline = (root.pipeline ?? root);
|
|
88
|
-
if (!pipeline.stages && !pipeline.name)
|
|
89
|
-
return null;
|
|
90
|
-
const name = String(pipeline.name ?? pipeline.identifier ?? "Pipeline");
|
|
91
|
-
const identifier = String(pipeline.identifier ?? "");
|
|
92
|
-
const stagesArray = Array.isArray(pipeline.stages) ? pipeline.stages : [];
|
|
93
|
-
const stages = [];
|
|
94
|
-
for (const entry of stagesArray) {
|
|
95
|
-
if (!entry || typeof entry !== "object")
|
|
96
|
-
continue;
|
|
97
|
-
const e = entry;
|
|
98
|
-
const stageObj = (e.stage ?? e);
|
|
99
|
-
const spec = (stageObj.spec ?? {});
|
|
100
|
-
const execution = (spec.execution ?? {});
|
|
101
|
-
const stageType = String(stageObj.type ?? "Custom");
|
|
102
|
-
let strategy;
|
|
103
|
-
let service;
|
|
104
|
-
let environment;
|
|
105
|
-
let infrastructure;
|
|
106
|
-
// Deployment metadata
|
|
107
|
-
if (stageType === "Deployment") {
|
|
108
|
-
const strat = execution.strategy;
|
|
109
|
-
strategy = strat?.type ? String(strat.type) : undefined;
|
|
110
|
-
const svcConfig = spec.serviceConfig;
|
|
111
|
-
const svc = svcConfig?.service;
|
|
112
|
-
service = svc?.serviceRef ? String(svc.serviceRef) : (svc?.name ? String(svc.name) : undefined);
|
|
113
|
-
// Also check spec.service directly (newer YAML format)
|
|
114
|
-
if (!service) {
|
|
115
|
-
const svcDirect = spec.service;
|
|
116
|
-
service = svcDirect?.serviceRef ? String(svcDirect.serviceRef) : undefined;
|
|
117
|
-
}
|
|
118
|
-
const infra = spec.infrastructure;
|
|
119
|
-
environment = infra?.environmentRef ? String(infra.environmentRef) : undefined;
|
|
120
|
-
const infraDef = infra?.infrastructureDefinition;
|
|
121
|
-
infrastructure = infraDef?.type ? String(infraDef.type) : undefined;
|
|
122
|
-
if (!environment) {
|
|
123
|
-
const envDirect = spec.environment;
|
|
124
|
-
environment = envDirect?.environmentRef ? String(envDirect.environmentRef) : undefined;
|
|
125
|
-
infrastructure = envDirect?.infrastructureDefinitions ? "Infra" : infrastructure;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const stepsArr = Array.isArray(execution.steps) ? execution.steps : [];
|
|
129
|
-
const { groups, ungrouped } = extractSteps(stepsArr);
|
|
130
|
-
// If ungrouped steps exist, create a default group
|
|
131
|
-
const stepGroups = [...groups];
|
|
132
|
-
if (ungrouped.length > 0) {
|
|
133
|
-
stepGroups.unshift({ name: "Steps", steps: ungrouped });
|
|
134
|
-
}
|
|
135
|
-
const rollbackArr = Array.isArray(execution.rollbackSteps) ? execution.rollbackSteps : [];
|
|
136
|
-
const rollbackSteps = extractRollback(rollbackArr);
|
|
137
|
-
const failureStrategy = extractFailureStrategy(Array.isArray(stageObj.failureStrategies) ? stageObj.failureStrategies : []);
|
|
138
|
-
stages.push({
|
|
139
|
-
name: String(stageObj.name ?? stageObj.identifier ?? "Stage"),
|
|
140
|
-
type: stageType,
|
|
141
|
-
strategy,
|
|
142
|
-
service,
|
|
143
|
-
environment,
|
|
144
|
-
infrastructure,
|
|
145
|
-
stepGroups,
|
|
146
|
-
rollbackSteps,
|
|
147
|
-
failureStrategy,
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
return { name, identifier, stages };
|
|
151
|
-
}
|
|
152
|
-
const STAGE_COLORS = {
|
|
153
|
-
CI: "#6366f1",
|
|
154
|
-
Deployment: "#10b981",
|
|
155
|
-
Approval: "#f59e0b",
|
|
156
|
-
Custom: "#a855f7",
|
|
157
|
-
SecurityTests: "#06b6d4",
|
|
158
|
-
Pipeline: "#ec4899",
|
|
159
|
-
};
|
|
160
|
-
const STEP_TYPE_ICONS = {
|
|
161
|
-
Run: "\u25B6",
|
|
162
|
-
K8sCanaryDeploy: "\u{1F680}",
|
|
163
|
-
K8sRollingDeploy: "\u{1F680}",
|
|
164
|
-
K8sBlueGreenDeploy: "\u{1F680}",
|
|
165
|
-
K8sCanaryDelete: "\u{1F5D1}",
|
|
166
|
-
K8sRollingRollback: "\u21A9",
|
|
167
|
-
HarnessApproval: "\u2714",
|
|
168
|
-
BuildAndPushDockerRegistry: "\u{1F4E6}",
|
|
169
|
-
ShellScript: "\u{1F4BB}",
|
|
170
|
-
Http: "\u{1F310}",
|
|
171
|
-
};
|
|
172
|
-
function stepIcon(type) {
|
|
173
|
-
return STEP_TYPE_ICONS[type] ?? "\u25AA";
|
|
174
|
-
}
|
|
175
|
-
export function renderArchitectureSvg(pipeline, options) {
|
|
176
|
-
const W = options?.width ?? 900;
|
|
177
|
-
const maxSteps = options?.maxSteps ?? 15;
|
|
178
|
-
const PAD = 24;
|
|
179
|
-
const HDR_H = 52;
|
|
180
|
-
const STAGE_HDR = 44;
|
|
181
|
-
const GROUP_HDR = 28;
|
|
182
|
-
const STEP_H = 22;
|
|
183
|
-
const STEP_GAP = 4;
|
|
184
|
-
const STAGE_GAP = 16;
|
|
185
|
-
const ROLLBACK_HDR = 24;
|
|
186
|
-
const META_LINE = 16;
|
|
187
|
-
const STAGE_PAD = 12;
|
|
188
|
-
// Pre-calculate height
|
|
189
|
-
let totalH = HDR_H + PAD;
|
|
190
|
-
for (const stage of pipeline.stages) {
|
|
191
|
-
let stageH = STAGE_HDR + STAGE_PAD;
|
|
192
|
-
// Meta lines (service, env, strategy)
|
|
193
|
-
const metaLines = [];
|
|
194
|
-
if (stage.type === "Deployment") {
|
|
195
|
-
if (stage.strategy)
|
|
196
|
-
metaLines.push(`Strategy: ${stage.strategy}`);
|
|
197
|
-
if (stage.service)
|
|
198
|
-
metaLines.push(`Service: ${stage.service}`);
|
|
199
|
-
if (stage.environment)
|
|
200
|
-
metaLines.push(`Env: ${stage.environment}`);
|
|
201
|
-
}
|
|
202
|
-
stageH += metaLines.length * META_LINE;
|
|
203
|
-
if (metaLines.length > 0)
|
|
204
|
-
stageH += 4;
|
|
205
|
-
for (const group of stage.stepGroups) {
|
|
206
|
-
stageH += GROUP_HDR;
|
|
207
|
-
const stepCount = Math.min(group.steps.length, maxSteps);
|
|
208
|
-
stageH += stepCount * (STEP_H + STEP_GAP);
|
|
209
|
-
if (group.steps.length > maxSteps)
|
|
210
|
-
stageH += STEP_H;
|
|
211
|
-
stageH += 8;
|
|
212
|
-
}
|
|
213
|
-
if (stage.rollbackSteps.length > 0) {
|
|
214
|
-
stageH += ROLLBACK_HDR + stage.rollbackSteps.length * (STEP_H + STEP_GAP) + 8;
|
|
215
|
-
}
|
|
216
|
-
if (stage.failureStrategy)
|
|
217
|
-
stageH += META_LINE + 4;
|
|
218
|
-
totalH += stageH + STAGE_GAP;
|
|
219
|
-
}
|
|
220
|
-
totalH += PAD;
|
|
221
|
-
const STAGE_W = W - PAD * 2;
|
|
222
|
-
const GROUP_W = STAGE_W - STAGE_PAD * 2;
|
|
223
|
-
const elements = [];
|
|
224
|
-
let y = HDR_H + PAD;
|
|
225
|
-
for (let si = 0; si < pipeline.stages.length; si++) {
|
|
226
|
-
const stage = pipeline.stages[si];
|
|
227
|
-
const stageColor = STAGE_COLORS[stage.type] ?? CHART_PALETTE[si % CHART_PALETTE.length];
|
|
228
|
-
const stageY = y;
|
|
229
|
-
// Calculate this stage's height
|
|
230
|
-
let stageContentH = STAGE_HDR;
|
|
231
|
-
const metaLines = [];
|
|
232
|
-
if (stage.type === "Deployment") {
|
|
233
|
-
if (stage.strategy)
|
|
234
|
-
metaLines.push(`Strategy: ${stage.strategy}`);
|
|
235
|
-
if (stage.service)
|
|
236
|
-
metaLines.push(`Svc: ${stage.service}`);
|
|
237
|
-
if (stage.environment)
|
|
238
|
-
metaLines.push(`Env: ${stage.environment}`);
|
|
239
|
-
if (stage.infrastructure)
|
|
240
|
-
metaLines.push(`Infra: ${stage.infrastructure}`);
|
|
241
|
-
}
|
|
242
|
-
stageContentH += metaLines.length * META_LINE;
|
|
243
|
-
if (metaLines.length > 0)
|
|
244
|
-
stageContentH += 4;
|
|
245
|
-
for (const group of stage.stepGroups) {
|
|
246
|
-
stageContentH += GROUP_HDR;
|
|
247
|
-
const stepCount = Math.min(group.steps.length, maxSteps);
|
|
248
|
-
stageContentH += stepCount * (STEP_H + STEP_GAP);
|
|
249
|
-
if (group.steps.length > maxSteps)
|
|
250
|
-
stageContentH += STEP_H;
|
|
251
|
-
stageContentH += 8;
|
|
252
|
-
}
|
|
253
|
-
if (stage.rollbackSteps.length > 0) {
|
|
254
|
-
stageContentH += ROLLBACK_HDR + stage.rollbackSteps.length * (STEP_H + STEP_GAP) + 8;
|
|
255
|
-
}
|
|
256
|
-
if (stage.failureStrategy)
|
|
257
|
-
stageContentH += META_LINE + 4;
|
|
258
|
-
stageContentH += STAGE_PAD;
|
|
259
|
-
// Stage container
|
|
260
|
-
elements.push(`<rect x="${PAD}" y="${stageY}" width="${STAGE_W}" height="${stageContentH}" rx="10" fill="${SURFACE_COLOR}" stroke="${stageColor}" stroke-width="2" filter="url(#shadow)"/>`);
|
|
261
|
-
// Stage header bar
|
|
262
|
-
elements.push(`<rect x="${PAD}" y="${stageY}" width="${STAGE_W}" height="${STAGE_HDR}" rx="10" fill="${stageColor}" opacity="0.12"/>`);
|
|
263
|
-
elements.push(`<rect x="${PAD}" y="${stageY + STAGE_HDR - 2}" width="${STAGE_W}" height="2" fill="${stageColor}" opacity="0.12"/>`);
|
|
264
|
-
// Stage badge
|
|
265
|
-
elements.push(`<rect x="${PAD + 12}" y="${stageY + 10}" width="${stage.type.length * 7 + 16}" height="22" rx="4" fill="${stageColor}" opacity="0.2" stroke="${stageColor}" stroke-width="1"/>`);
|
|
266
|
-
elements.push(`<text x="${PAD + 20}" y="${stageY + 26}" fill="${stageColor}" font-size="10" font-weight="700" font-family="${FONT_FAMILY}">${escapeXml(stage.type.toUpperCase())}</text>`);
|
|
267
|
-
// Stage name
|
|
268
|
-
const badgeW = stage.type.length * 7 + 32;
|
|
269
|
-
elements.push(`<text x="${PAD + badgeW}" y="${stageY + 26}" fill="${TEXT_PRIMARY}" font-size="13" font-weight="700" font-family="${FONT_FAMILY}">${escapeXml(truncateLabel(stage.name, 40))}</text>`);
|
|
270
|
-
// Status if available
|
|
271
|
-
if (stage.status) {
|
|
272
|
-
const sc = getStatusColor(stage.status);
|
|
273
|
-
elements.push(`<circle cx="${PAD + STAGE_W - 20}" cy="${stageY + 22}" r="6" fill="${sc}"/>`);
|
|
274
|
-
}
|
|
275
|
-
let innerY = stageY + STAGE_HDR + 4;
|
|
276
|
-
// Meta lines
|
|
277
|
-
for (const meta of metaLines) {
|
|
278
|
-
elements.push(`<text x="${PAD + STAGE_PAD + 8}" y="${innerY + 12}" fill="${TEXT_MUTED}" font-size="9" font-weight="500" font-family="${FONT_FAMILY}">${escapeXml(meta)}</text>`);
|
|
279
|
-
innerY += META_LINE;
|
|
280
|
-
}
|
|
281
|
-
if (metaLines.length > 0)
|
|
282
|
-
innerY += 4;
|
|
283
|
-
// Step groups
|
|
284
|
-
for (let gi = 0; gi < stage.stepGroups.length; gi++) {
|
|
285
|
-
const group = stage.stepGroups[gi];
|
|
286
|
-
const groupX = PAD + STAGE_PAD;
|
|
287
|
-
const groupColor = CHART_PALETTE[(si * 3 + gi) % CHART_PALETTE.length];
|
|
288
|
-
// Group header
|
|
289
|
-
elements.push(`<rect x="${groupX}" y="${innerY}" width="${GROUP_W}" height="${GROUP_HDR}" rx="6" fill="${groupColor}" opacity="0.08"/>`);
|
|
290
|
-
elements.push(`<rect x="${groupX}" y="${innerY + 2}" width="3" height="${GROUP_HDR - 4}" rx="1" fill="${groupColor}"/>`);
|
|
291
|
-
elements.push(`<text x="${groupX + 12}" y="${innerY + 18}" fill="${TEXT_SECONDARY}" font-size="11" font-weight="600" font-family="${FONT_FAMILY}">${escapeXml(truncateLabel(group.name, 35))}</text>`);
|
|
292
|
-
elements.push(`<text x="${groupX + GROUP_W - 8}" y="${innerY + 18}" fill="${TEXT_MUTED}" font-size="9" font-family="${FONT_FAMILY}" text-anchor="end">${group.steps.length} step${group.steps.length !== 1 ? "s" : ""}</text>`);
|
|
293
|
-
innerY += GROUP_HDR;
|
|
294
|
-
// Steps
|
|
295
|
-
const displaySteps = group.steps.slice(0, maxSteps);
|
|
296
|
-
for (const step of displaySteps) {
|
|
297
|
-
const icon = stepIcon(step.type);
|
|
298
|
-
const stepColor = step.status ? getStatusColor(step.status) : TEXT_MUTED;
|
|
299
|
-
elements.push(`<text x="${groupX + 16}" y="${innerY + 15}" fill="${stepColor}" font-size="10" font-family="${FONT_FAMILY}">${icon}</text>`);
|
|
300
|
-
elements.push(`<text x="${groupX + 30}" y="${innerY + 15}" fill="${TEXT_PRIMARY}" font-size="10" font-family="${FONT_FAMILY}">${escapeXml(truncateLabel(step.name, 30))}</text>`);
|
|
301
|
-
elements.push(`<text x="${groupX + GROUP_W - 8}" y="${innerY + 15}" fill="${TEXT_MUTED}" font-size="8" font-family="${FONT_FAMILY}" text-anchor="end">${escapeXml(step.type)}${step.timeout ? ` \u00b7 ${step.timeout}` : ""}</text>`);
|
|
302
|
-
innerY += STEP_H + STEP_GAP;
|
|
303
|
-
}
|
|
304
|
-
if (group.steps.length > maxSteps) {
|
|
305
|
-
elements.push(`<text x="${groupX + 30}" y="${innerY + 15}" fill="${TEXT_MUTED}" font-size="9" font-family="${FONT_FAMILY}" font-style="italic">\u2026 +${group.steps.length - maxSteps} more steps</text>`);
|
|
306
|
-
innerY += STEP_H;
|
|
307
|
-
}
|
|
308
|
-
innerY += 8;
|
|
309
|
-
}
|
|
310
|
-
// Rollback section
|
|
311
|
-
if (stage.rollbackSteps.length > 0) {
|
|
312
|
-
const rbX = PAD + STAGE_PAD;
|
|
313
|
-
elements.push(`<rect x="${rbX}" y="${innerY}" width="${GROUP_W}" height="${ROLLBACK_HDR}" rx="6" fill="#f43f5e" opacity="0.08"/>`);
|
|
314
|
-
elements.push(`<rect x="${rbX}" y="${innerY + 2}" width="3" height="${ROLLBACK_HDR - 4}" rx="1" fill="#f43f5e"/>`);
|
|
315
|
-
elements.push(`<text x="${rbX + 12}" y="${innerY + 17}" fill="#f43f5e" font-size="10" font-weight="600" font-family="${FONT_FAMILY}">\u21A9 Rollback</text>`);
|
|
316
|
-
innerY += ROLLBACK_HDR;
|
|
317
|
-
for (const step of stage.rollbackSteps) {
|
|
318
|
-
elements.push(`<text x="${rbX + 16}" y="${innerY + 15}" fill="${TEXT_MUTED}" font-size="10" font-family="${FONT_FAMILY}">${stepIcon(step.type)}</text>`);
|
|
319
|
-
elements.push(`<text x="${rbX + 30}" y="${innerY + 15}" fill="${TEXT_SECONDARY}" font-size="10" font-family="${FONT_FAMILY}">${escapeXml(truncateLabel(step.name, 30))}</text>`);
|
|
320
|
-
elements.push(`<text x="${rbX + GROUP_W - 8}" y="${innerY + 15}" fill="${TEXT_MUTED}" font-size="8" font-family="${FONT_FAMILY}" text-anchor="end">${escapeXml(step.type)}</text>`);
|
|
321
|
-
innerY += STEP_H + STEP_GAP;
|
|
322
|
-
}
|
|
323
|
-
innerY += 8;
|
|
324
|
-
}
|
|
325
|
-
// Failure strategy
|
|
326
|
-
if (stage.failureStrategy) {
|
|
327
|
-
elements.push(`<text x="${PAD + STAGE_PAD + 8}" y="${innerY + 12}" fill="${TEXT_MUTED}" font-size="9" font-family="${FONT_FAMILY}">On failure: ${escapeXml(stage.failureStrategy)}</text>`);
|
|
328
|
-
}
|
|
329
|
-
y += stageContentH + STAGE_GAP;
|
|
330
|
-
// Arrow between stages
|
|
331
|
-
if (si < pipeline.stages.length - 1) {
|
|
332
|
-
const arrowX = W / 2;
|
|
333
|
-
const arrowY1 = y - STAGE_GAP;
|
|
334
|
-
const arrowY2 = y;
|
|
335
|
-
elements.push(`<line x1="${arrowX}" y1="${arrowY1}" x2="${arrowX}" y2="${arrowY2 - 4}" stroke="${BORDER_COLOR}" stroke-width="2" marker-end="url(#varrow)"/>`);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
// Title
|
|
339
|
-
const title = escapeXml(truncateLabel(pipeline.name, 50));
|
|
340
|
-
return `<svg xmlns="http://www.w3.org/2000/svg" width="${W}" height="${totalH}" viewBox="0 0 ${W} ${totalH}">
|
|
341
|
-
${svgDefs(W, totalH)}
|
|
342
|
-
<defs>
|
|
343
|
-
<marker id="varrow" markerWidth="10" markerHeight="8" refX="5" refY="8" orient="auto">
|
|
344
|
-
<polygon points="0 0, 10 0, 5 8" fill="${BORDER_COLOR}"/>
|
|
345
|
-
</marker>
|
|
346
|
-
</defs>
|
|
347
|
-
<rect width="${W}" height="${totalH}" rx="12" fill="url(#bgGrad)"/>
|
|
348
|
-
<rect x="${PAD}" y="${PAD}" width="${W - PAD * 2}" height="${HDR_H - PAD}" rx="8" fill="${SURFACE_COLOR}" stroke="${BORDER_COLOR}" stroke-width="1" filter="url(#shadow)"/>
|
|
349
|
-
<text x="${PAD + 16}" y="${PAD + 20}" fill="${TEXT_PRIMARY}" font-size="15" font-weight="700" font-family="${FONT_FAMILY}">${title}</text>
|
|
350
|
-
<text x="${W - PAD - 12}" y="${PAD + 20}" fill="${TEXT_MUTED}" font-size="10" font-family="${FONT_FAMILY}" text-anchor="end">${pipeline.stages.length} stage${pipeline.stages.length !== 1 ? "s" : ""}</text>
|
|
351
|
-
${elements.join("\n")}
|
|
352
|
-
</svg>`;
|
|
353
|
-
}
|
|
354
|
-
//# sourceMappingURL=architecture.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../src/utils/svg/architecture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,WAAW,EAAE,aAAa,EAAE,YAAY,EACxC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EACvD,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmCvD,+EAA+E;AAE/E,SAAS,YAAY,CAAC,UAAqB;IACzC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAE3C,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACnD,MAAM,EAAE,GAAG,CAAC,CAAC,SAAoC,CAAC;YAClD,MAAM,KAAK,GAAiB,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAA6B,CAAC,IAAI,EAAE,CAAC;wBACtE,MAAM,IAAI,GAAI,CAA6B,CAAC,IAA+B,CAAC;wBAC5E,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;4BACpD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;4BACpC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;yBACzD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;gBACpD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;gBACpC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;aACzD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,+CAA+C;YAC/C,MAAM,KAAK,GAAiB,EAAE,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAA6B,CAAC,IAAI,EAAE,CAAC;oBACtE,MAAM,IAAI,GAAI,CAA6B,CAAC,IAA+B,CAAC;oBAC5E,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;wBACpD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;qBACrC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,UAAqB;IAC5C,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC;gBACpD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAqB;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAA4B,CAAC;IACvD,MAAM,SAAS,GAAG,KAAK,EAAE,SAAgD,CAAC;IAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,MAA6C,CAAC;IACxE,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,IAAI,GAAG,OAAkC,CAAC;IAChD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAA4B,CAAC;IACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAA4B,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QAC9D,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;QAEpE,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;QACpD,IAAI,QAA4B,CAAC;QACjC,IAAI,OAA2B,CAAC;QAChC,IAAI,WAA+B,CAAC;QACpC,IAAI,cAAkC,CAAC;QAEvC,sBAAsB;QACtB,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,QAA+C,CAAC;YACxE,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAExD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAoD,CAAC;YAC5E,MAAM,GAAG,GAAG,SAAS,EAAE,OAA8C,CAAC;YACtE,OAAO,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAChG,uDAAuD;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,IAAI,CAAC,OAA8C,CAAC;gBACtE,OAAO,GAAG,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7E,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAqD,CAAC;YACzE,WAAW,GAAG,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,MAAM,QAAQ,GAAG,KAAK,EAAE,wBAA+D,CAAC;YACxF,cAAc,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAkD,CAAC;gBAC1E,WAAW,GAAG,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvF,cAAc,GAAG,SAAS,EAAE,yBAAyB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;YACnF,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAErD,mDAAmD;QACnD,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAEnD,MAAM,eAAe,GAAG,sBAAsB,CAC5C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAC5E,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC;YAC7D,IAAI,EAAE,SAAS;YACf,QAAQ;YACR,OAAO;YACP,WAAW;YACX,cAAc;YACd,UAAU;YACV,aAAa;YACb,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AASD,MAAM,YAAY,GAA2B;IAC3C,EAAE,EAAE,SAAS;IACb,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,eAAe,GAA2B;IAC9C,GAAG,EAAE,QAAQ;IACb,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,WAAW;IAC7B,kBAAkB,EAAE,WAAW;IAC/B,eAAe,EAAE,WAAW;IAC5B,kBAAkB,EAAE,QAAQ;IAC5B,eAAe,EAAE,QAAQ;IACzB,0BAA0B,EAAE,WAAW;IACvC,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,WAAW;CAClB,CAAC;AAEF,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAwB,EAAE,OAA6B;IAC3F,MAAM,CAAC,GAAG,OAAO,EAAE,KAAK,IAAI,GAAG,CAAC;IAChC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,uBAAuB;IACvB,IAAI,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;IAEzB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;QACnC,sCAAsC;QACtC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClE,IAAI,KAAK,CAAC,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,WAAW;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,IAAI,SAAS,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ;gBAAE,MAAM,IAAI,MAAM,CAAC;YACpD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,KAAK,CAAC,eAAe;YAAE,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC;QACnD,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,CAAC;IAEd,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IAEpB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC;QACnC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,EAAE,GAAG,aAAa,CAAC,MAAM,CAAE,CAAC;QACzF,MAAM,MAAM,GAAG,CAAC,CAAC;QAEjB,gCAAgC;QAChC,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClE,IAAI,KAAK,CAAC,OAAO;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,WAAW;gBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACnE,IAAI,KAAK,CAAC,cAAc;gBAAE,SAAS,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,aAAa,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;QAC9C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,aAAa,IAAI,CAAC,CAAC;QAE7C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrC,aAAa,IAAI,SAAS,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACzD,aAAa,IAAI,SAAS,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ;gBAAE,aAAa,IAAI,MAAM,CAAC;YAC3D,aAAa,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,aAAa,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,eAAe;YAAE,aAAa,IAAI,SAAS,GAAG,CAAC,CAAC;QAC1D,aAAa,IAAI,SAAS,CAAC;QAE3B,kBAAkB;QAClB,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,MAAM,YAAY,OAAO,aAAa,aAAa,mBAAmB,aAAa,aAAa,UAAU,4CAA4C,CAAC,CAAC;QAE7L,mBAAmB;QACnB,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,MAAM,YAAY,OAAO,aAAa,SAAS,mBAAmB,UAAU,oBAAoB,CAAC,CAAC;QACvI,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,MAAM,GAAG,SAAS,GAAG,CAAC,YAAY,OAAO,sBAAsB,UAAU,oBAAoB,CAAC,CAAC;QAEpI,cAAc;QACd,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,8BAA8B,UAAU,2BAA2B,UAAU,sBAAsB,CAAC,CAAC;QAChM,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,mDAAmD,WAAW,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;QAE3L,aAAa;QACb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,MAAM,QAAQ,MAAM,GAAG,EAAE,WAAW,YAAY,mDAAmD,WAAW,KAAK,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAEtM,sBAAsB;QACtB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,OAAO,GAAG,EAAE,SAAS,MAAM,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;QAEpC,aAAa;QACb,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,kDAAkD,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjL,MAAM,IAAI,SAAS,CAAC;QACtB,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,CAAC;QAEtC,cAAc;QACd,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAE,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;YAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,CAAE,CAAC;YAExE,eAAe;YACf,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,QAAQ,MAAM,YAAY,OAAO,aAAa,SAAS,kBAAkB,UAAU,oBAAoB,CAAC,CAAC;YACzI,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,QAAQ,MAAM,GAAG,CAAC,uBAAuB,SAAS,GAAG,CAAC,kBAAkB,UAAU,KAAK,CAAC,CAAC;YACzH,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,cAAc,mDAAmD,WAAW,KAAK,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YACvM,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,gCAAgC,WAAW,uBAAuB,KAAK,CAAC,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAChO,MAAM,IAAI,SAAS,CAAC;YAEpB,QAAQ;YACR,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACpD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBACzE,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,SAAS,iCAAiC,WAAW,KAAK,IAAI,SAAS,CAAC,CAAC;gBAC5I,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,YAAY,iCAAiC,WAAW,KAAK,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBAClL,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,gCAAgC,WAAW,uBAAuB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBACvO,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC;YAC9B,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,gCAAgC,WAAW,iCAAiC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,oBAAoB,CAAC,CAAC;gBAC5M,MAAM,IAAI,MAAM,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,MAAM,YAAY,OAAO,aAAa,YAAY,0CAA0C,CAAC,CAAC;YACnI,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,MAAM,GAAG,CAAC,uBAAuB,YAAY,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACnH,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,kEAAkE,WAAW,0BAA0B,CAAC,CAAC;YAC9J,MAAM,IAAI,YAAY,CAAC;YAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,iCAAiC,WAAW,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzJ,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,WAAW,cAAc,iCAAiC,WAAW,KAAK,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBACjL,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,gCAAgC,WAAW,uBAAuB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpL,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC;YAC9B,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,mBAAmB;QACnB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,MAAM,GAAG,EAAE,WAAW,UAAU,gCAAgC,WAAW,iBAAiB,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9L,CAAC;QAED,CAAC,IAAI,aAAa,GAAG,SAAS,CAAC;QAE/B,uBAAuB;QACvB,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC;YAC9B,MAAM,OAAO,GAAG,CAAC,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,aAAa,MAAM,SAAS,OAAO,SAAS,MAAM,SAAS,OAAO,GAAG,CAAC,aAAa,YAAY,gDAAgD,CAAC,CAAC;QACjK,CAAC;IACH,CAAC;IAED,QAAQ;IACR,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAE1D,OAAO,kDAAkD,CAAC,aAAa,MAAM,kBAAkB,CAAC,IAAI,MAAM;IACxG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC;;;+CAGyB,YAAY;;;iBAG1C,CAAC,aAAa,MAAM;aACxB,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,aAAa,KAAK,GAAG,GAAG,kBAAkB,aAAa,aAAa,YAAY;aACrH,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,WAAW,YAAY,mDAAmD,WAAW,KAAK,KAAK;aACvH,CAAC,GAAG,GAAG,GAAG,EAAE,QAAQ,GAAG,GAAG,EAAE,WAAW,UAAU,iCAAiC,WAAW,uBAAuB,QAAQ,CAAC,MAAM,CAAC,MAAM,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;IACnM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;OAChB,CAAC;AACR,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Horizontal bar chart — rich version with grid, value axis, gradient bars, labels.
|
|
3
|
-
*/
|
|
4
|
-
import type { BarChartData } from "./types.js";
|
|
5
|
-
export interface BarChartOptions {
|
|
6
|
-
width?: number;
|
|
7
|
-
barHeight?: number;
|
|
8
|
-
maxItems?: number;
|
|
9
|
-
}
|
|
10
|
-
export declare function renderBarChartSvg(data: BarChartData, options?: BarChartOptions): string;
|
|
11
|
-
//# sourceMappingURL=bar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bar.d.ts","sourceRoot":"","sources":["../../../../src/utils/svg/charts/bar.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ/C,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CA6FvF"}
|