@diagrampilot/core 0.2.6 → 0.2.7-nightly.52.1.858a8d2
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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/repo-workflow-check.d.ts.map +1 -1
- package/dist/repo-workflow-check.js +25 -51
- package/dist/repo-workflow-check.js.map +1 -1
- package/dist/repo-workflow-config.d.ts +0 -1
- package/dist/repo-workflow-config.d.ts.map +1 -1
- package/dist/repo-workflow-config.js +1 -1
- package/dist/repo-workflow-config.js.map +1 -1
- package/dist/repo-workflow-configured-artifact-paths.d.ts +9 -0
- package/dist/repo-workflow-configured-artifact-paths.d.ts.map +1 -0
- package/dist/repo-workflow-configured-artifact-paths.js +129 -0
- package/dist/repo-workflow-configured-artifact-paths.js.map +1 -0
- package/dist/repo-workflow-configured-artifact-result.d.ts +15 -0
- package/dist/repo-workflow-configured-artifact-result.d.ts.map +1 -1
- package/dist/repo-workflow-configured-artifacts.d.ts +1 -4
- package/dist/repo-workflow-configured-artifacts.d.ts.map +1 -1
- package/dist/repo-workflow-configured-artifacts.js +144 -195
- package/dist/repo-workflow-configured-artifacts.js.map +1 -1
- package/dist/repo-workflow-generate.d.ts +84 -0
- package/dist/repo-workflow-generate.d.ts.map +1 -0
- package/dist/repo-workflow-generate.js +213 -0
- package/dist/repo-workflow-generate.js.map +1 -0
- package/dist/repo-workflow-loaded-source.d.ts +25 -0
- package/dist/repo-workflow-loaded-source.d.ts.map +1 -0
- package/dist/repo-workflow-loaded-source.js +21 -0
- package/dist/repo-workflow-loaded-source.js.map +1 -0
- package/dist/repo-workflow-markdown-embed-freshness.d.ts +4 -0
- package/dist/repo-workflow-markdown-embed-freshness.d.ts.map +1 -0
- package/dist/repo-workflow-markdown-embed-freshness.js +96 -0
- package/dist/repo-workflow-markdown-embed-freshness.js.map +1 -0
- package/dist/repo-workflow-markdown-embed.d.ts +16 -0
- package/dist/repo-workflow-markdown-embed.d.ts.map +1 -0
- package/dist/repo-workflow-markdown-embed.js +76 -0
- package/dist/repo-workflow-markdown-embed.js.map +1 -0
- package/dist/repo-workflow-paths.d.ts +6 -0
- package/dist/repo-workflow-paths.d.ts.map +1 -0
- package/dist/repo-workflow-paths.js +27 -0
- package/dist/repo-workflow-paths.js.map +1 -0
- package/dist/repo-workflow.d.ts +2 -0
- package/dist/repo-workflow.d.ts.map +1 -1
- package/dist/repo-workflow.js +10 -0
- package/dist/repo-workflow.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,127 +1,41 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { readFileSync, statSync } from "node:fs";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return relativeArtifactPath;
|
|
11
|
-
}
|
|
12
|
-
return normalizePathForDisplay(path.relative(configDirectory, artifactPath));
|
|
13
|
-
}
|
|
14
|
-
function configRelativePath(configDirectory, absolutePath) {
|
|
15
|
-
return normalizePathForDisplay(path.relative(configDirectory, absolutePath));
|
|
16
|
-
}
|
|
17
|
-
function sourceStem(sourcePath) {
|
|
18
|
-
return path.posix.basename(sourcePath).replace(/\.dp\.yaml$/iu, "");
|
|
19
|
-
}
|
|
20
|
-
function sourceDirectory(sourcePath) {
|
|
21
|
-
const directory = path.posix.dirname(sourcePath);
|
|
22
|
-
return directory === "." ? "" : directory;
|
|
23
|
-
}
|
|
24
|
-
function escapeRegExp(value) {
|
|
25
|
-
return value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
3
|
+
import { createMarkdownEmbedContent, createMarkdownEmbedReferences, } from "./repo-workflow-markdown-embed.js";
|
|
4
|
+
import { markdownResultWithReferencedArtifactIssues, referencedArtifactIssue, } from "./repo-workflow-markdown-embed-freshness.js";
|
|
5
|
+
import { deriveConfiguredArtifactDisplayPath, resolveConfiguredOutputPath, } from "./repo-workflow-configured-artifact-paths.js";
|
|
6
|
+
import { normalizePathForDisplay } from "./repo-workflow-paths.js";
|
|
7
|
+
export { configuredExplicitSourcesForScope, configuredOutputsForSource, configuredSourceDiscoveryOptions, deriveConfiguredArtifactDisplayPath, mergeDiscoveredAndConfiguredSources, resolveConfiguredOutputPath, } from "./repo-workflow-configured-artifact-paths.js";
|
|
8
|
+
function isConfiguredTextArtifactFormat(format) {
|
|
9
|
+
return format === "mermaid" || format === "d2" || format === "dot";
|
|
26
10
|
}
|
|
27
|
-
function
|
|
28
|
-
return
|
|
29
|
-
.replace(/\\/gu, "/")
|
|
30
|
-
.replace(/^\.\//u, "")
|
|
31
|
-
.replace(/\/$/u, "/**");
|
|
11
|
+
function sha256(content) {
|
|
12
|
+
return createHash("sha256").update(content).digest("hex");
|
|
32
13
|
}
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
if (segment === "**") {
|
|
38
|
-
return ".*";
|
|
39
|
-
}
|
|
40
|
-
return escapeRegExp(segment)
|
|
41
|
-
.replace(/\\\*/gu, "[^/]*")
|
|
42
|
-
.replace(/\\\?/gu, "[^/]");
|
|
43
|
-
})
|
|
44
|
-
.join("/");
|
|
45
|
-
return new RegExp(`^${expression}$`, "u");
|
|
14
|
+
function unreadableArtifactMessage(artifactPath, error) {
|
|
15
|
+
return error instanceof Error
|
|
16
|
+
? error.message
|
|
17
|
+
: `Unable to read ${artifactPath}`;
|
|
46
18
|
}
|
|
47
|
-
function
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
sourcePath,
|
|
53
|
-
format: output.format,
|
|
19
|
+
function missingArtifactResult(options) {
|
|
20
|
+
return {
|
|
21
|
+
format: options.format,
|
|
22
|
+
status: "missing-artifact",
|
|
23
|
+
path: options.displayPath,
|
|
54
24
|
};
|
|
55
|
-
const resolvedPath = output.path.replace(/\{(?<variable>stem|sourceDir|sourcePath|format)\}/gu, (_match, variable) => values[variable]);
|
|
56
|
-
return path.resolve(config.directory, resolvedPath);
|
|
57
|
-
}
|
|
58
|
-
function mappingMatchesSource(config, mapping, sourceAbsolutePath) {
|
|
59
|
-
if (mapping.source !== undefined) {
|
|
60
|
-
return path.resolve(config.directory, mapping.source) === sourceAbsolutePath;
|
|
61
|
-
}
|
|
62
|
-
if (mapping.sourceGlob !== undefined) {
|
|
63
|
-
return globPatternToRegExp(mapping.sourceGlob).test(configRelativePath(config.directory, sourceAbsolutePath));
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
25
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
function isPathInsideDirectory(directory, filePath) {
|
|
79
|
-
const relativePath = path.relative(directory, filePath);
|
|
80
|
-
return (relativePath === "" ||
|
|
81
|
-
(!relativePath.startsWith("..") && !path.isAbsolute(relativePath)));
|
|
82
|
-
}
|
|
83
|
-
function isExplicitSourceInScope(sourceAbsolutePath, scope) {
|
|
84
|
-
const scopePath = path.resolve(scope.path);
|
|
85
|
-
if (scope.kind === "file") {
|
|
86
|
-
return sourceAbsolutePath === scopePath;
|
|
87
|
-
}
|
|
88
|
-
return isPathInsideDirectory(scopePath, sourceAbsolutePath);
|
|
89
|
-
}
|
|
90
|
-
export function configuredExplicitSourcesForScope(config, scope) {
|
|
91
|
-
if (config === undefined) {
|
|
92
|
-
return [];
|
|
93
|
-
}
|
|
94
|
-
const sources = [];
|
|
95
|
-
for (const mapping of config.artifacts) {
|
|
96
|
-
if (mapping.source === undefined) {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
const absolutePath = path.resolve(config.directory, mapping.source);
|
|
100
|
-
if (!isExplicitSourceInScope(absolutePath, scope)) {
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
const relativePath = scope.kind === "directory"
|
|
104
|
-
? normalizePathForDisplay(path.relative(scope.path, absolutePath))
|
|
105
|
-
: normalizePathForDisplay(path.basename(absolutePath));
|
|
106
|
-
sources.push({
|
|
107
|
-
absolutePath,
|
|
108
|
-
relativePath,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
return sources;
|
|
26
|
+
function unreadableArtifactResult(options) {
|
|
27
|
+
return {
|
|
28
|
+
format: options.format,
|
|
29
|
+
status: "unreadable-artifact",
|
|
30
|
+
path: options.displayPath,
|
|
31
|
+
message: unreadableArtifactMessage(options.artifactPath, options.error),
|
|
32
|
+
};
|
|
112
33
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
sourcesByPath.set(path.resolve(source.absolutePath), source);
|
|
34
|
+
function artifactReadFailureResult(options) {
|
|
35
|
+
if (options.error.code === "ENOENT") {
|
|
36
|
+
return missingArtifactResult(options);
|
|
117
37
|
}
|
|
118
|
-
return
|
|
119
|
-
}
|
|
120
|
-
function isConfiguredTextArtifactFormat(format) {
|
|
121
|
-
return format === "mermaid" || format === "d2" || format === "dot";
|
|
122
|
-
}
|
|
123
|
-
function sha256(content) {
|
|
124
|
-
return createHash("sha256").update(content).digest("hex");
|
|
38
|
+
return unreadableArtifactResult(options);
|
|
125
39
|
}
|
|
126
40
|
function checkConfiguredPresenceOnlyArtifact(options) {
|
|
127
41
|
try {
|
|
@@ -136,22 +50,7 @@ function checkConfiguredPresenceOnlyArtifact(options) {
|
|
|
136
50
|
}
|
|
137
51
|
}
|
|
138
52
|
catch (error) {
|
|
139
|
-
|
|
140
|
-
return {
|
|
141
|
-
format: options.format,
|
|
142
|
-
status: "missing-artifact",
|
|
143
|
-
path: options.displayPath,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
const message = error instanceof Error
|
|
147
|
-
? error.message
|
|
148
|
-
: `Unable to read ${options.artifactPath}`;
|
|
149
|
-
return {
|
|
150
|
-
format: options.format,
|
|
151
|
-
status: "unreadable-artifact",
|
|
152
|
-
path: options.displayPath,
|
|
153
|
-
message,
|
|
154
|
-
};
|
|
53
|
+
return artifactReadFailureResult({ ...options, error });
|
|
155
54
|
}
|
|
156
55
|
return {
|
|
157
56
|
format: options.format,
|
|
@@ -166,22 +65,7 @@ function checkConfiguredTextArtifact(options) {
|
|
|
166
65
|
actualContent = readFileSync(options.artifactPath, "utf8");
|
|
167
66
|
}
|
|
168
67
|
catch (error) {
|
|
169
|
-
|
|
170
|
-
return {
|
|
171
|
-
format: options.format,
|
|
172
|
-
status: "missing-artifact",
|
|
173
|
-
path: options.displayPath,
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
const message = error instanceof Error
|
|
177
|
-
? error.message
|
|
178
|
-
: `Unable to read ${options.artifactPath}`;
|
|
179
|
-
return {
|
|
180
|
-
format: options.format,
|
|
181
|
-
status: "unreadable-artifact",
|
|
182
|
-
path: options.displayPath,
|
|
183
|
-
message,
|
|
184
|
-
};
|
|
68
|
+
return artifactReadFailureResult({ ...options, error });
|
|
185
69
|
}
|
|
186
70
|
if (actualContent !== options.expectedContent) {
|
|
187
71
|
return {
|
|
@@ -200,15 +84,21 @@ function checkConfiguredTextArtifact(options) {
|
|
|
200
84
|
freshness: "content",
|
|
201
85
|
};
|
|
202
86
|
}
|
|
203
|
-
function
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
87
|
+
function outputsInCheckOrder(outputs) {
|
|
88
|
+
return [
|
|
89
|
+
...outputs.filter((output) => output.format !== "markdown"),
|
|
90
|
+
...outputs.filter((output) => output.format === "markdown"),
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
function mapFreshConfiguredSvgArtifactResult(artifact, displayPath) {
|
|
94
|
+
return {
|
|
95
|
+
format: "svg",
|
|
96
|
+
status: "fresh",
|
|
97
|
+
path: displayPath,
|
|
98
|
+
provenance: artifact.provenance,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function mapNonFreshConfiguredSvgArtifactResult(artifact, displayPath) {
|
|
212
102
|
if (artifact.status === "stale") {
|
|
213
103
|
return {
|
|
214
104
|
format: "svg",
|
|
@@ -242,47 +132,106 @@ function mapConfiguredSvgArtifactResult(artifact, displayPath) {
|
|
|
242
132
|
path: displayPath,
|
|
243
133
|
};
|
|
244
134
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
format:
|
|
135
|
+
function mapConfiguredSvgArtifactResult(artifact, displayPath) {
|
|
136
|
+
if (artifact.status === "fresh") {
|
|
137
|
+
return mapFreshConfiguredSvgArtifactResult(artifact, displayPath);
|
|
138
|
+
}
|
|
139
|
+
return mapNonFreshConfiguredSvgArtifactResult(artifact, displayPath);
|
|
140
|
+
}
|
|
141
|
+
function configuredOutputPaths(options, output) {
|
|
142
|
+
const artifactPath = resolveConfiguredOutputPath(options.config, options.sourceAbsolutePath, output);
|
|
143
|
+
const displayPath = normalizePathForDisplay(deriveConfiguredArtifactDisplayPath(options.config.directory, artifactPath, options.currentWorkingDirectory));
|
|
144
|
+
return {
|
|
145
|
+
artifactPath,
|
|
146
|
+
displayPath,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
async function checkConfiguredSvgOutput(options) {
|
|
150
|
+
const artifact = await options.workflow.checkExpectedSvgArtifactFreshnessForValidatedSource({
|
|
151
|
+
source: options.workflow.source,
|
|
152
|
+
artifactPath: options.artifactPath,
|
|
153
|
+
provenanceSourcePath: options.workflow.provenanceSourcePath,
|
|
154
|
+
diagramPilotVersion: options.workflow.diagramPilotVersion,
|
|
155
|
+
renderer: options.workflow.renderer,
|
|
156
|
+
});
|
|
157
|
+
return mapConfiguredSvgArtifactResult(artifact, options.displayPath);
|
|
158
|
+
}
|
|
159
|
+
function checkConfiguredTextOutput(options) {
|
|
160
|
+
if (options.workflow.exportConfiguredTextArtifact === undefined) {
|
|
161
|
+
return {
|
|
162
|
+
format: options.format,
|
|
163
|
+
status: "unchecked",
|
|
164
|
+
path: options.displayPath,
|
|
165
|
+
message: "Configured text artifact freshness requires an exporter.",
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return checkConfiguredTextArtifact({
|
|
169
|
+
format: options.format,
|
|
170
|
+
artifactPath: options.artifactPath,
|
|
171
|
+
displayPath: options.displayPath,
|
|
172
|
+
expectedContent: options.workflow.exportConfiguredTextArtifact({
|
|
173
|
+
format: options.format,
|
|
174
|
+
spec: options.workflow.spec,
|
|
175
|
+
}),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
function checkConfiguredMarkdownOutput(options) {
|
|
179
|
+
const contentResult = checkConfiguredTextArtifact({
|
|
180
|
+
format: "markdown",
|
|
181
|
+
artifactPath: options.artifactPath,
|
|
182
|
+
displayPath: options.displayPath,
|
|
183
|
+
expectedContent: createMarkdownEmbedContent({
|
|
184
|
+
spec: options.workflow.spec,
|
|
185
|
+
embedPath: options.artifactPath,
|
|
186
|
+
references: createMarkdownEmbedReferences({
|
|
187
|
+
outputs: options.workflow.outputs,
|
|
188
|
+
resolvePath: (referencedOutput) => resolveConfiguredOutputPath(options.workflow.config, options.workflow.sourceAbsolutePath, referencedOutput),
|
|
189
|
+
}),
|
|
190
|
+
}),
|
|
191
|
+
});
|
|
192
|
+
const referenceIssues = options.previousResults
|
|
193
|
+
.map(referencedArtifactIssue)
|
|
194
|
+
.filter((issue) => issue !== undefined);
|
|
195
|
+
return markdownResultWithReferencedArtifactIssues(contentResult, referenceIssues);
|
|
196
|
+
}
|
|
197
|
+
async function checkConfiguredOutput(options) {
|
|
198
|
+
const { artifactPath, displayPath } = configuredOutputPaths(options.workflow, options.output);
|
|
199
|
+
if (options.output.format === "svg") {
|
|
200
|
+
return await checkConfiguredSvgOutput({
|
|
201
|
+
workflow: options.workflow,
|
|
284
202
|
artifactPath,
|
|
285
203
|
displayPath,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
if (isConfiguredTextArtifactFormat(options.output.format)) {
|
|
207
|
+
return checkConfiguredTextOutput({
|
|
208
|
+
workflow: options.workflow,
|
|
209
|
+
format: options.output.format,
|
|
210
|
+
artifactPath,
|
|
211
|
+
displayPath,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
if (options.output.format === "markdown") {
|
|
215
|
+
return checkConfiguredMarkdownOutput({
|
|
216
|
+
workflow: options.workflow,
|
|
217
|
+
artifactPath,
|
|
218
|
+
displayPath,
|
|
219
|
+
previousResults: options.previousResults,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
return checkConfiguredPresenceOnlyArtifact({
|
|
223
|
+
format: options.output.format,
|
|
224
|
+
artifactPath,
|
|
225
|
+
displayPath,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
export async function checkConfiguredArtifactsForValidatedSource(options) {
|
|
229
|
+
const results = [];
|
|
230
|
+
for (const output of outputsInCheckOrder(options.outputs)) {
|
|
231
|
+
results.push(await checkConfiguredOutput({
|
|
232
|
+
workflow: options,
|
|
233
|
+
output,
|
|
234
|
+
previousResults: results,
|
|
286
235
|
}));
|
|
287
236
|
}
|
|
288
237
|
return results;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-workflow-configured-artifacts.js","sourceRoot":"","sources":["../src/repo-workflow-configured-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"repo-workflow-configured-artifacts.js","sourceRoot":"","sources":["../src/repo-workflow-configured-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { RepoWorkflowConfigDiscoveryResult, RepoWorkflowConfigFailure, RepoWorkflowArtifactOutputFormat } from "./repo-workflow-config.js";
|
|
2
|
+
import type { ConfiguredTextArtifactFormat } from "./repo-workflow-configured-artifact-result.js";
|
|
3
|
+
import type { DiagramSpec } from "./diagramspec-topology.js";
|
|
4
|
+
import type { DiagramPilotSourceDiscoveryFailure, DiagramPilotSourceDiscoveryOptions, DiagramPilotSourceDiscoveryResult, DiagramPilotSourceDiscoveryScope } from "./source-discovery.js";
|
|
5
|
+
import type { DiagramPilotSourceFile, RepairableDiagnosticReport, ValidatedDiagramSpecLoadFailure, ValidatedDiagramSpecLoadResult } from "./source-loading.js";
|
|
6
|
+
import { type SvgArtifactRenderer } from "./svg-artifact-freshness.js";
|
|
7
|
+
export interface RepoWorkflowGenerateOptions {
|
|
8
|
+
scopePath?: string;
|
|
9
|
+
diagramPilotVersion?: string;
|
|
10
|
+
renderer: SvgArtifactRenderer;
|
|
11
|
+
renderSvgArtifact(options: {
|
|
12
|
+
source: DiagramPilotSourceFile;
|
|
13
|
+
provenanceSourcePath: string;
|
|
14
|
+
spec: DiagramSpec;
|
|
15
|
+
diagramPilotVersion?: string;
|
|
16
|
+
renderer: SvgArtifactRenderer;
|
|
17
|
+
}): Promise<string>;
|
|
18
|
+
rasterizeSvgArtifact(svg: string): Uint8Array;
|
|
19
|
+
exportTextArtifact(options: {
|
|
20
|
+
format: ConfiguredTextArtifactFormat;
|
|
21
|
+
spec: DiagramSpec;
|
|
22
|
+
}): string;
|
|
23
|
+
}
|
|
24
|
+
export interface RepoWorkflowGenerateDependencies {
|
|
25
|
+
discoverRepoWorkflowConfig?(scopePath?: string): Promise<RepoWorkflowConfigDiscoveryResult>;
|
|
26
|
+
discoverDiagramPilotSourceFiles(scopePath?: string, options?: DiagramPilotSourceDiscoveryOptions): Promise<DiagramPilotSourceDiscoveryResult>;
|
|
27
|
+
loadValidatedDiagramSpec(path: string): ValidatedDiagramSpecLoadResult;
|
|
28
|
+
createRepairableDiagnosticReport(failure: ValidatedDiagramSpecLoadFailure): RepairableDiagnosticReport;
|
|
29
|
+
getCurrentWorkingDirectory(): string;
|
|
30
|
+
}
|
|
31
|
+
export interface RepoWorkflowGenerateSummary {
|
|
32
|
+
checkedSourceCount: number;
|
|
33
|
+
writtenArtifactCount: number;
|
|
34
|
+
skippedArtifactCount: number;
|
|
35
|
+
failureCount: number;
|
|
36
|
+
}
|
|
37
|
+
export interface RepoWorkflowGenerateWrittenArtifact {
|
|
38
|
+
sourcePath: string;
|
|
39
|
+
format: RepoWorkflowArtifactOutputFormat;
|
|
40
|
+
path: string;
|
|
41
|
+
absolutePath: string;
|
|
42
|
+
content: string | Uint8Array;
|
|
43
|
+
}
|
|
44
|
+
export interface RepoWorkflowGenerateSkippedArtifact {
|
|
45
|
+
sourcePath: string;
|
|
46
|
+
format: RepoWorkflowArtifactOutputFormat;
|
|
47
|
+
path: string;
|
|
48
|
+
reason: "unsupported-markdown-output";
|
|
49
|
+
message: string;
|
|
50
|
+
}
|
|
51
|
+
export interface RepoWorkflowGenerateSourceFailure {
|
|
52
|
+
sourcePath: string;
|
|
53
|
+
errors: RepairableDiagnosticReport["errors"];
|
|
54
|
+
}
|
|
55
|
+
export interface RepoWorkflowGenerateOperationFailure {
|
|
56
|
+
kind: "generation-failed";
|
|
57
|
+
path: string;
|
|
58
|
+
message: string;
|
|
59
|
+
}
|
|
60
|
+
export type RepoWorkflowGenerateFailure = DiagramPilotSourceDiscoveryFailure | RepoWorkflowConfigFailure | RepoWorkflowGenerateOperationFailure;
|
|
61
|
+
export type RepoWorkflowGenerateResult = {
|
|
62
|
+
ok: true;
|
|
63
|
+
config?: {
|
|
64
|
+
path: string;
|
|
65
|
+
};
|
|
66
|
+
scope: DiagramPilotSourceDiscoveryScope;
|
|
67
|
+
summary: RepoWorkflowGenerateSummary;
|
|
68
|
+
written: RepoWorkflowGenerateWrittenArtifact[];
|
|
69
|
+
skipped: RepoWorkflowGenerateSkippedArtifact[];
|
|
70
|
+
failures: [];
|
|
71
|
+
} | {
|
|
72
|
+
ok: false;
|
|
73
|
+
config?: {
|
|
74
|
+
path: string;
|
|
75
|
+
};
|
|
76
|
+
scope?: DiagramPilotSourceDiscoveryScope;
|
|
77
|
+
summary: RepoWorkflowGenerateSummary;
|
|
78
|
+
written: [];
|
|
79
|
+
skipped: RepoWorkflowGenerateSkippedArtifact[];
|
|
80
|
+
failures: RepoWorkflowGenerateSourceFailure[];
|
|
81
|
+
failure?: RepoWorkflowGenerateFailure;
|
|
82
|
+
};
|
|
83
|
+
export declare function generateDiagramPilotRepoWorkflowWithDependencies(options: RepoWorkflowGenerateOptions, dependencies: RepoWorkflowGenerateDependencies): Promise<RepoWorkflowGenerateResult>;
|
|
84
|
+
//# sourceMappingURL=repo-workflow-generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-workflow-generate.d.ts","sourceRoot":"","sources":["../src/repo-workflow-generate.ts"],"names":[],"mappings":"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"}
|