wabachi 0.2.0 → 0.3.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/.codex-plugin/plugin.json +6 -0
- package/LICENSE +1 -1
- package/README.md +17 -21
- package/dist/architecture/cli.js +51 -36
- package/dist/architecture/cli.js.map +1 -1
- package/dist/architecture/documentation/react-flow.d.ts +23 -0
- package/dist/architecture/documentation/react-flow.js +436 -0
- package/dist/architecture/documentation/react-flow.js.map +1 -0
- package/dist/architecture/documentation/site.d.ts +10 -13
- package/dist/architecture/documentation/site.js +58 -24
- package/dist/architecture/documentation/site.js.map +1 -1
- package/dist/architecture/projection/react-flow.d.ts +96 -0
- package/dist/architecture/projection/react-flow.js +388 -0
- package/dist/architecture/projection/react-flow.js.map +1 -0
- package/dist/cli.js +53 -14
- package/dist/cli.js.map +1 -1
- package/dist/command-contract.d.ts +78 -0
- package/dist/command-contract.js +194 -0
- package/dist/command-contract.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/repository.d.ts +3 -0
- package/dist/runtime/repository.js +140 -16
- package/dist/runtime/repository.js.map +1 -1
- package/dist/runtime/run.js +3 -1
- package/dist/runtime/run.js.map +1 -1
- package/dist/skill.d.ts +47 -0
- package/dist/skill.js +160 -0
- package/dist/skill.js.map +1 -0
- package/dist/working-set/codec.d.ts +7 -0
- package/dist/working-set/codec.js +53 -0
- package/dist/working-set/codec.js.map +1 -0
- package/dist/working-set/conflicts.d.ts +46 -0
- package/dist/working-set/conflicts.js +97 -0
- package/dist/working-set/conflicts.js.map +1 -0
- package/dist/working-set/derive.d.ts +34 -0
- package/dist/working-set/derive.js +634 -0
- package/dist/working-set/derive.js.map +1 -0
- package/dist/working-set/index.d.ts +3 -0
- package/dist/working-set/index.js +3 -0
- package/dist/working-set/index.js.map +1 -0
- package/dist/working-set/model.d.ts +93 -0
- package/dist/working-set/model.js +204 -0
- package/dist/working-set/model.js.map +1 -0
- package/dist/working-set/quality.d.ts +201 -0
- package/dist/working-set/quality.js +447 -0
- package/dist/working-set/quality.js.map +1 -0
- package/dist/working-set/seeds.d.ts +135 -0
- package/dist/working-set/seeds.js +433 -0
- package/dist/working-set/seeds.js.map +1 -0
- package/docs/USAGE.md +118 -0
- package/docs/examples/minimal-canon.json +24 -0
- package/package.json +14 -4
- package/skills/wabachi/SKILL.md +39 -0
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./docs/assets/readme/wabachi-hero.webp" alt="WABACHI — Repository Semantic Authority." width="100%">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
1
5
|
<p align="center">
|
|
2
6
|
<a href="https://github.com/yohn-jp/wabachi/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/yohn-jp/wabachi/actions/workflows/ci.yml/badge.svg"></a>
|
|
3
7
|
<a href="https://www.npmjs.com/package/wabachi"><img alt="npm" src="https://img.shields.io/npm/v/wabachi"></a>
|
|
@@ -28,33 +32,20 @@ For an ephemeral invocation:
|
|
|
28
32
|
npx --yes wabachi --help
|
|
29
33
|
```
|
|
30
34
|
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
Run the registered repository-analysis providers:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
wabachi run <repository> [--revision <ref>] [--out <dir>]
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Run the provider matrix and retain its auditable artifacts:
|
|
35
|
+
## Start here
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Validate an Architecture Canon document:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
wabachi architecture validate <file>
|
|
49
|
-
```
|
|
37
|
+
Read the [practical usage manual](./docs/USAGE.md) for repository analysis,
|
|
38
|
+
provider matrices, retained outputs, and Architecture Canon workflows.
|
|
50
39
|
|
|
51
|
-
|
|
40
|
+
Use live discovery for the installed surface:
|
|
52
41
|
|
|
53
42
|
```bash
|
|
54
|
-
wabachi
|
|
43
|
+
wabachi --help
|
|
44
|
+
wabachi skill
|
|
55
45
|
```
|
|
56
46
|
|
|
57
|
-
|
|
47
|
+
The bundled agent Skill is available at `skills/wabachi/SKILL.md`; npm
|
|
48
|
+
installation ships it as documentation and does not activate a plugin.
|
|
58
49
|
|
|
59
50
|
## Analysis model
|
|
60
51
|
|
|
@@ -62,6 +53,11 @@ Wabachi keeps repository facts and architecture declarations explicit. Repositor
|
|
|
62
53
|
|
|
63
54
|
The matrix workflow emits retained artifacts so provider output, correlations, and reports can be inspected rather than treated as opaque agent context.
|
|
64
55
|
|
|
56
|
+
Architecture rendering is npm-native: `wabachi architecture render
|
|
57
|
+
./architecture.json --out ./artifacts/site` uses the bundled React Flow + ELK
|
|
58
|
+
renderer and does not require Java, Docker, Chromium, Structurizr, a CDN, or
|
|
59
|
+
network access.
|
|
60
|
+
|
|
65
61
|
## Development
|
|
66
62
|
|
|
67
63
|
```bash
|
package/dist/architecture/cli.js
CHANGED
|
@@ -3,16 +3,15 @@ import path from "node:path";
|
|
|
3
3
|
import { parseCanonicalArchitectureDocument } from "./canon/codec.js";
|
|
4
4
|
import { projectArchitectureDocument } from "./documentation/project.js";
|
|
5
5
|
import { ArchitectureSiteError, buildArchitectureSite } from "./documentation/site.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import { projectArchitectureDocumentToReactFlow } from "./projection/react-flow.js";
|
|
7
|
+
import { commandUsage, DEFAULT_ARCHITECTURE_CANON_PATH } from "../command-contract.js";
|
|
8
8
|
const MAX_DIAGNOSTIC_LENGTH = 240;
|
|
9
9
|
function usage(command) {
|
|
10
10
|
if (command === "validate")
|
|
11
|
-
return "
|
|
12
|
-
if (command === "render")
|
|
13
|
-
return "
|
|
14
|
-
|
|
15
|
-
return "usage: PACKAGE_NAME architecture <validate|render> ...";
|
|
11
|
+
return commandUsage("architecture.validate");
|
|
12
|
+
if (command === "render")
|
|
13
|
+
return commandUsage("architecture.render");
|
|
14
|
+
return commandUsage("architecture.help");
|
|
16
15
|
}
|
|
17
16
|
function bounded(value) {
|
|
18
17
|
const message = value.replace(/\s+/gu, " ").trim();
|
|
@@ -23,15 +22,29 @@ function bounded(value) {
|
|
|
23
22
|
function errorMessage(error) {
|
|
24
23
|
return bounded(error instanceof Error ? error.message : String(error));
|
|
25
24
|
}
|
|
25
|
+
function architectureCanonCounts(document) {
|
|
26
|
+
return {
|
|
27
|
+
elements: document.elements.length,
|
|
28
|
+
interfaces: document.interfaces.length,
|
|
29
|
+
relationships: document.relationships.length,
|
|
30
|
+
flows: document.flows.length,
|
|
31
|
+
views: document.views.length,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function architectureCanonSummary(counts) {
|
|
35
|
+
return `Architecture Canon summary: elements=${counts.elements}, interfaces=${counts.interfaces}, relationships=${counts.relationships}, flows=${counts.flows}, views=${counts.views}`;
|
|
36
|
+
}
|
|
37
|
+
function isMissingFileError(error) {
|
|
38
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
39
|
+
}
|
|
26
40
|
function parseArguments(args) {
|
|
27
41
|
const command = args[0];
|
|
28
42
|
const json = args.includes("--json");
|
|
29
|
-
if (command !== "validate" && command !== "render") {
|
|
43
|
+
if (command !== "example" && command !== "validate" && command !== "render") {
|
|
30
44
|
return { ok: false, json, message: usage() };
|
|
31
45
|
}
|
|
32
46
|
let file;
|
|
33
47
|
let outputRoot;
|
|
34
|
-
let structurizrCommand;
|
|
35
48
|
for (let index = 1; index < args.length; index += 1) {
|
|
36
49
|
const argument = args[index];
|
|
37
50
|
if (argument === "--json")
|
|
@@ -47,33 +60,22 @@ function parseArguments(args) {
|
|
|
47
60
|
index += 1;
|
|
48
61
|
continue;
|
|
49
62
|
}
|
|
50
|
-
if (argument === "--structurizr-command") {
|
|
51
|
-
const value = args[index + 1];
|
|
52
|
-
if (value === undefined || value.startsWith("--")) {
|
|
53
|
-
return { ok: false, json, message: "--structurizr-command requires an executable path" };
|
|
54
|
-
}
|
|
55
|
-
if (structurizrCommand !== undefined) {
|
|
56
|
-
return { ok: false, json, message: "--structurizr-command may be provided only once" };
|
|
57
|
-
}
|
|
58
|
-
structurizrCommand = value;
|
|
59
|
-
index += 1;
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
63
|
if (argument.startsWith("--"))
|
|
63
64
|
return { ok: false, json, message: `unknown option: ${argument}` };
|
|
64
65
|
if (file !== undefined)
|
|
65
66
|
return { ok: false, json, message: "architecture commands accept one explicit file" };
|
|
66
67
|
file = argument;
|
|
67
68
|
}
|
|
68
|
-
if (
|
|
69
|
-
return { ok: false, json, message:
|
|
70
|
-
|
|
69
|
+
if (command === "example" && file !== undefined) {
|
|
70
|
+
return { ok: false, json, message: "architecture example does not accept a file" };
|
|
71
|
+
}
|
|
72
|
+
if (command === "validate" && outputRoot !== undefined) {
|
|
71
73
|
return { ok: false, json, message: "validate does not accept render options" };
|
|
72
74
|
}
|
|
73
75
|
if (command === "render" && outputRoot === undefined) {
|
|
74
76
|
return { ok: false, json, message: "render requires --out <dir>" };
|
|
75
77
|
}
|
|
76
|
-
return { ok: true, value: { command, file, outputRoot,
|
|
78
|
+
return { ok: true, value: { command, file, outputRoot, json } };
|
|
77
79
|
}
|
|
78
80
|
function writeFailure(command, json, diagnostic) {
|
|
79
81
|
const result = {
|
|
@@ -104,38 +106,51 @@ export async function runArchitectureCli(args) {
|
|
|
104
106
|
const parsed = parseArguments(args);
|
|
105
107
|
if (!parsed.ok)
|
|
106
108
|
return writeUsageFailure(parsed.json, parsed.message);
|
|
107
|
-
const { command,
|
|
109
|
+
const { command, json } = parsed.value;
|
|
110
|
+
if (command === "example") {
|
|
111
|
+
try {
|
|
112
|
+
const source = await readFile(new URL("../../docs/examples/minimal-canon.json", import.meta.url), "utf8");
|
|
113
|
+
parseCanonicalArchitectureDocument(source);
|
|
114
|
+
console.log(source.trim());
|
|
115
|
+
return 0;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return writeFailure(command, json, { code: "example-unavailable", message: errorMessage(error) });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const file = parsed.value.file ?? DEFAULT_ARCHITECTURE_CANON_PATH;
|
|
108
122
|
let document;
|
|
109
123
|
try {
|
|
110
124
|
document = parseCanonicalArchitectureDocument(await readFile(file, "utf8"));
|
|
111
125
|
}
|
|
112
126
|
catch (error) {
|
|
127
|
+
if (isMissingFileError(error)) {
|
|
128
|
+
return writeFailure(command, json, {
|
|
129
|
+
code: "invalid-canon",
|
|
130
|
+
message: `architecture document not found: ${file}`,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
113
133
|
return writeFailure(command, json, { code: "invalid-canon", message: errorMessage(error) });
|
|
114
134
|
}
|
|
115
135
|
if (command === "validate") {
|
|
136
|
+
const counts = architectureCanonCounts(document);
|
|
116
137
|
if (json) {
|
|
117
|
-
console.log(JSON.stringify({ ok: true, command: "architecture validate", file }));
|
|
138
|
+
console.log(JSON.stringify({ ok: true, command: "architecture validate", file, ...counts }));
|
|
118
139
|
}
|
|
119
140
|
else {
|
|
120
141
|
console.log(`valid Architecture Canon: ${file}`);
|
|
142
|
+
console.log(architectureCanonSummary(counts));
|
|
121
143
|
}
|
|
122
144
|
return 0;
|
|
123
145
|
}
|
|
124
146
|
try {
|
|
125
147
|
const documentation = projectArchitectureDocument(document);
|
|
126
|
-
const
|
|
148
|
+
const reactFlow = await projectArchitectureDocumentToReactFlow(document);
|
|
127
149
|
const result = await buildArchitectureSite({
|
|
128
150
|
outputRoot: path.resolve(parsed.value.outputRoot),
|
|
129
151
|
documentation,
|
|
130
|
-
|
|
131
|
-
launcher: { executable: parsed.value.structurizrCommand ?? DEFAULT_STRUCTURIZR_COMMAND },
|
|
152
|
+
reactFlow,
|
|
132
153
|
});
|
|
133
|
-
if (!result.complete) {
|
|
134
|
-
return writeFailure(command, json, {
|
|
135
|
-
code: "export-failed",
|
|
136
|
-
message: result.export.diagnostic?.message ?? "Structurizr static export failed",
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
154
|
if (json) {
|
|
140
155
|
console.log(JSON.stringify({
|
|
141
156
|
ok: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/architecture/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/architecture/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,sCAAsC,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAwBlC,SAAS,KAAK,CAAC,OAA6B;IAC1C,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,YAAY,CAAC,uBAAuB,CAAC,CAAC;IACzE,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,IAAI,qBAAqB;QAAE,OAAO,OAAO,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgC;IAC/D,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAClC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;QACtC,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM;QAC5C,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;QAC5B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,MAA+B;IAC/D,OAAO,wCAAwC,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,UAAU,mBAAmB,MAAM,CAAC,aAAa,WAAW,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC;AACzL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnG,CAAC;AAED,SAAS,cAAc,CACrB,IAAuB;IAIvB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,IAAwB,CAAC;IAC7B,IAAI,UAA8B,CAAC;IAEnC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,KAAK,QAAQ;YAAE,SAAS;QAEpC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;YACpE,CAAC;YACD,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;YACrG,UAAU,GAAG,KAAK,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,QAAQ,EAAE,EAAE,CAAC;QAClG,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;QAC9G,IAAI,GAAG,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;IACrF,CAAC;IACD,IAAI,OAAO,KAAK,UAAU,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,OAA4B,EAAE,IAAa,EAAE,UAAkC;IACnG,MAAM,MAAM,GAAG;QACb,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,gBAAgB,OAAO,EAAE;QAClC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;KACxF,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAa,EAAE,OAAe;IACvD,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5E,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAuB;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEtE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1G,kCAAkC,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,+BAA+B,CAAC;IAClE,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,kCAAkC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;gBACjC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,oCAAoC,IAAI,EAAE;aACpD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,sCAAsC,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAoB,CAAC;YAC3D,aAAa;YACb,SAAS;SACV,CAAC,CAAC;QAEH,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC;gBACb,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,qBAAqB;gBAC9B,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;aACvC,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,KAAK,YAAY,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QACnF,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactFlowProjection } from "../projection/react-flow.js";
|
|
2
|
+
export interface ReactFlowStaticAsset {
|
|
3
|
+
readonly path: "wabachi-react-flow.css";
|
|
4
|
+
readonly contentType: "text/css";
|
|
5
|
+
readonly content: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ReactFlowStaticRenderResult {
|
|
8
|
+
/** An HTML fragment that can be inserted into a Wabachi-owned document. */
|
|
9
|
+
readonly markup: string;
|
|
10
|
+
/** Local assets required by the fragment; no network request is needed. */
|
|
11
|
+
readonly assets: readonly ReactFlowStaticAsset[];
|
|
12
|
+
}
|
|
13
|
+
export declare class ReactFlowStaticRenderError extends Error {
|
|
14
|
+
readonly code: "invalid-projection";
|
|
15
|
+
constructor(message: string);
|
|
16
|
+
}
|
|
17
|
+
export declare const REACT_FLOW_DIAGRAM_CSS: string;
|
|
18
|
+
export declare const REACT_FLOW_STATIC_ASSETS: readonly ReactFlowStaticAsset[];
|
|
19
|
+
/** Render the React Flow projection with @xyflow/react's ReactFlow component and local assets. */
|
|
20
|
+
export declare function renderReactFlowStatic(projection: ReactFlowProjection): ReactFlowStaticRenderResult;
|
|
21
|
+
/** Convenience form for callers that only need the composable HTML fragment. */
|
|
22
|
+
export declare function renderReactFlowHtml(projection: ReactFlowProjection): string;
|
|
23
|
+
export declare const renderReactFlowProjection: typeof renderReactFlowStatic;
|