@mannyc1/ts-release 0.0.3 → 0.0.5
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 +1 -1
- package/README.md +72 -8
- package/SPEC.md +15 -1
- package/dist/config/errors.d.ts +2 -1
- package/dist/config/errors.d.ts.map +1 -1
- package/dist/config/errors.js +4 -3
- package/dist/config/errors.js.map +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +5 -3
- package/dist/config/load.js.map +1 -1
- package/dist/domain/artifact.d.ts +3 -3
- package/dist/domain/artifact.d.ts.map +1 -1
- package/dist/domain/artifact.js +1 -1
- package/dist/domain/artifact.js.map +1 -1
- package/dist/domain/evidence.d.ts +14 -14
- package/dist/domain/evidence.d.ts.map +1 -1
- package/dist/domain/evidence.js +4 -3
- package/dist/domain/evidence.js.map +1 -1
- package/dist/domain/operation.d.ts +14 -14
- package/dist/domain/operation.d.ts.map +1 -1
- package/dist/domain/operation.js +1 -1
- package/dist/domain/operation.js.map +1 -1
- package/dist/domain/release.d.ts +83 -9
- package/dist/domain/release.d.ts.map +1 -1
- package/dist/domain/release.js +75 -5
- package/dist/domain/release.js.map +1 -1
- package/dist/domain/remote-state.d.ts +21 -16
- package/dist/domain/remote-state.d.ts.map +1 -1
- package/dist/domain/remote-state.js +14 -8
- package/dist/domain/remote-state.js.map +1 -1
- package/dist/domain/status.d.ts +4 -4
- package/dist/domain/status.d.ts.map +1 -1
- package/dist/domain/status.js +3 -2
- package/dist/domain/status.js.map +1 -1
- package/dist/domain/target.d.ts +7 -7
- package/dist/domain/target.d.ts.map +1 -1
- package/dist/domain/target.js +1 -1
- package/dist/domain/target.js.map +1 -1
- package/dist/host/host.d.ts +1 -0
- package/dist/host/host.d.ts.map +1 -1
- package/dist/host/host.js +2 -1
- package/dist/host/host.js.map +1 -1
- package/dist/host/http-live.d.ts.map +1 -1
- package/dist/host/http-live.js +4 -3
- package/dist/host/http-live.js.map +1 -1
- package/dist/host/http.d.ts +1 -0
- package/dist/host/http.d.ts.map +1 -1
- package/dist/host/http.js +2 -1
- package/dist/host/http.js.map +1 -1
- package/dist/host/platform.d.ts.map +1 -1
- package/dist/host/platform.js +2 -2
- package/dist/host/platform.js.map +1 -1
- package/dist/host/test.d.ts.map +1 -1
- package/dist/host/test.js +43 -0
- package/dist/host/test.js.map +1 -1
- package/dist/planner/artifact-inventory.d.ts.map +1 -1
- package/dist/planner/artifact-inventory.js +6 -6
- package/dist/planner/artifact-inventory.js.map +1 -1
- package/dist/planner/errors.d.ts +12 -6
- package/dist/planner/errors.d.ts.map +1 -1
- package/dist/planner/errors.js +20 -12
- package/dist/planner/errors.js.map +1 -1
- package/dist/planner/evidence-recorder.d.ts.map +1 -1
- package/dist/planner/evidence-recorder.js +10 -6
- package/dist/planner/evidence-recorder.js.map +1 -1
- package/dist/planner/normalize-release.d.ts +11 -2
- package/dist/planner/normalize-release.d.ts.map +1 -1
- package/dist/planner/normalize-release.js +88 -10
- package/dist/planner/normalize-release.js.map +1 -1
- package/dist/planner/reconcile.d.ts.map +1 -1
- package/dist/planner/reconcile.js +5 -79
- package/dist/planner/reconcile.js.map +1 -1
- package/dist/planner/release-eligibility.d.ts +18 -13
- package/dist/planner/release-eligibility.d.ts.map +1 -1
- package/dist/planner/release-eligibility.js +428 -29
- package/dist/planner/release-eligibility.js.map +1 -1
- package/dist/planner/render-plan.d.ts +1 -1
- package/dist/planner/render-plan.js +2 -1
- package/dist/planner/render-plan.js.map +1 -1
- package/dist/targets/adapter-helpers.d.ts +20 -2
- package/dist/targets/adapter-helpers.d.ts.map +1 -1
- package/dist/targets/adapter-helpers.js +32 -1
- package/dist/targets/adapter-helpers.js.map +1 -1
- package/dist/targets/github-release.d.ts +25 -0
- package/dist/targets/github-release.d.ts.map +1 -0
- package/dist/targets/github-release.js +82 -0
- package/dist/targets/github-release.js.map +1 -0
- package/dist/targets/github.d.ts +2 -2
- package/dist/targets/github.d.ts.map +1 -1
- package/dist/targets/github.js +19 -68
- package/dist/targets/github.js.map +1 -1
- package/dist/targets/homebrew.d.ts +2 -2
- package/dist/targets/homebrew.d.ts.map +1 -1
- package/dist/targets/homebrew.js +15 -31
- package/dist/targets/homebrew.js.map +1 -1
- package/dist/targets/scoop.d.ts +2 -2
- package/dist/targets/scoop.d.ts.map +1 -1
- package/dist/targets/scoop.js +13 -28
- package/dist/targets/scoop.js.map +1 -1
- package/dist/workflows/config.d.ts +123 -22
- package/dist/workflows/config.d.ts.map +1 -1
- package/dist/workflows/config.js +215 -47
- package/dist/workflows/config.js.map +1 -1
- package/dist/workflows/diagnostics.d.ts +6 -6
- package/dist/workflows/diagnostics.d.ts.map +1 -1
- package/dist/workflows/diagnostics.js +140 -78
- package/dist/workflows/diagnostics.js.map +1 -1
- package/dist/workflows/evidence.d.ts +8 -3
- package/dist/workflows/evidence.d.ts.map +1 -1
- package/dist/workflows/evidence.js +9 -0
- package/dist/workflows/evidence.js.map +1 -1
- package/dist/workflows/init.d.ts +14 -1
- package/dist/workflows/init.d.ts.map +1 -1
- package/dist/workflows/init.js +135 -68
- package/dist/workflows/init.js.map +1 -1
- package/package.json +7 -3
- package/templates/README.md +5 -0
- package/templates/github-actions/plan-and-approved-execute.yml +10 -5
- package/templates/github-actions/plan-only.yml +5 -2
- package/templates/github-actions/trusted-publishing.yml +7 -5
package/ARCHITECTURE.md
CHANGED
|
@@ -35,7 +35,7 @@ than reaching into CLI modules.
|
|
|
35
35
|
|
|
36
36
|
## Current Module Taxonomy
|
|
37
37
|
|
|
38
|
-
- `domain/` contains durable schema-backed data models and
|
|
38
|
+
- `domain/` contains durable schema-backed data models, typed errors, and scalar schemas owned by their semantic domain modules, such as release names in `domain/release`, target IDs in `domain/target`, artifact IDs in `domain/artifact`, operation IDs in `domain/operation`, and evidence IDs in `domain/evidence`.
|
|
39
39
|
- `config/` parses and validates release config into domain values.
|
|
40
40
|
- `planner/` normalizes release intent, builds plans, renders plans, executes operation data through injected services, records evidence, reports status, resumes safe work, and reconciles remote state.
|
|
41
41
|
- `targets/` models ecosystem-specific target semantics and produces operation data. Target modules may describe commands and HTTP checks, but they do not execute them.
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ required without surprising users. The source currently lives in
|
|
|
31
31
|
`apps/ts-release-action`.
|
|
32
32
|
|
|
33
33
|
The action supports the review commands `plan`, `validate-config`, `status`,
|
|
34
|
-
`doctor`, `check-auth`, and `check-ci`, plus the approved workflow commands
|
|
34
|
+
`eligibility`, `doctor`, `check-auth`, and `check-ci`, plus the approved workflow commands
|
|
35
35
|
`validate`, `run`, `resume`, and `reconcile`. Use `upload-evidence: true` when
|
|
36
36
|
an action job should publish collected `.release/evidence` JSON files even after
|
|
37
37
|
a command fails.
|
|
@@ -51,6 +51,7 @@ bun run cli explain npm:npm-publish --config release.config.json
|
|
|
51
51
|
bun run cli doctor --config release.config.json --format text
|
|
52
52
|
bun run cli check-auth --config release.config.json --target npm --format text
|
|
53
53
|
bun run cli check-ci --config release.config.json --workflow .github/workflows/release.yml --format markdown
|
|
54
|
+
bun run cli check-intent --config release.config.json --format text
|
|
54
55
|
bun run cli render --config release.config.json --execute
|
|
55
56
|
bun run cli validate --config release.config.json
|
|
56
57
|
bun run cli print --config release.config.json
|
|
@@ -70,7 +71,8 @@ bun run cli resume --config release.config.json --execute --approve-irreversible
|
|
|
70
71
|
```
|
|
71
72
|
|
|
72
73
|
Resume skips operations with successful matching evidence, reruns safe read-only failures, and blocks failed publish operations until remote state is reconciled manually.
|
|
73
|
-
`eligibility` checks npm and GitHub remote state
|
|
74
|
+
`eligibility` resolves the configured release decision strategy and checks npm and GitHub remote state when a release is intended.
|
|
75
|
+
`check-intent` is a read-only CI gate for the explicit intent-file strategy.
|
|
74
76
|
`reconcile` is separate from resume: it inspects GitHub release state through the API and can publish a matching draft release with explicit `--execute` without republishing immutable npm versions.
|
|
75
77
|
|
|
76
78
|
The executable is an argv and console adapter over TypeScript workflows. Release workflows are modeled as typed functions first, then exposed through the CLI for terminal and CI usage.
|
|
@@ -239,6 +241,59 @@ Use `@mannyc1/ts-release/workflows` for the curated `Config`, `Init`, `Diagnosti
|
|
|
239
241
|
The optional `$schema` key powers editor completion and does not change release behavior. Print the derived schema with `bun run cli schema`, and use `bun run cli validate-config` to check JSON syntax and release config shape without running target validators.
|
|
240
242
|
|
|
241
243
|
Paths are release-workspace relative and may not be absolute or contain parent traversal. `evidenceDirectory` may include the literal `{version}` placeholder, which is resolved during planning so each release version can use its own evidence directory.
|
|
244
|
+
Artifact paths may use `{version}`, `{name}`, and `{normalizedName}`. `normalizedName` removes a leading npm scope marker and replaces `/` with `-`, matching generated self-release artifact names such as `mannyc1-ts-release-0.1.0.tgz`.
|
|
245
|
+
|
|
246
|
+
## Release Strategies
|
|
247
|
+
|
|
248
|
+
Release identity and release decisions are strategy-backed data. Target adapters still receive a concrete release identity and still produce reviewable, approval-gated operations.
|
|
249
|
+
|
|
250
|
+
| Strategy | Good for | Source of truth |
|
|
251
|
+
|---|---|---|
|
|
252
|
+
| Static config | audited/manual release identity | release config |
|
|
253
|
+
| Package manifest | npm/package releases with one version source | `package.json` |
|
|
254
|
+
| Git tag | tag-triggered release workflows | current Git tag |
|
|
255
|
+
| Conventional commits | automated SemVer from commit messages | commits since the latest matching tag |
|
|
256
|
+
| Intent files | reviewed release intent in PRs | `.release/intents/*.json` |
|
|
257
|
+
|
|
258
|
+
Static identity remains supported:
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"identity": {
|
|
263
|
+
"name": "@scope/pkg",
|
|
264
|
+
"version": "0.1.0",
|
|
265
|
+
"commit": "abc123",
|
|
266
|
+
"tag": "v0.1.0"
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
For npm-style packages, prefer manifest-derived identity to avoid repeating versions in release config:
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"identity": {
|
|
276
|
+
"_tag": "PackageManifestReleaseIdentitySource",
|
|
277
|
+
"packagePath": "package.json",
|
|
278
|
+
"commit": "HEAD",
|
|
279
|
+
"tagTemplate": "v{version}"
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Decision strategies are opt-in through `releaseDecision`. The default `RemoteStateReleaseDecision` uses the resolved identity, then checks npm and GitHub state. Git tag and conventional commit strategies can return `skipped` without error when no release input is present. Intent files are small JSON documents in `.release/intents`:
|
|
285
|
+
|
|
286
|
+
```json
|
|
287
|
+
{
|
|
288
|
+
"$schema": "https://mannyc2.github.io/ts-release/schema/release-intent.schema.json",
|
|
289
|
+
"package": "@scope/pkg",
|
|
290
|
+
"release": "patch",
|
|
291
|
+
"summary": "Explain the user-visible change.",
|
|
292
|
+
"empty": false
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
This is a first-party intent-file format, not full Changesets compatibility. Publish operations remain plan data until explicit execution approval, regardless of which strategy chose the intended version.
|
|
242
297
|
|
|
243
298
|
Homebrew tap targets model catalog updates as generated files plus an approval-gated push:
|
|
244
299
|
|
|
@@ -366,16 +421,22 @@ Config templates are intentionally narrow:
|
|
|
366
421
|
```sh
|
|
367
422
|
bun run cli init --template npm-github --package @scope/pkg --repo owner/repo
|
|
368
423
|
bun run cli init --template npm-github --package @scope/pkg --repo owner/repo --write
|
|
424
|
+
bun run cli init --template npm-github --package @scope/pkg --repo owner/repo --github-actions --package-manager npm --write
|
|
369
425
|
bun run cli plan --config release.config.json --format text
|
|
370
426
|
```
|
|
371
427
|
|
|
372
428
|
The npm templates enable provenance and set `verifyPackageExists: true`, which
|
|
373
429
|
adds a read-only `npm view <package>` validation before trusted publishing.
|
|
374
430
|
Add `--github-actions` to include the action-first trusted-publishing workflow
|
|
375
|
-
template in the preview or write set.
|
|
376
|
-
`--
|
|
431
|
+
template in the preview or write set. Workflow scaffolding supports
|
|
432
|
+
`--package-manager bun|npm|pnpm|yarn`, plus single-line `--install-command` and
|
|
433
|
+
`--build-command` overrides. Those commands are CI setup steps, not release
|
|
434
|
+
target policy; publish operations still come from the `ts-release` plan.
|
|
435
|
+
Existing files are not overwritten unless `--overwrite` is also passed.
|
|
377
436
|
|
|
378
|
-
Action-first GitHub templates live under `templates/github-actions/`.
|
|
437
|
+
Action-first GitHub templates live under `templates/github-actions/`. The
|
|
438
|
+
checked-in templates use npm setup by default, while this repository's own
|
|
439
|
+
self-release workflow uses the Bun preset.
|
|
379
440
|
|
|
380
441
|
Use `doctor`, `check-auth`, and `check-ci` after writing a template to inspect
|
|
381
442
|
static readiness before any publish operation is approved.
|
|
@@ -437,7 +498,9 @@ Normal verification stays deterministic and does not require live external servi
|
|
|
437
498
|
bun run check:release
|
|
438
499
|
```
|
|
439
500
|
|
|
440
|
-
CI runs the portable package checks on Linux, macOS, and Windows. The
|
|
501
|
+
CI runs the portable package checks on Linux, macOS, and Windows. The release
|
|
502
|
+
gate runs the self-release config guard, the static self-release CI diagnostic,
|
|
503
|
+
and then the portable checks.
|
|
441
504
|
|
|
442
505
|
Real-tool integration checks are opt-in:
|
|
443
506
|
|
|
@@ -454,10 +517,11 @@ Example configs and templates are checked through the TypeScript workflow path:
|
|
|
454
517
|
bun run check:examples
|
|
455
518
|
```
|
|
456
519
|
|
|
457
|
-
This repository also includes a self-release config at `apps/release-ts/release.config.json` that targets both npm and GitHub for the scoped `@mannyc1/ts-release` package. The app-owned self-release scripts live under `apps/release-ts/scripts`, with root package scripts delegating to them. The self-release config must pass `bun run check:self-release-config` before release checks proceed.
|
|
520
|
+
This repository also includes a self-release config at `apps/release-ts/release.config.json` that targets both npm and GitHub for the scoped `@mannyc1/ts-release` package. The app-owned self-release scripts live under `apps/release-ts/scripts`, with root package scripts delegating to them. The self-release config must pass `bun run check:self-release-config`, and the workflow must pass `bun run check:self-release-ci`, before portable release checks proceed. It derives name and version from the root `package.json`, uses `{version}` artifact templates, and keeps `identity.commit` as `HEAD` for stored-config convenience. Generated plans resolve `HEAD` to the current short commit, and the self-release guard requires a committed Git checkout with clean tracked files.
|
|
458
521
|
|
|
459
522
|
```sh
|
|
460
523
|
bun run check:self-release-config
|
|
524
|
+
bun run check:self-release-ci
|
|
461
525
|
```
|
|
462
526
|
|
|
463
527
|
### Self Release
|
|
@@ -470,7 +534,7 @@ bun run release:artifacts
|
|
|
470
534
|
bun run cli plan --config apps/release-ts/release.config.json --format text
|
|
471
535
|
```
|
|
472
536
|
|
|
473
|
-
`release:artifacts` delegates to `apps/release-ts/scripts/build-release-artifacts.ts` and writes ignored files under `.release/artifacts`: the npm package tarball and standalone CLI executables for Linux, macOS, and Windows. GitHub Actions runs
|
|
537
|
+
`release:artifacts` delegates to `apps/release-ts/scripts/build-release-artifacts.ts` and writes ignored files under `.release/artifacts`: the npm package tarball and standalone CLI executables for Linux, macOS, and Windows. GitHub Actions runs on protected `main` and checks release eligibility before the full release gate. When `should_release` is true, the plan job runs `check:release`, builds artifacts, records a Markdown release plan, uploads evidence, and does not execute release operations. The protected `execute` job uses the reviewed `.release/artifacts` download, grants `contents: write` and `id-token: write`, and runs approved execution with npm trusted publishing OIDC instead of an npm token.
|
|
474
538
|
|
|
475
539
|
### Local Release Auth
|
|
476
540
|
|
package/SPEC.md
CHANGED
|
@@ -51,7 +51,7 @@ The primary output of the package is a release plan, not a side effect.
|
|
|
51
51
|
|
|
52
52
|
A plan should be serializable, reviewable, and suitable for CI artifacts. It should explain:
|
|
53
53
|
|
|
54
|
-
- release identity: name, version, commit, tag, notes, and
|
|
54
|
+
- release identity: name, version, commit, tag, notes, source metadata, and the strategy that resolved it
|
|
55
55
|
- artifact inventory: files, checksums, sizes, formats, and intended consumers
|
|
56
56
|
- target operations: what each target will do and what inputs it needs
|
|
57
57
|
- validation steps: which checks must run before publishing
|
|
@@ -149,6 +149,10 @@ User-authored input describing what should be released.
|
|
|
149
149
|
|
|
150
150
|
It should be concise but complete enough to identify the release, locate artifacts, choose targets, and declare policy.
|
|
151
151
|
|
|
152
|
+
Identity may be static config data or may be derived from a package manifest. Decision strategies may then decide whether a release should be attempted from explicit remote-state config, the current Git tag, conventional commits since the latest matching tag, or first-party intent files. These strategies choose the intended identity and skipped/ready/complete/partial eligibility result; they do not publish.
|
|
153
|
+
|
|
154
|
+
Intent files are a small first-party reviewed-intent format, not a promise of full Changesets compatibility. An empty/no-release intent can satisfy CI while producing a skipped release decision.
|
|
155
|
+
|
|
152
156
|
### Release Model
|
|
153
157
|
|
|
154
158
|
A normalized internal representation with defaults resolved, paths normalized, targets expanded, and invalid combinations rejected.
|
|
@@ -215,6 +219,16 @@ Good config answers:
|
|
|
215
219
|
- Which generated files or indexes will change?
|
|
216
220
|
- Which operations are allowed to execute in this environment?
|
|
217
221
|
|
|
222
|
+
Release strategies should stay declarative:
|
|
223
|
+
|
|
224
|
+
- static config is for manually audited release identity
|
|
225
|
+
- package manifest identity is for package releases with one version source
|
|
226
|
+
- Git tag decisions are for tag-triggered workflows
|
|
227
|
+
- conventional commit decisions are for automated SemVer from commit messages
|
|
228
|
+
- intent-file decisions are for release intent reviewed in PRs
|
|
229
|
+
|
|
230
|
+
Artifact path templates may interpolate only named release data such as `{version}`, `{name}`, and `{normalizedName}`. They must be expanded before path safety and artifact inventory checks.
|
|
231
|
+
|
|
218
232
|
## Testing Strategy
|
|
219
233
|
|
|
220
234
|
The core should be heavily testable without real external services.
|
package/dist/config/errors.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ export type * from "../types/effect-internal.js";
|
|
|
3
3
|
declare const ConfigReadError_base: Schema.Class<ConfigReadError, Schema.TaggedStruct<"ConfigReadError", {
|
|
4
4
|
readonly path: Schema.String;
|
|
5
5
|
readonly reason: Schema.String;
|
|
6
|
+
readonly cause: Schema.optionalKey<Schema.Defect>;
|
|
6
7
|
}>, import("effect/Cause").YieldableError>;
|
|
7
8
|
export declare class ConfigReadError extends ConfigReadError_base {
|
|
8
9
|
}
|
|
9
10
|
declare const ConfigParseError_base: Schema.Class<ConfigParseError, Schema.TaggedStruct<"ConfigParseError", {
|
|
10
11
|
readonly path: Schema.String;
|
|
11
12
|
readonly reason: Schema.String;
|
|
13
|
+
readonly cause: Schema.optionalKey<Schema.Defect>;
|
|
12
14
|
}>, import("effect/Cause").YieldableError>;
|
|
13
15
|
export declare class ConfigParseError extends ConfigParseError_base {
|
|
14
16
|
}
|
|
@@ -19,5 +21,4 @@ declare const ConfigValidationError_base: Schema.Class<ConfigValidationError, Sc
|
|
|
19
21
|
export declare class ConfigValidationError extends ConfigValidationError_base {
|
|
20
22
|
}
|
|
21
23
|
export type ConfigError = ConfigReadError | ConfigParseError | ConfigValidationError;
|
|
22
|
-
export declare const formatUnknown: (cause: unknown) => string;
|
|
23
24
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;;;;;;AAEhD,qBAAa,eAAgB,SAAQ,oBAInC;CAAG;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAIpC;CAAG;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;AAEL,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,qBAAqB,CAAA"}
|
package/dist/config/errors.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
2
|
export class ConfigReadError extends Schema.TaggedErrorClass()("ConfigReadError", {
|
|
3
3
|
path: Schema.String,
|
|
4
|
-
reason: Schema.String
|
|
4
|
+
reason: Schema.String,
|
|
5
|
+
cause: Schema.optionalKey(Schema.Defect())
|
|
5
6
|
}) {
|
|
6
7
|
}
|
|
7
8
|
export class ConfigParseError extends Schema.TaggedErrorClass()("ConfigParseError", {
|
|
8
9
|
path: Schema.String,
|
|
9
|
-
reason: Schema.String
|
|
10
|
+
reason: Schema.String,
|
|
11
|
+
cause: Schema.optionalKey(Schema.Defect())
|
|
10
12
|
}) {
|
|
11
13
|
}
|
|
12
14
|
export class ConfigValidationError extends Schema.TaggedErrorClass()("ConfigValidationError", {
|
|
@@ -14,5 +16,4 @@ export class ConfigValidationError extends Schema.TaggedErrorClass()("ConfigVali
|
|
|
14
16
|
reason: Schema.String
|
|
15
17
|
}) {
|
|
16
18
|
}
|
|
17
|
-
export const formatUnknown = (cause) => cause instanceof Error ? cause.message : String(cause);
|
|
18
19
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,gBAAgB,EAAmB,CAAC,iBAAiB,EAAE;IACjG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,gBAAgB,EAAmB,CAAC,iBAAiB,EAAE;IACjG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CAC3C,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,gBAAgB,EAAoB,CAAC,kBAAkB,EAAE;IACpG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CAC3C,CAAC;CAAG;AAEL,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,gBAAgB,EAAyB,CAAC,uBAAuB,EAAE;IACnH,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGtF,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,kBAAkB,6HAmB7B,CAAA;AAEF,eAAO,MAAM,iBAAiB,gJAa5B,CAAA;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,aAAuB,CAAA"}
|
package/dist/config/load.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as FileSystem from "effect/FileSystem";
|
|
3
|
-
import { ConfigParseError, ConfigReadError, ConfigValidationError
|
|
3
|
+
import { ConfigParseError, ConfigReadError, ConfigValidationError } from "./errors.js";
|
|
4
4
|
import { decodeReleaseConfig, DEFAULT_CONFIG_PATH } from "./schema.js";
|
|
5
5
|
export const parseReleaseIntent = Effect.fn("parseReleaseIntent")(function* (input, path = DEFAULT_CONFIG_PATH) {
|
|
6
6
|
const parsed = yield* Effect.try({
|
|
7
7
|
try: () => JSON.parse(input),
|
|
8
8
|
catch: (cause) => ConfigParseError.make({
|
|
9
9
|
path,
|
|
10
|
-
reason:
|
|
10
|
+
reason: "Release config is not valid JSON.",
|
|
11
|
+
cause
|
|
11
12
|
})
|
|
12
13
|
});
|
|
13
14
|
return yield* decodeReleaseConfig(parsed).pipe(Effect.mapError((error) => ConfigValidationError.make({
|
|
@@ -19,7 +20,8 @@ export const loadReleaseIntent = Effect.fn("loadReleaseIntent")(function* (path
|
|
|
19
20
|
const fs = yield* FileSystem.FileSystem;
|
|
20
21
|
const contents = yield* fs.readFileString(path).pipe(Effect.mapError((error) => ConfigReadError.make({
|
|
21
22
|
path,
|
|
22
|
-
reason: error.message
|
|
23
|
+
reason: error.message,
|
|
24
|
+
cause: error
|
|
23
25
|
})));
|
|
24
26
|
return yield* parseReleaseIntent(contents, path);
|
|
25
27
|
});
|
package/dist/config/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAItE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAC,KAAa,EAAE,OAAe,mBAAmB;IAC3H,MAAM,MAAM,GAAY,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACxC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI;YACJ,MAAM,EAAE,mCAAmC;YAC3C,KAAK;SACN,CAAC;KACL,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,qBAAqB,CAAC,IAAI,CAAC;QACzB,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC,CACH,CACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAC,OAAe,mBAAmB;IAC1G,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,eAAe,CAAC,IAAI,CAAC;QACnB,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,KAAK,EAAE,KAAK;KACb,CAAC,CACH,CACF,CAAA;IAED,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAAiB,EAAE,CAAC,MAAM,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
2
|
export type * from "../types/effect-internal.js";
|
|
3
|
-
export declare const ArtifactId: Schema.
|
|
3
|
+
export declare const ArtifactId: Schema.NonEmptyString;
|
|
4
4
|
export type ArtifactId = typeof ArtifactId.Type;
|
|
5
5
|
export declare const ArtifactFormat: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
|
|
6
6
|
export type ArtifactFormat = typeof ArtifactFormat.Type;
|
|
@@ -13,7 +13,7 @@ declare const Checksum_base: Schema.Class<Checksum, Schema.Struct<{
|
|
|
13
13
|
export declare class Checksum extends Checksum_base {
|
|
14
14
|
}
|
|
15
15
|
declare const ArtifactIntent_base: Schema.Class<ArtifactIntent, Schema.Struct<{
|
|
16
|
-
readonly id: Schema.
|
|
16
|
+
readonly id: Schema.NonEmptyString;
|
|
17
17
|
readonly path: Schema.String;
|
|
18
18
|
readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
|
|
19
19
|
readonly consumers: Schema.$Array<Schema.String>;
|
|
@@ -22,7 +22,7 @@ declare const ArtifactIntent_base: Schema.Class<ArtifactIntent, Schema.Struct<{
|
|
|
22
22
|
export declare class ArtifactIntent extends ArtifactIntent_base {
|
|
23
23
|
}
|
|
24
24
|
declare const ArtifactInventoryItem_base: Schema.Class<ArtifactInventoryItem, Schema.Struct<{
|
|
25
|
-
readonly id: Schema.
|
|
25
|
+
readonly id: Schema.NonEmptyString;
|
|
26
26
|
readonly path: Schema.String;
|
|
27
27
|
readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
|
|
28
28
|
readonly consumers: Schema.$Array<Schema.String>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,uBAAwB,CAAA;AAC/C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,cAAc,gFAAwE,CAAA;AACnG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,iBAAiB,gDAAwC,CAAA;AACtE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;;;;;AAE7D,qBAAa,QAAS,SAAQ,aAG5B;CAAG;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAMlC;CAAG;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAOzC;CAAG;AAEL,eAAO,MAAM,mBAAmB,GAAI,MAAM,cAAc,EAAE,OAAO,cAAc,KAAG,MACjD,CAAA;AAEjC,eAAO,MAAM,sBAAsB,GACjC,MAAM,qBAAqB,EAC3B,OAAO,qBAAqB,KAC3B,MAAyC,CAAA"}
|
package/dist/domain/artifact.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
|
-
export const ArtifactId = Schema.
|
|
2
|
+
export const ArtifactId = Schema.NonEmptyString;
|
|
3
3
|
export const ArtifactFormat = Schema.Literals(["tarball", "zip", "file", "directory", "oci-image"]);
|
|
4
4
|
export const ChecksumAlgorithm = Schema.Literals(["sha256", "sha512"]);
|
|
5
5
|
export class Checksum extends Schema.Class("Checksum")({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAA;AAG/C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAGnG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGtE,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IAC/D,SAAS,EAAE,iBAAiB;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IACjF,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;CACvC,CAAC;CAAG;AAEL,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,KAAK,CAAwB,uBAAuB,CAAC,CAAC;IACtG,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;CACvC,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,KAAqB,EAAU,EAAE,CACzF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAEjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA2B,EAC3B,KAA4B,EACpB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
2
|
import { CommandSpec, HttpEnvHeader, HttpHeader } from "./operation.js";
|
|
3
3
|
export type * from "../types/effect-internal.js";
|
|
4
|
-
export declare const EvidenceId: Schema.
|
|
4
|
+
export declare const EvidenceId: Schema.NonEmptyString;
|
|
5
5
|
export type EvidenceId = typeof EvidenceId.Type;
|
|
6
6
|
export declare const EvidenceSeverity: Schema.Literals<readonly ["info", "warning", "error"]>;
|
|
7
7
|
export type EvidenceSeverity = typeof EvidenceSeverity.Type;
|
|
8
8
|
export declare const EvidenceStatus: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
|
|
9
9
|
export type EvidenceStatus = typeof EvidenceStatus.Type;
|
|
10
10
|
declare const CommandEvidence_base: Schema.Class<CommandEvidence, Schema.Struct<{
|
|
11
|
-
readonly id: Schema.
|
|
12
|
-
readonly operationId: Schema.
|
|
11
|
+
readonly id: Schema.NonEmptyString;
|
|
12
|
+
readonly operationId: Schema.NonEmptyString;
|
|
13
13
|
readonly operationFingerprint: Schema.String;
|
|
14
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
14
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
15
15
|
readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
|
|
16
16
|
readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
|
|
17
17
|
readonly command: typeof CommandSpec;
|
|
@@ -39,10 +39,10 @@ declare const HttpCheckEvidence_base: Schema.Class<HttpCheckEvidence, Schema.Str
|
|
|
39
39
|
export declare class HttpCheckEvidence extends HttpCheckEvidence_base {
|
|
40
40
|
}
|
|
41
41
|
declare const HttpEvidence_base: Schema.Class<HttpEvidence, Schema.Struct<{
|
|
42
|
-
readonly id: Schema.
|
|
43
|
-
readonly operationId: Schema.
|
|
42
|
+
readonly id: Schema.NonEmptyString;
|
|
43
|
+
readonly operationId: Schema.NonEmptyString;
|
|
44
44
|
readonly operationFingerprint: Schema.String;
|
|
45
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
45
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
46
46
|
readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
|
|
47
47
|
readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
|
|
48
48
|
readonly request: typeof HttpRequestEvidence;
|
|
@@ -56,9 +56,9 @@ declare const HttpEvidence_base: Schema.Class<HttpEvidence, Schema.Struct<{
|
|
|
56
56
|
export declare class HttpEvidence extends HttpEvidence_base {
|
|
57
57
|
}
|
|
58
58
|
declare const ValidationEvidence_base: Schema.Class<ValidationEvidence, Schema.Struct<{
|
|
59
|
-
readonly id: Schema.
|
|
59
|
+
readonly id: Schema.NonEmptyString;
|
|
60
60
|
readonly operationFingerprint: Schema.String;
|
|
61
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
61
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
62
62
|
readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
|
|
63
63
|
readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
|
|
64
64
|
readonly message: Schema.String;
|
|
@@ -68,10 +68,10 @@ declare const ValidationEvidence_base: Schema.Class<ValidationEvidence, Schema.S
|
|
|
68
68
|
export declare class ValidationEvidence extends ValidationEvidence_base {
|
|
69
69
|
}
|
|
70
70
|
declare const ExecutionEvidence_base: Schema.Class<ExecutionEvidence, Schema.Struct<{
|
|
71
|
-
readonly id: Schema.
|
|
72
|
-
readonly operationId: Schema.
|
|
71
|
+
readonly id: Schema.NonEmptyString;
|
|
72
|
+
readonly operationId: Schema.NonEmptyString;
|
|
73
73
|
readonly operationFingerprint: Schema.String;
|
|
74
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
74
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
75
75
|
readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
|
|
76
76
|
readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
|
|
77
77
|
readonly message: Schema.String;
|
|
@@ -83,8 +83,8 @@ export declare const EvidenceRecord: Schema.Union<readonly [typeof CommandEviden
|
|
|
83
83
|
export type EvidenceRecord = typeof EvidenceRecord.Type;
|
|
84
84
|
declare const EvidenceBundle_base: Schema.Class<EvidenceBundle, Schema.Struct<{
|
|
85
85
|
readonly schemaVersion: Schema.Literal<"release-evidence/v1">;
|
|
86
|
-
readonly releaseName: Schema.
|
|
87
|
-
readonly releaseVersion: Schema.
|
|
86
|
+
readonly releaseName: Schema.NonEmptyString;
|
|
87
|
+
readonly releaseVersion: Schema.NonEmptyString;
|
|
88
88
|
readonly records: Schema.$Array<Schema.Union<readonly [typeof CommandEvidence, typeof HttpEvidence, typeof ValidationEvidence, typeof ExecutionEvidence]>>;
|
|
89
89
|
}>, {}>;
|
|
90
90
|
export declare class EvidenceBundle extends EvidenceBundle_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAA;AAIhG,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,uBAAwB,CAAA;AAC/C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,gBAAgB,wDAAgD,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,cAAc,sEAA8D,CAAA;AACzF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;AAEvD,qBAAa,eAAgB,SAAQ,oBAcnC;CAAG;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAchC;CAAG;;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAStC;CAAG;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBASrC;CAAG;AAEL,eAAO,MAAM,cAAc,2HAAuF,CAAA;AAClH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;AAEvD,qBAAa,cAAe,SAAQ,mBAKlC;CAAG;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAK3C;CAAG;;;;;;;AAEL,qBAAa,8BAA+B,SAAQ,mCAOlD;CAAG"}
|
package/dist/domain/evidence.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
2
|
import { CommandSpec, HttpEnvHeader, HttpHeader, HttpMethod, OperationId } from "./operation.js";
|
|
3
|
+
import { ReleaseName, ReleaseVersion } from "./release.js";
|
|
3
4
|
import { TargetId } from "./target.js";
|
|
4
|
-
export const EvidenceId = Schema.
|
|
5
|
+
export const EvidenceId = Schema.NonEmptyString;
|
|
5
6
|
export const EvidenceSeverity = Schema.Literals(["info", "warning", "error"]);
|
|
6
7
|
export const EvidenceStatus = Schema.Literals(["passed", "failed", "skipped", "warning"]);
|
|
7
8
|
export class CommandEvidence extends Schema.Class("CommandEvidence")({
|
|
@@ -73,8 +74,8 @@ export class ExecutionEvidence extends Schema.Class("ExecutionEvidence")({
|
|
|
73
74
|
export const EvidenceRecord = Schema.Union([CommandEvidence, HttpEvidence, ValidationEvidence, ExecutionEvidence]);
|
|
74
75
|
export class EvidenceBundle extends Schema.Class("EvidenceBundle")({
|
|
75
76
|
schemaVersion: Schema.Literal("release-evidence/v1"),
|
|
76
|
-
releaseName:
|
|
77
|
-
releaseVersion:
|
|
77
|
+
releaseName: ReleaseName,
|
|
78
|
+
releaseVersion: ReleaseVersion,
|
|
78
79
|
records: Schema.Array(EvidenceRecord)
|
|
79
80
|
}) {
|
|
80
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Schema from "effect/Schema";
|
|
3
3
|
export type * from "../types/effect-internal.js";
|
|
4
|
-
export declare const OperationId: Schema.
|
|
4
|
+
export declare const OperationId: Schema.NonEmptyString;
|
|
5
5
|
export type OperationId = typeof OperationId.Type;
|
|
6
6
|
export declare const OperationRisk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
7
7
|
export type OperationRisk = typeof OperationRisk.Type;
|
|
@@ -64,8 +64,8 @@ export declare class HttpJsonArrayObjectFieldEqualsCheck extends HttpJsonArrayOb
|
|
|
64
64
|
export declare const HttpJsonCheck: Schema.Union<readonly [typeof HttpJsonEqualsCheck, typeof HttpJsonArrayObjectFieldEqualsCheck]>;
|
|
65
65
|
export type HttpJsonCheck = typeof HttpJsonCheck.Type;
|
|
66
66
|
declare const RenderFileOperation_base: Schema.Class<RenderFileOperation, Schema.TaggedStruct<"RenderFileOperation", {
|
|
67
|
-
readonly id: Schema.
|
|
68
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
67
|
+
readonly id: Schema.NonEmptyString;
|
|
68
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
69
69
|
readonly description: Schema.String;
|
|
70
70
|
readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
71
71
|
readonly gate: typeof ExecutionGate;
|
|
@@ -75,8 +75,8 @@ declare const RenderFileOperation_base: Schema.Class<RenderFileOperation, Schema
|
|
|
75
75
|
export declare class RenderFileOperation extends RenderFileOperation_base {
|
|
76
76
|
}
|
|
77
77
|
declare const ValidateCommandOperation_base: Schema.Class<ValidateCommandOperation, Schema.TaggedStruct<"ValidateCommandOperation", {
|
|
78
|
-
readonly id: Schema.
|
|
79
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
78
|
+
readonly id: Schema.NonEmptyString;
|
|
79
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
80
80
|
readonly description: Schema.String;
|
|
81
81
|
readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
82
82
|
readonly gate: typeof ExecutionGate;
|
|
@@ -85,8 +85,8 @@ declare const ValidateCommandOperation_base: Schema.Class<ValidateCommandOperati
|
|
|
85
85
|
export declare class ValidateCommandOperation extends ValidateCommandOperation_base {
|
|
86
86
|
}
|
|
87
87
|
declare const ValidationNoteOperation_base: Schema.Class<ValidationNoteOperation, Schema.TaggedStruct<"ValidationNoteOperation", {
|
|
88
|
-
readonly id: Schema.
|
|
89
|
-
readonly targetId: Schema.optionalKey<Schema.
|
|
88
|
+
readonly id: Schema.NonEmptyString;
|
|
89
|
+
readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
|
|
90
90
|
readonly description: Schema.String;
|
|
91
91
|
readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
92
92
|
readonly gate: typeof ExecutionGate;
|
|
@@ -97,8 +97,8 @@ declare const ValidationNoteOperation_base: Schema.Class<ValidationNoteOperation
|
|
|
97
97
|
export declare class ValidationNoteOperation extends ValidationNoteOperation_base {
|
|
98
98
|
}
|
|
99
99
|
declare const PublishCommandOperation_base: Schema.Class<PublishCommandOperation, Schema.TaggedStruct<"PublishCommandOperation", {
|
|
100
|
-
readonly id: Schema.
|
|
101
|
-
readonly targetId: Schema.
|
|
100
|
+
readonly id: Schema.NonEmptyString;
|
|
101
|
+
readonly targetId: Schema.NonEmptyString;
|
|
102
102
|
readonly description: Schema.String;
|
|
103
103
|
readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
104
104
|
readonly gate: typeof ExecutionGate;
|
|
@@ -107,8 +107,8 @@ declare const PublishCommandOperation_base: Schema.Class<PublishCommandOperation
|
|
|
107
107
|
export declare class PublishCommandOperation extends PublishCommandOperation_base {
|
|
108
108
|
}
|
|
109
109
|
declare const VerifyRemoteOperation_base: Schema.Class<VerifyRemoteOperation, Schema.TaggedStruct<"VerifyRemoteOperation", {
|
|
110
|
-
readonly id: Schema.
|
|
111
|
-
readonly targetId: Schema.
|
|
110
|
+
readonly id: Schema.NonEmptyString;
|
|
111
|
+
readonly targetId: Schema.NonEmptyString;
|
|
112
112
|
readonly description: Schema.String;
|
|
113
113
|
readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
114
114
|
readonly gate: typeof ExecutionGate;
|
|
@@ -117,8 +117,8 @@ declare const VerifyRemoteOperation_base: Schema.Class<VerifyRemoteOperation, Sc
|
|
|
117
117
|
export declare class VerifyRemoteOperation extends VerifyRemoteOperation_base {
|
|
118
118
|
}
|
|
119
119
|
declare const VerifyHttpOperation_base: Schema.Class<VerifyHttpOperation, Schema.TaggedStruct<"VerifyHttpOperation", {
|
|
120
|
-
readonly id: Schema.
|
|
121
|
-
readonly targetId: Schema.
|
|
120
|
+
readonly id: Schema.NonEmptyString;
|
|
121
|
+
readonly targetId: Schema.NonEmptyString;
|
|
122
122
|
readonly description: Schema.String;
|
|
123
123
|
readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
|
|
124
124
|
readonly gate: typeof ExecutionGate;
|
|
@@ -139,7 +139,7 @@ export declare class ExecutionApproval extends ExecutionApproval_base {
|
|
|
139
139
|
static readonly none: ExecutionApproval;
|
|
140
140
|
}
|
|
141
141
|
declare const ExecutionApprovalError_base: Schema.Class<ExecutionApprovalError, Schema.TaggedStruct<"ExecutionApprovalError", {
|
|
142
|
-
readonly operationId: Schema.
|
|
142
|
+
readonly operationId: Schema.NonEmptyString;
|
|
143
143
|
readonly reason: Schema.String;
|
|
144
144
|
}>, import("effect/Cause").YieldableError>;
|
|
145
145
|
export declare class ExecutionApprovalError extends ExecutionApprovalError_base {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/domain/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/domain/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,WAAW,uBAAwB,CAAA;AAChD,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD,eAAO,MAAM,aAAa,+FAAuF,CAAA;AACjH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;AAErD,qBAAa,aAAc,SAAQ,kBAIjC;CAAG;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAM/B;CAAG;AAEL,eAAO,MAAM,UAAU,2CAAmC,CAAA;AAC1D,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;;;;;AAE/C,qBAAa,UAAW,SAAQ,eAG9B;CAAG;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAIjC;CAAG;;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAOnC;CAAG;AAEL,eAAO,MAAM,eAAe,uDAA+C,CAAA;AAC3E,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;;;;;AAEzD,qBAAa,mBAAoB,SAAQ,wBAGvC;CAAG;;;;;;AAEL,qBAAa,mCAAoC,SAAQ,wCAOxD;CAAG;AAEJ,eAAO,MAAM,aAAa,iGAA2E,CAAA;AACrG,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;;;;;AAErD,qBAAa,mBAAoB,SAAQ,wBAQvC;CAAG;;;;;;;;;AAEL,qBAAa,wBAAyB,SAAQ,6BAO5C;CAAG;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAS3C;CAAG;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAO3C;CAAG;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAOzC;CAAG;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBASvC;CAAG;AAEL,eAAO,MAAM,SAAS,gNAOpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAsG7C,eAAO,MAAM,oBAAoB,GAAI,WAAW,SAAS,KAAG,MA+B3D,CAAA;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAGrC;IACA,MAAM,CAAC,QAAQ,CAAC,IAAI,oBAGlB;CACH;;;;;AAED,qBAAa,sBAAuB,SAAQ,2BAM3C;CAAG;AAEJ,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,aAK5C,CAAA;AAEJ,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,aAKzC,CAAA;AAEJ,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,aAK9C,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,EAAE,UAAU,iBAAiB,KAAG,OAevF,CAAA;AAED,eAAO,MAAM,wBAAwB,uPAmBnC,CAAA;AA8BF,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,EAAE,OAAO,SAAS,KAAG,MAKlC,CAAA"}
|
package/dist/domain/operation.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Schema from "effect/Schema";
|
|
3
3
|
import { TargetId } from "./target.js";
|
|
4
|
-
export const OperationId = Schema.
|
|
4
|
+
export const OperationId = Schema.NonEmptyString;
|
|
5
5
|
export const OperationRisk = Schema.Literals(["read-only", "writes-local", "externally-visible", "irreversible"]);
|
|
6
6
|
export class ExecutionGate extends Schema.Class("ExecutionGate")({
|
|
7
7
|
requiresExecute: Schema.Boolean,
|