@mannyc1/ts-release 0.0.1 → 0.0.2
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/ARCHITECTURE.md +53 -0
- package/README.md +177 -34
- package/SPEC.md +8 -1
- package/dist/cli/command.d.ts +1 -1
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js +101 -53
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/main.js +3 -9
- package/dist/cli/main.js.map +1 -1
- package/dist/domain/operation.d.ts.map +1 -1
- package/dist/domain/operation.js +31 -1
- package/dist/domain/operation.js.map +1 -1
- package/dist/domain/remote-state.d.ts +90 -0
- package/dist/domain/remote-state.d.ts.map +1 -0
- package/dist/domain/remote-state.js +85 -0
- package/dist/domain/remote-state.js.map +1 -0
- package/dist/domain/status.d.ts +43 -0
- package/dist/domain/status.d.ts.map +1 -0
- package/dist/domain/status.js +50 -0
- package/dist/domain/status.js.map +1 -0
- package/dist/domain/target.d.ts +32 -2
- package/dist/domain/target.d.ts.map +1 -1
- package/dist/domain/target.js +35 -2
- package/dist/domain/target.js.map +1 -1
- package/dist/host/host.d.ts +7 -23
- package/dist/host/host.d.ts.map +1 -1
- package/dist/host/host.js +3 -22
- package/dist/host/host.js.map +1 -1
- package/dist/host/http-live.d.ts +1 -2
- package/dist/host/http-live.d.ts.map +1 -1
- package/dist/host/http-live.js +15 -9
- package/dist/host/http-live.js.map +1 -1
- package/dist/host/platform.d.ts +10 -0
- package/dist/host/platform.d.ts.map +1 -0
- package/dist/host/platform.js +121 -0
- package/dist/host/platform.js.map +1 -0
- package/dist/host/test.d.ts +6 -3
- package/dist/host/test.d.ts.map +1 -1
- package/dist/host/test.js +111 -25
- package/dist/host/test.js.map +1 -1
- package/dist/planner/artifact-inventory.d.ts +9 -0
- package/dist/planner/artifact-inventory.d.ts.map +1 -0
- package/dist/planner/artifact-inventory.js +66 -0
- package/dist/planner/artifact-inventory.js.map +1 -0
- package/dist/planner/create-release-plan.d.ts +1 -1
- package/dist/planner/create-release-plan.d.ts.map +1 -1
- package/dist/planner/errors.d.ts +37 -1
- package/dist/planner/errors.d.ts.map +1 -1
- package/dist/planner/errors.js +30 -0
- package/dist/planner/errors.js.map +1 -1
- package/dist/planner/evidence-recorder.d.ts +13 -8
- package/dist/planner/evidence-recorder.d.ts.map +1 -1
- package/dist/planner/evidence-recorder.js +98 -18
- package/dist/planner/evidence-recorder.js.map +1 -1
- package/dist/planner/executor.d.ts +31 -19
- package/dist/planner/executor.d.ts.map +1 -1
- package/dist/planner/executor.js +19 -6
- package/dist/planner/executor.js.map +1 -1
- package/dist/planner/normalize-release.d.ts +2 -2
- package/dist/planner/normalize-release.d.ts.map +1 -1
- package/dist/planner/normalize-release.js +40 -43
- package/dist/planner/normalize-release.js.map +1 -1
- package/dist/planner/reconcile.d.ts +17 -0
- package/dist/planner/reconcile.d.ts.map +1 -0
- package/dist/planner/reconcile.js +280 -0
- package/dist/planner/reconcile.js.map +1 -0
- package/dist/planner/release-eligibility.d.ts +33 -0
- package/dist/planner/release-eligibility.d.ts.map +1 -0
- package/dist/planner/release-eligibility.js +172 -0
- package/dist/planner/release-eligibility.js.map +1 -0
- package/dist/planner/render-plan.d.ts.map +1 -1
- package/dist/planner/render-plan.js +21 -0
- package/dist/planner/render-plan.js.map +1 -1
- package/dist/planner/status.d.ts +40 -0
- package/dist/planner/status.d.ts.map +1 -0
- package/dist/planner/status.js +336 -0
- package/dist/planner/status.js.map +1 -0
- package/dist/runtime/bun.d.ts +9 -0
- package/dist/runtime/bun.d.ts.map +1 -0
- package/dist/runtime/bun.js +10 -0
- package/dist/runtime/bun.js.map +1 -0
- package/dist/targets/github.d.ts.map +1 -1
- package/dist/targets/github.js +17 -13
- package/dist/targets/github.js.map +1 -1
- package/dist/targets/npm.d.ts +2 -2
- package/dist/targets/npm.d.ts.map +1 -1
- package/dist/targets/npm.js +74 -14
- package/dist/targets/npm.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/workflows/config.d.ts +81 -0
- package/dist/workflows/config.d.ts.map +1 -0
- package/dist/workflows/config.js +191 -0
- package/dist/workflows/config.js.map +1 -0
- package/dist/workflows/evidence.d.ts +21 -0
- package/dist/workflows/evidence.d.ts.map +1 -0
- package/dist/workflows/evidence.js +45 -0
- package/dist/workflows/evidence.js.map +1 -0
- package/dist/workflows/live.d.ts +7 -0
- package/dist/workflows/live.d.ts.map +1 -0
- package/dist/workflows/live.js +5 -0
- package/dist/workflows/live.js.map +1 -0
- package/examples/README.md +6 -3
- package/examples/multi-target/release.config.json +6 -1
- package/examples/npm-first-publish/release.config.json +32 -0
- package/examples/npm-only/release.config.json +6 -1
- package/package.json +31 -9
- package/dist/cli/programmatic.d.ts +0 -25
- package/dist/cli/programmatic.d.ts.map +0 -1
- package/dist/cli/programmatic.js +0 -53
- package/dist/cli/programmatic.js.map +0 -1
- package/dist/host/bun.d.ts +0 -9
- package/dist/host/bun.d.ts.map +0 -1
- package/dist/host/bun.js +0 -156
- package/dist/host/bun.js.map +0 -1
package/dist/host/test.js
CHANGED
|
@@ -1,9 +1,85 @@
|
|
|
1
|
+
import * as ConfigProvider from "effect/ConfigProvider";
|
|
2
|
+
import * as Crypto from "effect/Crypto";
|
|
1
3
|
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as FileSystem from "effect/FileSystem";
|
|
2
5
|
import * as Layer from "effect/Layer";
|
|
3
|
-
import
|
|
6
|
+
import * as Option from "effect/Option";
|
|
7
|
+
import * as Path from "effect/Path";
|
|
8
|
+
import * as PlatformError from "effect/PlatformError";
|
|
9
|
+
import { CommandResult, CommandRunnerError, ReleaseCommandRunner } from "./host.js";
|
|
4
10
|
export const commandKey = (command) => [command.executable, ...command.args].join("\u0000");
|
|
5
|
-
const
|
|
6
|
-
|
|
11
|
+
const notFound = (method, path) => PlatformError.systemError({
|
|
12
|
+
_tag: "NotFound",
|
|
13
|
+
module: "FileSystem",
|
|
14
|
+
method,
|
|
15
|
+
pathOrDescriptor: path,
|
|
16
|
+
description: "File not found"
|
|
17
|
+
});
|
|
18
|
+
const fileInfo = (sizeBytes) => ({
|
|
19
|
+
type: "File",
|
|
20
|
+
mtime: Option.none(),
|
|
21
|
+
atime: Option.none(),
|
|
22
|
+
birthtime: Option.none(),
|
|
23
|
+
dev: 0,
|
|
24
|
+
ino: Option.none(),
|
|
25
|
+
mode: 0,
|
|
26
|
+
nlink: Option.none(),
|
|
27
|
+
uid: Option.none(),
|
|
28
|
+
gid: Option.none(),
|
|
29
|
+
rdev: Option.none(),
|
|
30
|
+
size: FileSystem.Size(sizeBytes),
|
|
31
|
+
blksize: Option.none(),
|
|
32
|
+
blocks: Option.none()
|
|
33
|
+
});
|
|
34
|
+
const directoryInfo = {
|
|
35
|
+
type: "Directory",
|
|
36
|
+
mtime: Option.none(),
|
|
37
|
+
atime: Option.none(),
|
|
38
|
+
birthtime: Option.none(),
|
|
39
|
+
dev: 0,
|
|
40
|
+
ino: Option.none(),
|
|
41
|
+
mode: 0,
|
|
42
|
+
nlink: Option.none(),
|
|
43
|
+
uid: Option.none(),
|
|
44
|
+
gid: Option.none(),
|
|
45
|
+
rdev: Option.none(),
|
|
46
|
+
size: FileSystem.Size(0),
|
|
47
|
+
blksize: Option.none(),
|
|
48
|
+
blocks: Option.none()
|
|
49
|
+
};
|
|
50
|
+
const textEncoder = new TextEncoder();
|
|
51
|
+
const textDecoder = new TextDecoder();
|
|
52
|
+
const pathVariants = (path) => {
|
|
53
|
+
const cwd = globalThis.process?.cwd();
|
|
54
|
+
if (cwd === undefined) {
|
|
55
|
+
return [path];
|
|
56
|
+
}
|
|
57
|
+
if (path === cwd) {
|
|
58
|
+
return [path, "."];
|
|
59
|
+
}
|
|
60
|
+
const cwdPrefix = `${cwd}/`;
|
|
61
|
+
return path.startsWith(cwdPrefix)
|
|
62
|
+
? [path, path.slice(cwdPrefix.length)]
|
|
63
|
+
: [path];
|
|
64
|
+
};
|
|
65
|
+
const getFixtureFile = (files, path) => {
|
|
66
|
+
for (const variant of pathVariants(path)) {
|
|
67
|
+
const contents = files.get(variant);
|
|
68
|
+
if (contents !== undefined) {
|
|
69
|
+
return contents;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
};
|
|
74
|
+
const hasFixtureDirectory = (directories, path) => {
|
|
75
|
+
for (const variant of pathVariants(path)) {
|
|
76
|
+
if (directories.has(variant)) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
};
|
|
82
|
+
export const makeTestCommandRunnerLayer = (options = {}) => {
|
|
7
83
|
const files = new Map(options.files ?? []);
|
|
8
84
|
const directories = new Set(options.directories ?? []);
|
|
9
85
|
const env = new Map(options.env ?? []);
|
|
@@ -15,31 +91,42 @@ export const makeTestReleaseHostLayer = (options = {}) => {
|
|
|
15
91
|
timestampIndex += 1;
|
|
16
92
|
return value;
|
|
17
93
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
files.set(path, contents);
|
|
24
|
-
}),
|
|
94
|
+
const envRecord = {};
|
|
95
|
+
for (const [name, value] of env) {
|
|
96
|
+
envRecord[name] = value;
|
|
97
|
+
}
|
|
98
|
+
return Layer.mergeAll(FileSystem.layerNoop({
|
|
25
99
|
stat: (path) => Effect.sync(() => {
|
|
26
|
-
const contents = files
|
|
100
|
+
const contents = getFixtureFile(files, path);
|
|
27
101
|
if (contents !== undefined) {
|
|
28
|
-
return
|
|
102
|
+
return fileInfo(textEncoder.encode(contents).byteLength);
|
|
29
103
|
}
|
|
30
|
-
if (directories
|
|
31
|
-
return
|
|
104
|
+
if (hasFixtureDirectory(directories, path)) {
|
|
105
|
+
return directoryInfo;
|
|
32
106
|
}
|
|
33
107
|
return undefined;
|
|
34
108
|
}).pipe(Effect.flatMap((info) => info === undefined
|
|
35
|
-
? Effect.fail(
|
|
109
|
+
? Effect.fail(notFound("stat", path))
|
|
36
110
|
: Effect.succeed(info))),
|
|
37
|
-
|
|
38
|
-
? Effect.fail(
|
|
39
|
-
: contents
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
111
|
+
readFile: (path) => Effect.sync(() => getFixtureFile(files, path)).pipe(Effect.flatMap((contents) => contents === undefined
|
|
112
|
+
? Effect.fail(notFound("readFile", path))
|
|
113
|
+
: Effect.succeed(textEncoder.encode(contents)))),
|
|
114
|
+
readFileString: (path) => Effect.sync(() => getFixtureFile(files, path)).pipe(Effect.flatMap((contents) => contents === undefined
|
|
115
|
+
? Effect.fail(notFound("readFileString", path))
|
|
116
|
+
: Effect.succeed(contents))),
|
|
117
|
+
makeDirectory: (path) => Effect.sync(() => {
|
|
118
|
+
directories.add(path);
|
|
119
|
+
}),
|
|
120
|
+
writeFile: (path, data) => Effect.sync(() => {
|
|
121
|
+
files.set(path, textDecoder.decode(data));
|
|
122
|
+
}),
|
|
123
|
+
writeFileString: (path, data) => Effect.sync(() => {
|
|
124
|
+
files.set(path, data);
|
|
125
|
+
})
|
|
126
|
+
}), Path.layer, Layer.succeed(Crypto.Crypto)(Crypto.make({
|
|
127
|
+
randomBytes: (size) => new Uint8Array(size),
|
|
128
|
+
digest: (_algorithm, data) => Effect.succeed(data)
|
|
129
|
+
})), Layer.succeed(ReleaseCommandRunner)({
|
|
43
130
|
runCommand: (command) => Effect.gen(function* () {
|
|
44
131
|
const missing = [];
|
|
45
132
|
for (const name of command.requiredEnv) {
|
|
@@ -48,7 +135,7 @@ export const makeTestReleaseHostLayer = (options = {}) => {
|
|
|
48
135
|
}
|
|
49
136
|
}
|
|
50
137
|
if (missing.length > 0) {
|
|
51
|
-
return yield* Effect.fail(
|
|
138
|
+
return yield* Effect.fail(CommandRunnerError.make({
|
|
52
139
|
operation: "runCommand",
|
|
53
140
|
reason: `Missing required environment variables: ${missing.join(", ")}`
|
|
54
141
|
}));
|
|
@@ -69,8 +156,7 @@ export const makeTestReleaseHostLayer = (options = {}) => {
|
|
|
69
156
|
endedAt,
|
|
70
157
|
durationMillis: 0
|
|
71
158
|
});
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
});
|
|
159
|
+
})
|
|
160
|
+
}), ConfigProvider.layer(ConfigProvider.fromEnv({ env: envRecord })));
|
|
75
161
|
};
|
|
76
162
|
//# sourceMappingURL=test.js.map
|
package/dist/host/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/host/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/host/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Crypto from "effect/Crypto";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as FileSystem from "effect/FileSystem";
|
|
4
|
+
import * as Path from "effect/Path";
|
|
5
|
+
import { ArtifactIntent, ArtifactInventoryItem } from "../domain/artifact.js";
|
|
6
|
+
import { ReleaseNormalizationError } from "./errors.js";
|
|
7
|
+
export type * from "../types/effect-internal.js";
|
|
8
|
+
export declare const inventoryArtifact: (root: string, artifact: ArtifactIntent) => Effect.Effect<ArtifactInventoryItem, ReleaseNormalizationError, FileSystem.FileSystem | Path.Path | Crypto.Crypto>;
|
|
9
|
+
//# sourceMappingURL=artifact-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-inventory.d.ts","sourceRoot":"","sources":["../../src/planner/artifact-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,EACL,cAAc,EACd,qBAAqB,EAGtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAEvD,mBAAmB,6BAA6B,CAAA;AA0EhD,eAAO,MAAM,iBAAiB,gKAyB5B,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as Crypto from "effect/Crypto";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Encoding from "effect/Encoding";
|
|
4
|
+
import * as FileSystem from "effect/FileSystem";
|
|
5
|
+
import * as Path from "effect/Path";
|
|
6
|
+
import { ArtifactInventoryItem, Checksum } from "../domain/artifact.js";
|
|
7
|
+
import { ReleaseNormalizationError } from "./errors.js";
|
|
8
|
+
const checksumName = (algorithm) => algorithm === "sha256" ? "SHA-256" : "SHA-512";
|
|
9
|
+
const formatUnknown = (cause) => cause instanceof Error ? cause.message : String(cause);
|
|
10
|
+
const artifactPath = (path, root, pathName) => path.isAbsolute(pathName) ? pathName : path.resolve(root, pathName);
|
|
11
|
+
const artifactKind = (info) => info.type === "Directory" ? "directory" : info.type === "File" ? "file" : "other";
|
|
12
|
+
const normalizationPlatformError = (field) => (cause) => ReleaseNormalizationError.make({
|
|
13
|
+
field,
|
|
14
|
+
reason: formatUnknown(cause)
|
|
15
|
+
});
|
|
16
|
+
const validateArtifactFormat = (artifact, kind) => {
|
|
17
|
+
if (artifact.format === "directory" && kind !== "directory") {
|
|
18
|
+
return Effect.fail(ReleaseNormalizationError.make({
|
|
19
|
+
field: `artifacts.${artifact.id}.format`,
|
|
20
|
+
reason: `Expected directory artifact at ${artifact.path}`
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
if (artifact.format !== "directory" && kind === "directory") {
|
|
24
|
+
return Effect.fail(ReleaseNormalizationError.make({
|
|
25
|
+
field: `artifacts.${artifact.id}.format`,
|
|
26
|
+
reason: `Expected file-like artifact at ${artifact.path}`
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
return Effect.void;
|
|
30
|
+
};
|
|
31
|
+
const checksumArtifact = Effect.fn("checksumArtifact")(function* (artifact, targetPath, fileType) {
|
|
32
|
+
if (fileType !== "File") {
|
|
33
|
+
return yield* Effect.fail(ReleaseNormalizationError.make({
|
|
34
|
+
field: `artifacts.${artifact.id}.checksum`,
|
|
35
|
+
reason: "Only file artifacts can be hashed"
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
const fs = yield* FileSystem.FileSystem;
|
|
39
|
+
const crypto = yield* Crypto.Crypto;
|
|
40
|
+
const bytes = yield* fs.readFile(targetPath).pipe(Effect.mapError(normalizationPlatformError(`artifacts.${artifact.id}.checksum`)));
|
|
41
|
+
const digest = yield* crypto.digest(checksumName("sha256"), bytes).pipe(Effect.mapError(normalizationPlatformError(`artifacts.${artifact.id}.checksum`)));
|
|
42
|
+
return Checksum.make({
|
|
43
|
+
algorithm: "sha256",
|
|
44
|
+
value: Encoding.encodeHex(digest)
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
export const inventoryArtifact = Effect.fn("inventoryArtifact")(function* (root, artifact) {
|
|
48
|
+
const fs = yield* FileSystem.FileSystem;
|
|
49
|
+
const path = yield* Path.Path;
|
|
50
|
+
const targetPath = artifactPath(path, root, artifact.path);
|
|
51
|
+
const info = yield* fs.stat(targetPath).pipe(Effect.mapError(normalizationPlatformError(`artifacts.${artifact.id}.path`)));
|
|
52
|
+
const kind = artifactKind(info);
|
|
53
|
+
yield* validateArtifactFormat(artifact, kind);
|
|
54
|
+
const checksum = artifact.checksum ?? (artifact.format === "directory"
|
|
55
|
+
? undefined
|
|
56
|
+
: yield* checksumArtifact(artifact, targetPath, info.type));
|
|
57
|
+
return ArtifactInventoryItem.make({
|
|
58
|
+
id: artifact.id,
|
|
59
|
+
path: artifact.path,
|
|
60
|
+
format: artifact.format,
|
|
61
|
+
consumers: [...artifact.consumers].sort(),
|
|
62
|
+
sizeBytes: Number(info.size),
|
|
63
|
+
...(checksum === undefined ? {} : { checksum })
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=artifact-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-inventory.js","sourceRoot":"","sources":["../../src/planner/artifact-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import { ReleaseIntent, ReleasePlan } from "../domain/release.js";
|
|
3
3
|
export type * from "../types/effect-internal.js";
|
|
4
|
-
export declare const createReleasePlan: (intent: ReleaseIntent, root?: string | undefined, configPath?: string | undefined) => Effect.Effect<ReleasePlan, import("./errors.js").ReleaseNormalizationError | import("./errors.js").PlanConstructionError | import("../targets/registry.js").MissingTargetAdapterError, import("
|
|
4
|
+
export declare const createReleasePlan: (intent: ReleaseIntent, root?: string | undefined, configPath?: string | undefined) => Effect.Effect<ReleasePlan, import("./errors.js").ReleaseNormalizationError | import("./errors.js").PlanConstructionError | import("../targets/registry.js").MissingTargetAdapterError, import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("../targets/registry.js").TargetRegistry | import("../host/host.js").ReleaseCommandRunner | import("effect/Crypto").Crypto>;
|
|
5
5
|
//# sourceMappingURL=create-release-plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-release-plan.d.ts","sourceRoot":"","sources":["../../src/planner/create-release-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAmB,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlF,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"create-release-plan.d.ts","sourceRoot":"","sources":["../../src/planner/create-release-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAmB,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlF,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,iBAAiB,wdAuB5B,CAAA"}
|
package/dist/planner/errors.d.ts
CHANGED
|
@@ -25,6 +25,42 @@ declare const EvidenceWriteError_base: Schema.Class<EvidenceWriteError, Schema.T
|
|
|
25
25
|
}>, import("effect/Cause").YieldableError>;
|
|
26
26
|
export declare class EvidenceWriteError extends EvidenceWriteError_base {
|
|
27
27
|
}
|
|
28
|
+
declare const EvidenceReadError_base: Schema.Class<EvidenceReadError, Schema.TaggedStruct<"EvidenceReadError", {
|
|
29
|
+
readonly path: Schema.String;
|
|
30
|
+
readonly reason: Schema.String;
|
|
31
|
+
}>, import("effect/Cause").YieldableError>;
|
|
32
|
+
export declare class EvidenceReadError extends EvidenceReadError_base {
|
|
33
|
+
}
|
|
34
|
+
declare const WorkspaceWriteError_base: Schema.Class<WorkspaceWriteError, Schema.TaggedStruct<"WorkspaceWriteError", {
|
|
35
|
+
readonly path: Schema.String;
|
|
36
|
+
readonly reason: Schema.String;
|
|
37
|
+
}>, import("effect/Cause").YieldableError>;
|
|
38
|
+
export declare class WorkspaceWriteError extends WorkspaceWriteError_base {
|
|
39
|
+
}
|
|
40
|
+
declare const ResumeBlockedError_base: Schema.Class<ResumeBlockedError, Schema.TaggedStruct<"ResumeBlockedError", {
|
|
41
|
+
readonly operationId: Schema.String;
|
|
42
|
+
readonly reason: Schema.String;
|
|
43
|
+
}>, import("effect/Cause").YieldableError>;
|
|
44
|
+
export declare class ResumeBlockedError extends ResumeBlockedError_base {
|
|
45
|
+
}
|
|
46
|
+
declare const RemoteStateInspectionError_base: Schema.Class<RemoteStateInspectionError, Schema.TaggedStruct<"RemoteStateInspectionError", {
|
|
47
|
+
readonly targetId: Schema.String;
|
|
48
|
+
readonly reason: Schema.String;
|
|
49
|
+
}>, import("effect/Cause").YieldableError>;
|
|
50
|
+
export declare class RemoteStateInspectionError extends RemoteStateInspectionError_base {
|
|
51
|
+
}
|
|
52
|
+
declare const ReleaseEligibilityCheckError_base: Schema.Class<ReleaseEligibilityCheckError, Schema.TaggedStruct<"ReleaseEligibilityCheckError", {
|
|
53
|
+
readonly targetId: Schema.optionalKey<Schema.String>;
|
|
54
|
+
readonly reason: Schema.String;
|
|
55
|
+
}>, import("effect/Cause").YieldableError>;
|
|
56
|
+
export declare class ReleaseEligibilityCheckError extends ReleaseEligibilityCheckError_base {
|
|
57
|
+
}
|
|
58
|
+
declare const ReconciliationBlockedError_base: Schema.Class<ReconciliationBlockedError, Schema.TaggedStruct<"ReconciliationBlockedError", {
|
|
59
|
+
readonly targetId: Schema.String;
|
|
60
|
+
readonly reasons: Schema.$Array<Schema.String>;
|
|
61
|
+
}>, import("effect/Cause").YieldableError>;
|
|
62
|
+
export declare class ReconciliationBlockedError extends ReconciliationBlockedError_base {
|
|
63
|
+
}
|
|
28
64
|
declare const OperationFailedError_base: Schema.Class<OperationFailedError, Schema.TaggedStruct<"OperationFailedError", {
|
|
29
65
|
readonly operationId: Schema.String;
|
|
30
66
|
readonly exitCode: Schema.optionalKey<Schema.Number>;
|
|
@@ -35,5 +71,5 @@ declare const OperationFailedError_base: Schema.Class<OperationFailedError, Sche
|
|
|
35
71
|
}>, import("effect/Cause").YieldableError>;
|
|
36
72
|
export declare class OperationFailedError extends OperationFailedError_base {
|
|
37
73
|
}
|
|
38
|
-
export type PlannerError = ReleaseNormalizationError | ArtifactInventoryError | PlanConstructionError | EvidenceWriteError | OperationFailedError;
|
|
74
|
+
export type PlannerError = ReleaseNormalizationError | ArtifactInventoryError | PlanConstructionError | EvidenceWriteError | EvidenceReadError | WorkspaceWriteError | ResumeBlockedError | RemoteStateInspectionError | ReleaseEligibilityCheckError | ReconciliationBlockedError | OperationFailedError;
|
|
39
75
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/planner/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAEtF,mBAAmB,6BAA6B,CAAA;;;;;AAEhD,qBAAa,yBAA0B,SAAQ,8BAM9C;CAAG;;;;;AAEJ,qBAAa,sBAAuB,SAAQ,2BAM3C;CAAG;;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/planner/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAEtF,mBAAmB,6BAA6B,CAAA;;;;;AAEhD,qBAAa,yBAA0B,SAAQ,8BAM9C;CAAG;;;;;AAEJ,qBAAa,sBAAuB,SAAQ,2BAM3C;CAAG;;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAGvC;CAAG;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG;;;;;AAEL,qBAAa,0BAA2B,SAAQ,+BAM/C;CAAG;;;;;AAEJ,qBAAa,4BAA6B,SAAQ,iCAMjD;CAAG;;;;;AAEJ,qBAAa,0BAA2B,SAAQ,+BAM/C;CAAG;;;;;;;;;AAEJ,qBAAa,oBAAqB,SAAQ,yBAOxC;CAAG;AAEL,MAAM,MAAM,YAAY,GACpB,yBAAyB,GACzB,sBAAsB,GACtB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,0BAA0B,GAC1B,4BAA4B,GAC5B,0BAA0B,GAC1B,oBAAoB,CAAA"}
|
package/dist/planner/errors.js
CHANGED
|
@@ -20,6 +20,36 @@ export class EvidenceWriteError extends Schema.TaggedErrorClass()("EvidenceWrite
|
|
|
20
20
|
reason: Schema.String
|
|
21
21
|
}) {
|
|
22
22
|
}
|
|
23
|
+
export class EvidenceReadError extends Schema.TaggedErrorClass()("EvidenceReadError", {
|
|
24
|
+
path: Schema.String,
|
|
25
|
+
reason: Schema.String
|
|
26
|
+
}) {
|
|
27
|
+
}
|
|
28
|
+
export class WorkspaceWriteError extends Schema.TaggedErrorClass()("WorkspaceWriteError", {
|
|
29
|
+
path: Schema.String,
|
|
30
|
+
reason: Schema.String
|
|
31
|
+
}) {
|
|
32
|
+
}
|
|
33
|
+
export class ResumeBlockedError extends Schema.TaggedErrorClass()("ResumeBlockedError", {
|
|
34
|
+
operationId: Schema.String,
|
|
35
|
+
reason: Schema.String
|
|
36
|
+
}) {
|
|
37
|
+
}
|
|
38
|
+
export class RemoteStateInspectionError extends Schema.TaggedErrorClass()("RemoteStateInspectionError", {
|
|
39
|
+
targetId: Schema.String,
|
|
40
|
+
reason: Schema.String
|
|
41
|
+
}) {
|
|
42
|
+
}
|
|
43
|
+
export class ReleaseEligibilityCheckError extends Schema.TaggedErrorClass()("ReleaseEligibilityCheckError", {
|
|
44
|
+
targetId: Schema.optionalKey(Schema.String),
|
|
45
|
+
reason: Schema.String
|
|
46
|
+
}) {
|
|
47
|
+
}
|
|
48
|
+
export class ReconciliationBlockedError extends Schema.TaggedErrorClass()("ReconciliationBlockedError", {
|
|
49
|
+
targetId: Schema.String,
|
|
50
|
+
reasons: Schema.Array(Schema.String)
|
|
51
|
+
}) {
|
|
52
|
+
}
|
|
23
53
|
export class OperationFailedError extends Schema.TaggedErrorClass()("OperationFailedError", {
|
|
24
54
|
operationId: Schema.String,
|
|
25
55
|
exitCode: Schema.optionalKey(Schema.Number),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/planner/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAItF,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,gBAAgB,EAA6B,CACjG,2BAA2B,EAC3B;IACE,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,gBAAgB,EAA0B,CAC3F,wBAAwB,EACxB;IACE,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,gBAAgB,EAAyB,CAAC,uBAAuB,EAAE;IACnH,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,gBAAgB,EAAsB,CAAC,oBAAoB,EAAE;IAC1G,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,gBAAgB,EAAwB,CAAC,sBAAsB,EAAE;IAChH,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;IAC5C,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,8BAA8B,CAAC;CACrE,CAAC;CAAG"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/planner/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAA;AAItF,MAAM,OAAO,yBAA0B,SAAQ,MAAM,CAAC,gBAAgB,EAA6B,CACjG,2BAA2B,EAC3B;IACE,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,gBAAgB,EAA0B,CAC3F,wBAAwB,EACxB;IACE,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,gBAAgB,EAAyB,CAAC,uBAAuB,EAAE;IACnH,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,gBAAgB,EAAsB,CAAC,oBAAoB,EAAE;IAC1G,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,gBAAgB,EAAqB,CAAC,mBAAmB,EAAE;IACvG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,gBAAgB,EAAuB,CAAC,qBAAqB,EAAE;IAC7G,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,gBAAgB,EAAsB,CAAC,oBAAoB,EAAE;IAC1G,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,gBAAgB,EAA8B,CACnG,4BAA4B,EAC5B;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,OAAO,4BAA6B,SAAQ,MAAM,CAAC,gBAAgB,EAAgC,CACvG,8BAA8B,EAC9B;IACE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,gBAAgB,EAA8B,CACnG,4BAA4B,EAC5B;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;CACrC,CACF;CAAG;AAEJ,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,gBAAgB,EAAwB,CAAC,sBAAsB,EAAE;IAChH,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;IAC5C,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,8BAA8B,CAAC;CACrE,CAAC;CAAG"}
|
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as FileSystem from "effect/FileSystem";
|
|
3
|
+
import * as Path from "effect/Path";
|
|
2
4
|
import * as Schema from "effect/Schema";
|
|
3
5
|
import { CommandEvidence, EvidenceBundle, EvidenceRecord, ExecutionEvidence, HttpEvidence, ValidationEvidence } from "../domain/evidence.js";
|
|
4
6
|
import { VerifyHttpOperation } from "../domain/operation.js";
|
|
5
7
|
import { ReleasePlan } from "../domain/release.js";
|
|
6
|
-
import {
|
|
8
|
+
import { ReleaseCommandRunner } from "../host/host.js";
|
|
7
9
|
import { ReleaseHttp } from "../host/http.js";
|
|
8
|
-
import { EvidenceWriteError } from "./errors.js";
|
|
10
|
+
import { EvidenceReadError, EvidenceWriteError } from "./errors.js";
|
|
9
11
|
export type * from "../types/effect-internal.js";
|
|
10
12
|
export declare const emptyEvidenceBundle: (plan: ReleasePlan) => EvidenceBundle;
|
|
11
13
|
export declare const appendEvidenceRecord: (bundle: EvidenceBundle, record: EvidenceRecord) => EvidenceBundle;
|
|
12
14
|
export declare const redactText: (input: string, secrets: ReadonlyArray<string>) => string;
|
|
13
|
-
export declare const readRedactionSecrets: (operation: import("../domain/operation.js").RenderFileOperation | import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | VerifyHttpOperation) => Effect.Effect<string[], never,
|
|
14
|
-
export declare const commandEvidenceFromResult: (operation: import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation) => Effect.Effect<CommandEvidence, import("../host/host.js").
|
|
15
|
-
export declare const httpEvidenceFromResult: (operation: VerifyHttpOperation) => Effect.Effect<HttpEvidence, never,
|
|
16
|
-
export declare const executionEvidence: (operation: import("../domain/operation.js").RenderFileOperation | import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | VerifyHttpOperation, message: string) => Effect.Effect<ExecutionEvidence, never,
|
|
17
|
-
export declare const validationNoteEvidence: (operation: import("../domain/operation.js").ValidationNoteOperation) => Effect.Effect<ValidationEvidence, never,
|
|
15
|
+
export declare const readRedactionSecrets: (operation: import("../domain/operation.js").RenderFileOperation | import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | VerifyHttpOperation) => Effect.Effect<string[], never, never>;
|
|
16
|
+
export declare const commandEvidenceFromResult: (operation: import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation) => Effect.Effect<CommandEvidence, import("../host/host.js").CommandRunnerError, ReleaseCommandRunner>;
|
|
17
|
+
export declare const httpEvidenceFromResult: (operation: VerifyHttpOperation) => Effect.Effect<HttpEvidence, never, ReleaseHttp>;
|
|
18
|
+
export declare const executionEvidence: (operation: import("../domain/operation.js").RenderFileOperation | import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | VerifyHttpOperation, message: string) => Effect.Effect<ExecutionEvidence, never, never>;
|
|
19
|
+
export declare const validationNoteEvidence: (operation: import("../domain/operation.js").ValidationNoteOperation) => Effect.Effect<ValidationEvidence, never, never>;
|
|
18
20
|
export declare const renderEvidenceJson: (bundle: EvidenceBundle) => string;
|
|
19
|
-
export declare const writeEvidenceBundle: (
|
|
21
|
+
export declare const writeEvidenceBundle: (pathName: string, bundle: EvidenceBundle, root?: string | undefined) => Effect.Effect<void, EvidenceWriteError, FileSystem.FileSystem | Path.Path>;
|
|
20
22
|
export declare const decodeEvidenceBundle: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => Effect.Effect<EvidenceBundle, Schema.SchemaError, never>;
|
|
23
|
+
export declare const readEvidenceBundle: (pathName: string, root?: string | undefined) => Effect.Effect<EvidenceBundle, EvidenceReadError, FileSystem.FileSystem | Path.Path>;
|
|
24
|
+
export declare const tryReadEvidenceBundle: (pathName: string, root?: string | undefined) => Effect.Effect<EvidenceBundle | undefined, EvidenceReadError, FileSystem.FileSystem | Path.Path>;
|
|
25
|
+
export declare const mergeEvidenceBundles: (plan: ReleasePlan, existing: EvidenceBundle | undefined, fresh: EvidenceBundle) => Effect.Effect<EvidenceBundle, EvidenceReadError, never>;
|
|
21
26
|
//# sourceMappingURL=evidence-recorder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-recorder.d.ts","sourceRoot":"","sources":["../../src/planner/evidence-recorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evidence-recorder.d.ts","sourceRoot":"","sources":["../../src/planner/evidence-recorder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAEnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EAEjB,YAAY,EAEZ,kBAAkB,EACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAA0D,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEnE,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,mBAAmB,GAAI,MAAM,WAAW,KAAG,cAMpD,CAAA;AAEJ,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,cAAc,EACtB,QAAQ,cAAc,KACrB,cAMC,CAAA;AAEJ,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,EAAE,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,MAQ1E,CAAA;AAsBD,eAAO,MAAM,oBAAoB,6WAc/B,CAAA;AAEF,eAAO,MAAM,yBAAyB,kSAqBpC,CAAA;AA2GF,eAAO,MAAM,sBAAsB,qFA0DjC,CAAA;AAEF,eAAO,MAAM,iBAAiB,uYAW5B,CAAA;AAEF,eAAO,MAAM,sBAAsB,0HAcjC,CAAA;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,cAAc,KAAG,MACpB,CAAA;AAExC,eAAO,MAAM,mBAAmB,qJAmB9B,CAAA;AAEF,eAAO,MAAM,oBAAoB,iIAA6C,CAAA;AAyB9E,eAAO,MAAM,kBAAkB,sIAa7B,CAAA;AAEF,eAAO,MAAM,qBAAqB,kJAmChC,CAAA;AAmBF,eAAO,MAAM,oBAAoB,6IAc/B,CAAA"}
|