@meirblachman/azure-pipelines-visualizer 0.1.9 → 0.1.10
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 +76 -0
- package/dist/index.min.js +1 -1
- package/package.json +3 -2
package/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Azure Pipelines Visualizer
|
|
2
|
+
|
|
3
|
+
An interactive visualizer for Azure DevOps pipelines. Paste a pipeline URL and explore its template hierarchy as an expandable diagram with YAML preview and task documentation links.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @meirblachman/azure-pipelines-visualizer
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
> Requires Node.js ≥ 24 and Azure CLI logged in (`az login`).
|
|
12
|
+
|
|
13
|
+
Open http://localhost:3001. The command bundles both the API server and web UI.
|
|
14
|
+
|
|
15
|
+
## CLI Options
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Usage: apv [options]
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
-c, --config <path> Path to apv.config.json
|
|
22
|
+
-p, --port <number> Port to listen on (default: 3001)
|
|
23
|
+
-h, --help Show this help message
|
|
24
|
+
-v, --version Show version number
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Examples:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Use a custom config file and port
|
|
31
|
+
npx @meirblachman/azure-pipelines-visualizer --config ./my-config.json --port 8080
|
|
32
|
+
|
|
33
|
+
# Short flags work too
|
|
34
|
+
npx @meirblachman/azure-pipelines-visualizer -c ./my-config.json -p 8080
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The `PORT` environment variable is still supported as a fallback when `--port` is not specified.
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
1. Paste an Azure DevOps file URL, e.g.:
|
|
42
|
+
```
|
|
43
|
+
https://dev.azure.com/{org}/{project}/_git/{repo}?path=/.pipelines/main.yml
|
|
44
|
+
```
|
|
45
|
+
2. Click **Load Pipeline** — the root file and its template references appear as a diagram.
|
|
46
|
+
3. Click any template node to expand it and fetch its contents recursively.
|
|
47
|
+
4. Click an expanded node to view its YAML and task list in the detail panel.
|
|
48
|
+
|
|
49
|
+
## Disk Cache
|
|
50
|
+
|
|
51
|
+
Fetched pipeline and template files are cached on disk under `.cache/ado-file-cache` by default, keyed by repo identity, file path, branch, and resolved commit SHA.
|
|
52
|
+
|
|
53
|
+
You can override the cache location and add custom task documentation links in `apv.config.json`:
|
|
54
|
+
|
|
55
|
+
```jsonc
|
|
56
|
+
{
|
|
57
|
+
"cacheDir": ".cache/ado-file-cache",
|
|
58
|
+
"customTaskDocs": {
|
|
59
|
+
"OneBranch.Pipeline.Build@1": "https://example.com/docs/build-task"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Standalone Binary
|
|
65
|
+
|
|
66
|
+
Pre-built binaries for Linux, macOS, and Windows are available on the [Releases](https://github.com/Meir017/azure-pipelines-visualizer/releases) page.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Download the binary for your platform from the latest release, then:
|
|
70
|
+
chmod +x apv-linux-x64 # Linux/macOS only
|
|
71
|
+
./apv-linux-x64 --config ./apv.config.json --port 8080
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## License
|
|
75
|
+
|
|
76
|
+
See [repository](https://github.com/Meir017/azure-pipelines-visualizer) for details.
|
package/dist/index.min.js
CHANGED
|
@@ -40,7 +40,7 @@ Options:
|
|
|
40
40
|
-p, --port <number> Port to listen on (default: 3001)
|
|
41
41
|
-h, --help Show this help message
|
|
42
42
|
-v, --version Show version number
|
|
43
|
-
`.trim()),process.exit(0));Ee.version&&(console.log("0.1.
|
|
43
|
+
`.trim()),process.exit(0));Ee.version&&(console.log("0.1.10"),process.exit(0));var ja=_a(new URL(".",import.meta.url)),It=Nr(ja,"web"),Na={".html":"text/html; charset=utf-8",".js":"application/javascript",".css":"text/css",".ttf":"font/ttf",".woff":"font/woff",".woff2":"font/woff2",".svg":"image/svg+xml",".png":"image/png",".json":"application/json"};function La(e){let r=Ia(e);return Na[r]??"application/octet-stream"}Ee.config&&kn(Ee.config);M();var S=new O;S.use("/*",wn());S.use("/*",vn({origin:"*"}));S.get("/health",e=>e.json({status:"ok"}));S.get("/api/config/task-docs",e=>{let r=M();return e.json({customTaskDocs:r.customTaskDocs??{}})});S.route("/api",Ce);S.route("/api",ae);S.route("/api",jr);S.all("/api/*",e=>e.json({error:`Not found: ${e.req.path}`},404));S.onError((e,r)=>{if(console.error("Server error:",e.message),e.message.includes("DefaultAzureCredential")||e.message.includes("authentication"))return r.json({error:"Authentication failed. Ensure you are logged in via `az login`.",details:e.message},401);let n=e.message.match(/API error \((\d+)\)/);if(n){let t=Number(n[1]);return r.json({error:e.message},t)}return r.json({error:e.message},500)});S.get("/assets/*",e=>{let r=e.req.path,n=Nr(It,r);if(!Pt(n))return e.notFound();let t=Ot(n);return e.body(t,200,{"Content-Type":La(r),"Cache-Control":"public, immutable, max-age=31536000"})});S.get("*",e=>{let r=Nr(It,"index.html");if(!Pt(r))return e.notFound();let n=Ot(r,"utf-8");return e.html(n)});var Da=Number(Ee.port)||Number(process.env.PORT)||3001;Yr({fetch:S.fetch,port:Da},e=>{console.log(`APV server listening on http://localhost:${e.port}`)});export{S as app};
|
|
44
44
|
/*! Bundled license information:
|
|
45
45
|
|
|
46
46
|
js-yaml/dist/js-yaml.mjs:
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meirblachman/azure-pipelines-visualizer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "Visualize Azure Pipelines template trees as interactive diagrams",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"apv": "dist/index.min.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
|
-
"dist/"
|
|
10
|
+
"dist/",
|
|
11
|
+
"README.md"
|
|
11
12
|
],
|
|
12
13
|
"repository": {
|
|
13
14
|
"type": "git",
|