@mannyc1/ts-release 0.0.2 → 0.0.3
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 +54 -14
- package/README.md +163 -73
- package/SPEC.md +38 -8
- package/dist/config/schema.d.ts +4 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +13 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/domain/evidence.d.ts +4 -0
- package/dist/domain/evidence.d.ts.map +1 -1
- package/dist/domain/evidence.js +4 -0
- package/dist/domain/evidence.js.map +1 -1
- package/dist/domain/operation.d.ts +1 -0
- package/dist/domain/operation.d.ts.map +1 -1
- package/dist/domain/operation.js +116 -0
- package/dist/domain/operation.js.map +1 -1
- package/dist/domain/release.d.ts +1 -0
- package/dist/domain/release.d.ts.map +1 -1
- package/dist/domain/release.js +1 -0
- package/dist/domain/release.js.map +1 -1
- package/dist/host/http-live.d.ts.map +1 -1
- package/dist/host/http-live.js +3 -0
- package/dist/host/http-live.js.map +1 -1
- package/dist/host/http.d.ts +3 -1
- package/dist/host/http.d.ts.map +1 -1
- package/dist/host/http.js +3 -1
- package/dist/host/http.js.map +1 -1
- package/dist/host/test.d.ts +1 -0
- package/dist/host/test.d.ts.map +1 -1
- package/dist/host/test.js +24 -7
- package/dist/host/test.js.map +1 -1
- package/dist/internal/workspace-path.d.ts +16 -0
- package/dist/internal/workspace-path.d.ts.map +1 -0
- package/dist/internal/workspace-path.js +33 -0
- package/dist/internal/workspace-path.js.map +1 -0
- package/dist/planner/artifact-inventory.d.ts.map +1 -1
- package/dist/planner/artifact-inventory.js +22 -3
- package/dist/planner/artifact-inventory.js.map +1 -1
- package/dist/planner/create-release-plan.d.ts +1 -1
- package/dist/planner/evidence-recorder.d.ts.map +1 -1
- package/dist/planner/evidence-recorder.js +22 -4
- package/dist/planner/evidence-recorder.js.map +1 -1
- package/dist/planner/executor.d.ts +4 -4
- package/dist/planner/executor.d.ts.map +1 -1
- package/dist/planner/executor.js +36 -4
- package/dist/planner/executor.js.map +1 -1
- package/dist/planner/normalize-release.d.ts.map +1 -1
- package/dist/planner/normalize-release.js +11 -10
- package/dist/planner/normalize-release.js.map +1 -1
- package/dist/planner/reconcile.d.ts +1 -1
- package/dist/planner/reconcile.d.ts.map +1 -1
- package/dist/planner/reconcile.js +72 -15
- package/dist/planner/reconcile.js.map +1 -1
- package/dist/planner/release-eligibility.d.ts +4 -3
- package/dist/planner/release-eligibility.d.ts.map +1 -1
- package/dist/planner/release-eligibility.js +9 -2
- package/dist/planner/release-eligibility.js.map +1 -1
- package/dist/planner/render-plan.d.ts +10 -0
- package/dist/planner/render-plan.d.ts.map +1 -1
- package/dist/planner/render-plan.js +158 -0
- package/dist/planner/render-plan.js.map +1 -1
- package/dist/planner/status.d.ts +1 -1
- package/dist/planner/status.d.ts.map +1 -1
- package/dist/planner/status.js +8 -2
- package/dist/planner/status.js.map +1 -1
- package/dist/targets/github.d.ts.map +1 -1
- package/dist/targets/github.js +11 -0
- package/dist/targets/github.js.map +1 -1
- package/dist/workflows/config.d.ts +89 -17
- package/dist/workflows/config.d.ts.map +1 -1
- package/dist/workflows/config.js +131 -21
- package/dist/workflows/config.js.map +1 -1
- package/dist/workflows/diagnostics.d.ts +62 -0
- package/dist/workflows/diagnostics.d.ts.map +1 -0
- package/dist/workflows/diagnostics.js +474 -0
- package/dist/workflows/diagnostics.js.map +1 -0
- package/dist/workflows/index.d.ts +7 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +6 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/init.d.ts +71 -0
- package/dist/workflows/init.d.ts.map +1 -0
- package/dist/workflows/init.js +384 -0
- package/dist/workflows/init.js.map +1 -0
- package/dist/workflows/live.d.ts +2 -0
- package/dist/workflows/live.d.ts.map +1 -1
- package/dist/workflows/live.js +2 -0
- package/dist/workflows/live.js.map +1 -1
- package/dist/workflows/options.d.ts +30 -0
- package/dist/workflows/options.d.ts.map +1 -0
- package/dist/workflows/options.js +16 -0
- package/dist/workflows/options.js.map +1 -0
- package/examples/README.md +16 -12
- package/examples/github-release/release.config.json +1 -0
- package/examples/homebrew-tap/release.config.json +1 -0
- package/examples/multi-target/release.config.json +5 -1
- package/examples/non-strict-skips/release.config.json +1 -0
- package/examples/npm-first-publish/release.config.json +1 -0
- package/examples/npm-only/release.config.json +5 -1
- package/examples/pypi-registry/release.config.json +1 -0
- package/examples/scoop-bucket/release.config.json +1 -0
- package/package.json +31 -24
- package/templates/README.md +54 -0
- package/templates/github-actions/plan-and-approved-execute.yml +53 -0
- package/templates/github-actions/plan-only.yml +30 -0
- package/templates/github-actions/trusted-publishing.yml +59 -0
- package/templates/multi-target-homebrew/release.config.json +70 -0
- package/templates/multi-target-scoop/release.config.json +72 -0
- package/templates/npm-github/release.config.json +50 -0
- package/templates/npm-only/release.config.json +39 -0
- package/dist/cli/command.d.ts +0 -4
- package/dist/cli/command.d.ts.map +0 -1
- package/dist/cli/command.js +0 -173
- package/dist/cli/command.js.map +0 -1
- package/dist/cli/main.d.ts +0 -3
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -9
- package/dist/cli/main.js.map +0 -1
- package/dist/runtime/bun.d.ts +0 -9
- package/dist/runtime/bun.d.ts.map +0 -1
- package/dist/runtime/bun.js +0 -10
- package/dist/runtime/bun.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
package/ARCHITECTURE.md
CHANGED
|
@@ -2,19 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
`@mannyc1/ts-release` is library-first and CLI-second.
|
|
4
4
|
|
|
5
|
-
The package turns release intent into typed data, plans, evidence, and approved operations. The CLI
|
|
5
|
+
The package turns release intent into typed data, plans, evidence, and approved operations. The CLI and GitHub Action are adapters over those workflows.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Target Boundary
|
|
8
|
+
|
|
9
|
+
The intended repository shape separates reusable library code from the
|
|
10
|
+
first-party release application:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
src/ reusable TypeScript release library
|
|
14
|
+
apps/release-ts/ official CLI app, Bun runtime shell, and self-release dogfood
|
|
15
|
+
apps/ts-release-action/
|
|
16
|
+
official JavaScript action app and Node runtime shell
|
|
17
|
+
scripts/ repo-wide maintenance gates only
|
|
18
|
+
examples/ reusable release config examples
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`src/` contains generic library code only. It may require platform services
|
|
22
|
+
such as `FileSystem`, `Path`, `ReleaseCommandRunner`, `ReleaseHttp`, or
|
|
23
|
+
`HttpClient`, but it must not provide the concrete Bun runtime for the official
|
|
24
|
+
CLI.
|
|
25
|
+
|
|
26
|
+
`apps/release-ts/` owns argv parsing, terminal output, Bun runtime assembly,
|
|
27
|
+
standalone CLI compilation, and self-release policy/config. A module consumed
|
|
28
|
+
only by the official CLI or self-release dogfood belongs in `apps/release-ts/`
|
|
29
|
+
unless it is made generic and documented as public library API.
|
|
30
|
+
|
|
31
|
+
`apps/ts-release-action/` owns GitHub Action input parsing, GitHub step-summary
|
|
32
|
+
and output adapters, evidence artifact upload, and the Node runtime assembly
|
|
33
|
+
used by the bundled action. Action code should call public workflow APIs rather
|
|
34
|
+
than reaching into CLI modules.
|
|
35
|
+
|
|
36
|
+
## Current Module Taxonomy
|
|
8
37
|
|
|
9
38
|
- `domain/` contains durable schema-backed data models and errors.
|
|
10
39
|
- `config/` parses and validates release config into domain values.
|
|
11
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.
|
|
12
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.
|
|
13
42
|
- `host/` defines injectable command and HTTP services plus live or test implementations.
|
|
14
|
-
- `workflows/` contains reusable application workflows over config files, evidence files, and live target/HTTP composition. This is the high-level programmatic surface.
|
|
15
|
-
- `runtime/` contains
|
|
16
|
-
- `cli/` parses command-line flags, calls workflows, prints terminal output, and writes user-requested CLI output files.
|
|
17
|
-
- `
|
|
43
|
+
- `workflows/` contains reusable application workflows over config files, init/scaffolding plans, diagnostics, evidence files, and live target/HTTP composition. This is the high-level programmatic surface.
|
|
44
|
+
- `apps/release-ts/src/runtime/` contains the Bun runtime shell for the official CLI app.
|
|
45
|
+
- `apps/release-ts/src/cli/` parses command-line flags, calls workflows, prints terminal output, and writes user-requested CLI output files.
|
|
46
|
+
- `apps/ts-release-action/src/runtime/` contains the Node runtime shell for the bundled GitHub Action.
|
|
47
|
+
- `apps/ts-release-action/src/` adapts GitHub Action inputs, outputs, step summaries, and artifact uploads to workflow calls.
|
|
48
|
+
- `scripts/` contains repository maintenance checks. Scripts may use app runtime layers, but they are not package library code.
|
|
18
49
|
|
|
19
50
|
## Dependency Direction
|
|
20
51
|
|
|
@@ -27,27 +58,36 @@ domain <- config
|
|
|
27
58
|
domain <- planner <- targets
|
|
28
59
|
domain <- host
|
|
29
60
|
workflows -> config/planner/host/targets
|
|
30
|
-
runtime -> host/workflows/platform layers
|
|
31
|
-
cli -> workflows/runtime boundary
|
|
61
|
+
apps/release-ts runtime -> host/workflows/platform layers
|
|
62
|
+
apps/release-ts cli -> workflows/runtime boundary
|
|
63
|
+
apps/ts-release-action runtime -> host/workflows/platform layers
|
|
64
|
+
apps/ts-release-action action -> workflows/runtime boundary
|
|
32
65
|
```
|
|
33
66
|
|
|
34
|
-
`src/index.ts` intentionally stays empty. Public API is the explicit subpath list in `package.json`, checked by `scripts/check-package-exports.ts` and `scripts/check-tree-shaking.ts`.
|
|
67
|
+
`src/index.ts` intentionally stays empty. Public API is the explicit subpath list in `package.json`, checked by `scripts/check-package-exports.ts` and `scripts/check-tree-shaking.ts`. The only workflow aggregate is the opt-in `./workflows` facade.
|
|
35
68
|
|
|
36
69
|
## Public Workflow Surface
|
|
37
70
|
|
|
38
|
-
There is no public `./api` facade. The public workflow modules are named after the work they own:
|
|
71
|
+
There is no public `./api` facade, and the root package export stays empty. The public workflow modules are named after the work they own:
|
|
39
72
|
|
|
73
|
+
- `./workflows` for the curated opt-in `Config`, `Init`, `Diagnostics`, `Evidence`, and `Live` namespaces.
|
|
40
74
|
- `./workflows/config` for config-file release workflows.
|
|
75
|
+
- `./workflows/init` for data-first scaffolding previews and approved writes.
|
|
76
|
+
- `./workflows/diagnostics` for static config, auth, and CI readiness reports.
|
|
41
77
|
- `./workflows/evidence` for reusable evidence persistence.
|
|
42
78
|
- `./workflows/live` for runtime-neutral live target and HTTP services.
|
|
43
|
-
- `./runtime/bun` for the Bun runtime composition.
|
|
44
79
|
|
|
45
|
-
Use lower-level `domain/`, `config/`, `planner/`, `host/`, and `targets/` subpaths when a caller needs more control than the workflow modules provide.
|
|
80
|
+
The `./workflows` facade lives at `src/workflows/index.ts` and should only re-export workflow namespaces. Use exact workflow leaf imports for maximum tree-shaking or direct option-class access, and lower-level `domain/`, `config/`, `planner/`, `host/`, and `targets/` subpaths when a caller needs more control than the workflow modules provide.
|
|
46
81
|
|
|
47
82
|
## Boundary Rules
|
|
48
83
|
|
|
49
84
|
- Publish operations are data until execution is explicitly approved.
|
|
50
85
|
- `Effect.run*` belongs at true runtime boundaries.
|
|
51
|
-
-
|
|
86
|
+
- Reusable effectful operations use `Effect.fn`; inline orchestration bodies use `Effect.gen`.
|
|
87
|
+
- Durable models, options, target variants, and typed errors use `Schema.Class`, `Schema.TaggedClass`, and `Schema.TaggedErrorClass`.
|
|
88
|
+
- Layers are provided at CLI, action, runtime, script, application, and test boundaries.
|
|
52
89
|
- Config parsing, evidence persistence, status, resume, reconciliation, and release execution are library workflows, not CLI behavior.
|
|
53
|
-
- Terminal formatting, argv parsing, and `--out` file writing belong in
|
|
90
|
+
- Terminal formatting, argv parsing, and `--out` file writing belong in
|
|
91
|
+
`apps/release-ts/src/cli/`.
|
|
92
|
+
- GitHub Action input parsing, output names, step summaries, and evidence artifact
|
|
93
|
+
uploads belong in `apps/ts-release-action/src/`.
|
package/README.md
CHANGED
|
@@ -2,20 +2,55 @@
|
|
|
2
2
|
|
|
3
3
|
`@mannyc1/ts-release` turns release intent into explicit, inspectable, repeatable publishing operations.
|
|
4
4
|
|
|
5
|
+
The root package is the reusable TypeScript release library. The official Bun
|
|
6
|
+
CLI app lives in `apps/release-ts`, and the root `cli` script delegates to that
|
|
7
|
+
private first-party app.
|
|
8
|
+
|
|
5
9
|
The default workflow is plan-first:
|
|
6
10
|
|
|
7
11
|
```sh
|
|
12
|
+
bun run cli validate-config --config release.config.json
|
|
8
13
|
bun run cli plan --config release.config.json --format text
|
|
9
14
|
bun run cli run --config release.config.json --execute --approve-irreversible
|
|
10
15
|
```
|
|
11
16
|
|
|
17
|
+
On GitHub Actions, the primary CI integration is the JavaScript action:
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
- uses: mannyc2/ts-release-action@v1
|
|
21
|
+
with:
|
|
22
|
+
command: plan
|
|
23
|
+
config: release.config.json
|
|
24
|
+
format: markdown
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The action calls the TypeScript workflow APIs directly and keeps target-native
|
|
28
|
+
operations visible in the plan. It defaults to `runtime: bundled`; workspace
|
|
29
|
+
runtime mode is deferred until a same-module-graph Node platform setup can be
|
|
30
|
+
required without surprising users. The source currently lives in
|
|
31
|
+
`apps/ts-release-action`.
|
|
32
|
+
|
|
33
|
+
The action supports the review commands `plan`, `validate-config`, `status`,
|
|
34
|
+
`doctor`, `check-auth`, and `check-ci`, plus the approved workflow commands
|
|
35
|
+
`validate`, `run`, `resume`, and `reconcile`. Use `upload-evidence: true` when
|
|
36
|
+
an action job should publish collected `.release/evidence` JSON files even after
|
|
37
|
+
a command fails.
|
|
38
|
+
|
|
12
39
|
The `run` command is the recommended release path: it renders generated files,
|
|
13
40
|
validates every preflight, executes approved publish operations, and verifies
|
|
14
41
|
remote state in order. The primitive commands remain available for review and
|
|
15
42
|
debug flows:
|
|
16
43
|
|
|
17
44
|
```sh
|
|
45
|
+
bun run cli schema --out release-config.schema.json
|
|
46
|
+
bun run cli init --template npm-github --package @scope/pkg --repo owner/repo
|
|
47
|
+
bun run cli validate-config --config release.config.json --format text
|
|
18
48
|
bun run cli plan --config release.config.json --format text
|
|
49
|
+
bun run cli plan --config release.config.json --format summary
|
|
50
|
+
bun run cli explain npm:npm-publish --config release.config.json
|
|
51
|
+
bun run cli doctor --config release.config.json --format text
|
|
52
|
+
bun run cli check-auth --config release.config.json --target npm --format text
|
|
53
|
+
bun run cli check-ci --config release.config.json --workflow .github/workflows/release.yml --format markdown
|
|
19
54
|
bun run cli render --config release.config.json --execute
|
|
20
55
|
bun run cli validate --config release.config.json
|
|
21
56
|
bun run cli print --config release.config.json
|
|
@@ -42,129 +77,109 @@ The executable is an argv and console adapter over TypeScript workflows. Release
|
|
|
42
77
|
|
|
43
78
|
## Imports
|
|
44
79
|
|
|
45
|
-
The package
|
|
80
|
+
The package root export is intentionally empty. For onboarding and application workflow code, import the opt-in workflow facade from `@mannyc1/ts-release/workflows`; for maximum tree-shaking or target-author control, import the exact module you need from an explicit subpath.
|
|
46
81
|
|
|
47
82
|
```ts
|
|
48
83
|
import * as Effect from "effect/Effect"
|
|
49
84
|
import { type ReleaseIntent } from "@mannyc1/ts-release/domain/release"
|
|
50
85
|
import { createReleasePlan } from "@mannyc1/ts-release/planner/create-release-plan"
|
|
51
86
|
import { validatePlan } from "@mannyc1/ts-release/planner/executor"
|
|
52
|
-
import { makeBunReleaseWorkflowRuntimeLayer } from "@mannyc1/ts-release/runtime/bun"
|
|
53
87
|
|
|
54
|
-
const planAndValidate = (intent: ReleaseIntent)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}).pipe(
|
|
60
|
-
Effect.provide(makeBunReleaseWorkflowRuntimeLayer())
|
|
61
|
-
)
|
|
88
|
+
export const planAndValidate = Effect.fn("docs.planAndValidate")(function*(intent: ReleaseIntent) {
|
|
89
|
+
const plan = yield* createReleasePlan(intent)
|
|
90
|
+
const evidence = yield* validatePlan(plan)
|
|
91
|
+
return { plan, evidence }
|
|
92
|
+
})
|
|
62
93
|
```
|
|
63
94
|
|
|
64
|
-
`createReleasePlan` needs a `TargetRegistry` layer. Command execution needs a `ReleaseCommandRunner` layer, while artifact checks and checksum generation use Effect Platform `FileSystem`, `Path`, and `Crypto` services directly. High-level config-file workflows, render writes, and evidence writes also need Effect Platform `FileSystem` and `Path` services. Workflows that verify HTTP evidence, such as `verifyPlan`, `runApprovedReleaseWorkflow`, or direct `VerifyHttpOperation` execution, also need a `ReleaseHttp` layer.
|
|
95
|
+
`createReleasePlan` needs a `TargetRegistry` layer. Command execution needs a `ReleaseCommandRunner` layer, while artifact checks and checksum generation use Effect Platform `FileSystem`, `Path`, and `Crypto` services directly. High-level config-file workflows, render writes, and evidence writes also need Effect Platform `FileSystem` and `Path` services. Workflows that verify HTTP evidence, such as `verifyPlan`, `runApprovedReleaseWorkflow`, or direct `VerifyHttpOperation` execution, also need a `ReleaseHttp` layer. Applications can compose `@mannyc1/ts-release/workflows` and their platform services at the edge, or use exact lower-level imports from `@mannyc1/ts-release/workflows/live`, `@mannyc1/ts-release/host/platform`, and `@mannyc1/ts-release/host/http`. Tests can import `makeTestReleaseHttpLayer` from `@mannyc1/ts-release/host/http`. Internal Effect imports use deep module paths such as `effect/Effect` and `effect/Layer` to keep bundlers from depending on broad root-package analysis. See `ARCHITECTURE.md` for the module taxonomy.
|
|
96
|
+
|
|
97
|
+
Reusable operations in docs and examples should use `Effect.fn`; workflow bodies use `Effect.gen`. Durable data, options, tagged target variants, and typed errors use `Schema.Class`, `Schema.TaggedClass`, and `Schema.TaggedErrorClass`, with `.make(...)` for construction. Runtime layers are provided once at CLI, action, script, application, or test boundaries.
|
|
65
98
|
|
|
66
99
|
## TypeScript Workflows
|
|
67
100
|
|
|
68
101
|
Applications can call high-level release workflows without argv arrays or CLI command names:
|
|
69
102
|
|
|
70
103
|
```ts
|
|
104
|
+
import * as BunHttpClient from "@effect/platform-bun/BunHttpClient"
|
|
105
|
+
import * as BunServices from "@effect/platform-bun/BunServices"
|
|
71
106
|
import * as Effect from "effect/Effect"
|
|
72
|
-
import
|
|
73
|
-
import {
|
|
74
|
-
PlanReleaseConfigOptions,
|
|
75
|
-
ReleaseExecutionOptions,
|
|
76
|
-
ReleaseEligibilityConfigOptions,
|
|
77
|
-
ReleaseReconcileConfigOptions,
|
|
78
|
-
ReleaseResumeConfigOptions,
|
|
79
|
-
ReleaseStatusOptions,
|
|
80
|
-
checkReleaseConfigEligibility,
|
|
81
|
-
reconcileReleaseConfig,
|
|
82
|
-
planReleaseConfig,
|
|
83
|
-
renderReleaseConfigPlan,
|
|
84
|
-
resumeReleaseConfig,
|
|
85
|
-
runReleaseConfig,
|
|
86
|
-
statusReleaseConfig
|
|
87
|
-
} from "@mannyc1/ts-release/workflows/config"
|
|
107
|
+
import * as Layer from "effect/Layer"
|
|
108
|
+
import { Config, Live } from "@mannyc1/ts-release/workflows"
|
|
88
109
|
|
|
89
110
|
const root = "/path/to/release-workspace"
|
|
90
|
-
const RuntimeLayer =
|
|
111
|
+
const RuntimeLayer = Live.makeLayer({ root }).pipe(
|
|
112
|
+
Layer.provideMerge(BunServices.layer),
|
|
113
|
+
Layer.provideMerge(BunHttpClient.layer)
|
|
114
|
+
)
|
|
91
115
|
|
|
92
116
|
const textPlan = await Effect.runPromise(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
)
|
|
117
|
+
Config.renderPlan({ root, configPath: "release.config.json", format: "text" }).pipe(
|
|
118
|
+
Effect.provide(RuntimeLayer)
|
|
119
|
+
)
|
|
96
120
|
)
|
|
97
121
|
|
|
98
122
|
const plan = await Effect.runPromise(
|
|
99
|
-
|
|
123
|
+
Config.plan({ root, configPath: "release.config.json" }).pipe(
|
|
100
124
|
Effect.provide(RuntimeLayer)
|
|
101
125
|
)
|
|
102
126
|
)
|
|
103
127
|
|
|
104
128
|
const evidence = await Effect.runPromise(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
})
|
|
112
|
-
).pipe(
|
|
129
|
+
Config.run({
|
|
130
|
+
root,
|
|
131
|
+
configPath: "release.config.json",
|
|
132
|
+
execute: true,
|
|
133
|
+
approveIrreversible: true
|
|
134
|
+
}).pipe(
|
|
113
135
|
Effect.provide(RuntimeLayer)
|
|
114
136
|
)
|
|
115
137
|
)
|
|
116
138
|
|
|
117
139
|
const status = await Effect.runPromise(
|
|
118
|
-
|
|
119
|
-
ReleaseStatusOptions.make({ root, configPath: "release.config.json", format: "json" })
|
|
120
|
-
).pipe(
|
|
140
|
+
Config.status({ root, configPath: "release.config.json", format: "json" }).pipe(
|
|
121
141
|
Effect.provide(RuntimeLayer)
|
|
122
142
|
)
|
|
123
143
|
)
|
|
124
144
|
|
|
125
145
|
const resumedEvidence = await Effect.runPromise(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
})
|
|
133
|
-
).pipe(
|
|
146
|
+
Config.resume({
|
|
147
|
+
root,
|
|
148
|
+
configPath: "release.config.json",
|
|
149
|
+
execute: true,
|
|
150
|
+
approveIrreversible: true
|
|
151
|
+
}).pipe(
|
|
134
152
|
Effect.provide(RuntimeLayer)
|
|
135
153
|
)
|
|
136
154
|
)
|
|
137
155
|
|
|
138
156
|
const eligibility = await Effect.runPromise(
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
})
|
|
144
|
-
).pipe(
|
|
157
|
+
Config.checkEligibility({
|
|
158
|
+
root,
|
|
159
|
+
configPath: "release.config.json"
|
|
160
|
+
}).pipe(
|
|
145
161
|
Effect.provide(RuntimeLayer)
|
|
146
162
|
)
|
|
147
163
|
)
|
|
148
164
|
|
|
149
165
|
const reconciliationEvidence = await Effect.runPromise(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
})
|
|
156
|
-
).pipe(
|
|
166
|
+
Config.reconcile({
|
|
167
|
+
root,
|
|
168
|
+
configPath: "release.config.json",
|
|
169
|
+
execute: true
|
|
170
|
+
}).pipe(
|
|
157
171
|
Effect.provide(RuntimeLayer)
|
|
158
172
|
)
|
|
159
173
|
)
|
|
160
174
|
```
|
|
161
175
|
|
|
162
|
-
Use `@mannyc1/ts-release/workflows
|
|
176
|
+
Use `@mannyc1/ts-release/workflows` for the curated `Config`, `Init`, `Diagnostics`, `Evidence`, and `Live` namespaces. Exact leaf imports such as `@mannyc1/ts-release/workflows/config`, `@mannyc1/ts-release/workflows/init`, `@mannyc1/ts-release/workflows/diagnostics`, `@mannyc1/ts-release/workflows/evidence`, and `@mannyc1/ts-release/workflows/live` remain stable and are preferred when an application needs maximum tree-shaking or direct access to option classes. Applications provide platform services at the edge, such as `FileSystem`, `Path`, `HttpClient`, and command execution. Use explicit lower-level planner, config, target, host, and domain subpaths when an application needs finer control over planning, execution, or test layers.
|
|
163
177
|
|
|
164
178
|
## Example Config
|
|
165
179
|
|
|
166
180
|
```json
|
|
167
181
|
{
|
|
182
|
+
"$schema": "https://mannyc2.github.io/ts-release/schema/release-config.schema.json",
|
|
168
183
|
"identity": {
|
|
169
184
|
"name": "@mannyc1/ts-release",
|
|
170
185
|
"version": "0.1.0",
|
|
@@ -200,6 +215,7 @@ Use `@mannyc1/ts-release/workflows/config` for high-level config-file workflows,
|
|
|
200
215
|
"verifyPackageExists": true
|
|
201
216
|
},
|
|
202
217
|
"access": "public",
|
|
218
|
+
"provenance": true,
|
|
203
219
|
"dryRunSupport": "native",
|
|
204
220
|
"mutability": "immutable",
|
|
205
221
|
"recovery": "publish-new-version"
|
|
@@ -220,6 +236,8 @@ Use `@mannyc1/ts-release/workflows/config` for high-level config-file workflows,
|
|
|
220
236
|
}
|
|
221
237
|
```
|
|
222
238
|
|
|
239
|
+
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
|
+
|
|
223
241
|
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.
|
|
224
242
|
|
|
225
243
|
Homebrew tap targets model catalog updates as generated files plus an approval-gated push:
|
|
@@ -296,6 +314,24 @@ targets:
|
|
|
296
314
|
- npm [NpmRegistryTarget] auth=trusted-publishing runs-in=ci provider=github-actions workflow=release.yml required-permission=id-token:write package-prerequisite=exists dry-run=native strategy=native-command mutability=immutable recovery=publish-new-version
|
|
297
315
|
```
|
|
298
316
|
|
|
317
|
+
Summary plans provide a compact human first pass over risk, execution gates, target auth setup, and gated operation IDs:
|
|
318
|
+
|
|
319
|
+
```sh
|
|
320
|
+
bun run cli plan --config release.config.json --format summary
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Markdown plans are intended for CI artifacts and PR review:
|
|
324
|
+
|
|
325
|
+
```sh
|
|
326
|
+
bun run cli plan --config release.config.json --format markdown > release-plan.md
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Use `explain` when one operation needs a focused review without executing anything:
|
|
330
|
+
|
|
331
|
+
```sh
|
|
332
|
+
bun run cli explain npm:npm-publish --config release.config.json
|
|
333
|
+
```
|
|
334
|
+
|
|
299
335
|
JSON plans include the same data in a stable, CI-artifact-friendly shape, including `targetCapabilities`.
|
|
300
336
|
|
|
301
337
|
GitHub release verification uses the GitHub REST API to check the release tag, title, draft flag, prerelease flag, and each uploaded artifact name.
|
|
@@ -310,10 +346,40 @@ GitHub release verification uses the GitHub REST API to check the release tag, t
|
|
|
310
346
|
|
|
311
347
|
## Public API
|
|
312
348
|
|
|
313
|
-
The intentional public API is the explicit subpath list in `package.json`. The
|
|
349
|
+
The intentional public API is the explicit subpath list in `package.json`. The root package export remains empty. Programmatic callers can use the opt-in `@mannyc1/ts-release/workflows` facade for happy-path workflow APIs, or exact leaf subpaths such as `@mannyc1/ts-release/workflows/config`, `@mannyc1/ts-release/workflows/init`, and `@mannyc1/ts-release/workflows/diagnostics` for maximum tree-shaking and direct option-class access. Lower-level planner/config/target/status subpaths remain available for finer control. The official CLI command adapter lives in the private `apps/release-ts` app rather than the reusable root package API.
|
|
314
350
|
|
|
315
351
|
The package export checker fails if a new export is added without being added to the intentional API list.
|
|
316
352
|
|
|
353
|
+
## Templates
|
|
354
|
+
|
|
355
|
+
Copyable starter configs live in `templates/`. They are authoring starting
|
|
356
|
+
points with placeholder package, repository, tap, and bucket names. Runnable
|
|
357
|
+
fixtures live in `examples/`.
|
|
358
|
+
|
|
359
|
+
Config templates are intentionally narrow:
|
|
360
|
+
|
|
361
|
+
- `npm-only` for an existing npm package using GitHub Actions trusted publishing.
|
|
362
|
+
- `npm-github` for npm plus GitHub Releases.
|
|
363
|
+
- `multi-target-homebrew` for npm, GitHub Releases, and a Homebrew tap.
|
|
364
|
+
- `multi-target-scoop` for npm, GitHub Releases, and a Scoop bucket.
|
|
365
|
+
|
|
366
|
+
```sh
|
|
367
|
+
bun run cli init --template npm-github --package @scope/pkg --repo owner/repo
|
|
368
|
+
bun run cli init --template npm-github --package @scope/pkg --repo owner/repo --write
|
|
369
|
+
bun run cli plan --config release.config.json --format text
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
The npm templates enable provenance and set `verifyPackageExists: true`, which
|
|
373
|
+
adds a read-only `npm view <package>` validation before trusted publishing.
|
|
374
|
+
Add `--github-actions` to include the action-first trusted-publishing workflow
|
|
375
|
+
template in the preview or write set. Existing files are not overwritten unless
|
|
376
|
+
`--overwrite` is also passed.
|
|
377
|
+
|
|
378
|
+
Action-first GitHub templates live under `templates/github-actions/`.
|
|
379
|
+
|
|
380
|
+
Use `doctor`, `check-auth`, and `check-ci` after writing a template to inspect
|
|
381
|
+
static readiness before any publish operation is approved.
|
|
382
|
+
|
|
317
383
|
## Examples
|
|
318
384
|
|
|
319
385
|
Runnable example configs live in `examples/`:
|
|
@@ -327,14 +393,18 @@ Runnable example configs live in `examples/`:
|
|
|
327
393
|
- `examples/scoop-bucket`
|
|
328
394
|
- `examples/non-strict-skips`
|
|
329
395
|
|
|
330
|
-
`examples/multi-target` demonstrates one release coordinated across
|
|
396
|
+
`examples/multi-target` demonstrates one release coordinated across GitHub Releases, npm, and a Homebrew tap. The focused fixtures cover PyPI, Scoop, npm-only trusted publishing, token-based first npm publish, GitHub-only releases, and non-strict skipped validators. Build the package first, then plan an example from its directory:
|
|
331
397
|
|
|
332
398
|
```sh
|
|
333
399
|
bun run build
|
|
334
400
|
cd examples/multi-target
|
|
335
|
-
bun ../../
|
|
401
|
+
bun ../../apps/release-ts/src/cli/main.ts plan --config release.config.json --format text
|
|
336
402
|
```
|
|
337
403
|
|
|
404
|
+
Trusted-publishing npm examples use provenance and `verifyPackageExists`. The
|
|
405
|
+
`npm-first-publish` example intentionally stays token-based because npm trusted
|
|
406
|
+
publishing can only be configured after the package already exists.
|
|
407
|
+
|
|
338
408
|
## Evidence
|
|
339
409
|
|
|
340
410
|
Render, validation, execution, and verification evidence is written as JSON bundles. Failed commands still preserve partial evidence before the command failure is returned. Use `evidenceDirectory` such as `.release/evidence/{version}` when older local evidence should not collide with the current release version.
|
|
@@ -348,6 +418,7 @@ Render, validation, execution, and verification evidence is written as JSON bund
|
|
|
348
418
|
{
|
|
349
419
|
"id": "npm:npm-pack-dry-run:command",
|
|
350
420
|
"operationId": "npm:npm-pack-dry-run",
|
|
421
|
+
"operationFingerprint": "{\"_tag\":\"ValidateCommandOperation\",\"id\":\"npm:npm-pack-dry-run\",\"targetId\":\"npm\",\"approval\":{\"requiresExecute\":false,\"requiresIrreversibleApproval\":false},\"command\":{\"executable\":\"npm\",\"args\":[\"pack\",\"--dry-run\",\"--json\"],\"requiredEnv\":[],\"redactedEnv\":[]}}",
|
|
351
422
|
"status": "passed",
|
|
352
423
|
"severity": "info",
|
|
353
424
|
"exitCode": 0
|
|
@@ -377,13 +448,13 @@ RELEASE_INTEGRATION_GITHUB=1 bun run test:integration:tools
|
|
|
377
448
|
|
|
378
449
|
The first command validates npm adapter operations against the real `npm` CLI. The second also validates GitHub adapter readiness checks against the real `gh` CLI and requires `gh auth status` to succeed. GitHub release creation itself has no native dry-run; release validation is simulated from the deterministic plan before publish and verified against GitHub only after publish.
|
|
379
450
|
|
|
380
|
-
Example configs are checked through the TypeScript workflow path:
|
|
451
|
+
Example configs and templates are checked through the TypeScript workflow path:
|
|
381
452
|
|
|
382
453
|
```sh
|
|
383
454
|
bun run check:examples
|
|
384
455
|
```
|
|
385
456
|
|
|
386
|
-
This repository also includes a
|
|
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. Its `identity.commit` may be the explicit current short commit, or `HEAD` as a 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.
|
|
387
458
|
|
|
388
459
|
```sh
|
|
389
460
|
bun run check:self-release-config
|
|
@@ -396,10 +467,10 @@ The local non-publish gates for this package are:
|
|
|
396
467
|
```sh
|
|
397
468
|
bun run check:release
|
|
398
469
|
bun run release:artifacts
|
|
399
|
-
bun
|
|
470
|
+
bun run cli plan --config apps/release-ts/release.config.json --format text
|
|
400
471
|
```
|
|
401
472
|
|
|
402
|
-
`release:artifacts` writes ignored files under `.release/artifacts`: the npm package tarball and standalone CLI executables for Linux, macOS, and Windows. GitHub Actions runs the approved release workflow on protected `main` when the package version has not already been published. The workflow uses npm trusted publishing with GitHub Actions OIDC instead of an npm token, and uploads `.release/evidence/**` for audit.
|
|
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 the approved release workflow on protected `main` when the package version has not already been published. The workflow uses npm trusted publishing with GitHub Actions OIDC instead of an npm token, runs the app CLI with `--config apps/release-ts/release.config.json`, and uploads `.release/evidence/**` for audit.
|
|
403
474
|
|
|
404
475
|
### Local Release Auth
|
|
405
476
|
|
|
@@ -407,6 +478,7 @@ Use `.env.example` as the local credential contract. Export `GH_TOKEN`, or copy
|
|
|
407
478
|
`.env.example` to `.env` and fill in token values locally. `.env` and `.npmrc`
|
|
408
479
|
are ignored intentionally; keep token values out of commits. `.npmrc.example`
|
|
409
480
|
shows npm's `${NPM_TOKEN}` interpolation form for token-based npm targets.
|
|
481
|
+
`TWINE_USERNAME` and `TWINE_PASSWORD` are only needed for PyPI/Twine examples.
|
|
410
482
|
|
|
411
483
|
For npmjs releases from GitHub Actions, prefer structured `trustedPublishing` on
|
|
412
484
|
the npm target:
|
|
@@ -419,7 +491,9 @@ the npm target:
|
|
|
419
491
|
"workflow": "release.yml",
|
|
420
492
|
"packageExists": true,
|
|
421
493
|
"verifyPackageExists": true
|
|
422
|
-
}
|
|
494
|
+
},
|
|
495
|
+
"access": "public",
|
|
496
|
+
"provenance": true
|
|
423
497
|
}
|
|
424
498
|
```
|
|
425
499
|
|
|
@@ -433,6 +507,22 @@ publishing for an existing package and use a GitHub-hosted runner with
|
|
|
433
507
|
check. Trusted publishing does not use `NPM_TOKEN` for `npm publish`; token-based
|
|
434
508
|
npm targets may still use `.npmrc.example` and `NPM_TOKEN`.
|
|
435
509
|
|
|
510
|
+
Diagnostics stay static by default and report confidence instead of pretending
|
|
511
|
+
local checks prove provider setup:
|
|
512
|
+
|
|
513
|
+
```sh
|
|
514
|
+
bun run cli check-auth --config release.config.json --format text
|
|
515
|
+
bun run cli check-ci --config release.config.json --workflow .github/workflows/release.yml --format markdown
|
|
516
|
+
bun run cli doctor --config release.config.json --format json
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
The reusable GitHub Actions trusted-publishing workflow template lives at
|
|
520
|
+
`templates/github-actions/trusted-publishing.yml`. It uses
|
|
521
|
+
`mannyc2/ts-release-action@v1` to record a Markdown plan, uploads review
|
|
522
|
+
artifacts, and requires a protected `release` environment before running
|
|
523
|
+
approved execution. npm trusted publishing uses OIDC, not `NPM_TOKEN`;
|
|
524
|
+
`GH_TOKEN` is for GitHub Releases and API verification.
|
|
525
|
+
|
|
436
526
|
### First npm Publish Bootstrap
|
|
437
527
|
|
|
438
528
|
Trusted publishing is the preferred steady state for GitHub Actions, but npm
|
package/SPEC.md
CHANGED
|
@@ -16,6 +16,7 @@ A release is a data flow:
|
|
|
16
16
|
release intent
|
|
17
17
|
-> normalized release model
|
|
18
18
|
-> target-specific operations
|
|
19
|
+
-> optional generated files
|
|
19
20
|
-> validation evidence
|
|
20
21
|
-> gated execution
|
|
21
22
|
-> post-publish verification
|
|
@@ -26,6 +27,22 @@ The package owns the model and the orchestration. Ecosystem tools remain the sou
|
|
|
26
27
|
|
|
27
28
|
For example, npm, PyPI, GitHub Releases, Homebrew taps, OCI registries, app stores, or other targets may each need different commands, credentials, artifacts, and validators. The release package should describe those differences directly instead of hiding them behind one fake universal publish abstraction.
|
|
28
29
|
|
|
30
|
+
## Current Shape
|
|
31
|
+
|
|
32
|
+
The root package is the reusable library. It exposes explicit subpaths for domain data, config loading, planners, target adapters, host services, and high-level workflows. The official Bun CLI lives in `apps/release-ts`, and the GitHub Action lives in `apps/ts-release-action`; both are runtime adapters over the same TypeScript workflows.
|
|
33
|
+
|
|
34
|
+
Current first-party workflows cover:
|
|
35
|
+
|
|
36
|
+
- config validation and plan rendering
|
|
37
|
+
- data-first init/scaffolding previews with approved writes
|
|
38
|
+
- static doctor/auth/CI diagnostics
|
|
39
|
+
- render, validation, execution, verification, and workflow evidence
|
|
40
|
+
- status reporting from existing evidence
|
|
41
|
+
- conservative resume after interrupted work
|
|
42
|
+
- narrow GitHub release reconciliation without republishing npm versions
|
|
43
|
+
|
|
44
|
+
Reusable configs live in `templates/`, runnable fixtures live in `examples/`, and publish operations remain data until an execute approval and any irreversible approval are supplied.
|
|
45
|
+
|
|
29
46
|
## Design Goals
|
|
30
47
|
|
|
31
48
|
### Plan-first
|
|
@@ -82,15 +99,19 @@ The library should expose APIs for:
|
|
|
82
99
|
|
|
83
100
|
- loading and normalizing config
|
|
84
101
|
- constructing a release plan
|
|
102
|
+
- scaffolding starter configs and CI workflows as proposed files
|
|
103
|
+
- rendering config schemas and validation results
|
|
85
104
|
- rendering target files or generated metadata
|
|
86
105
|
- validating plans and artifacts
|
|
106
|
+
- reporting static auth and CI readiness with confidence levels
|
|
87
107
|
- preparing executable operations
|
|
88
108
|
- running approved operations through an injected host interface
|
|
89
109
|
- recording evidence
|
|
90
110
|
- reporting release status from evidence
|
|
91
111
|
- conservatively resuming safe unfinished work
|
|
112
|
+
- reconciling narrowly modeled remote state without replaying immutable publishes
|
|
92
113
|
|
|
93
|
-
The CLI should mainly parse
|
|
114
|
+
The CLI and GitHub Action should mainly parse host inputs, call the library, format host-specific output, and persist evidence.
|
|
94
115
|
|
|
95
116
|
### Host abstraction without pretending the world is pure
|
|
96
117
|
|
|
@@ -162,14 +183,19 @@ Evidence should survive outside the process as JSON or another stable format. It
|
|
|
162
183
|
|
|
163
184
|
The package should make these workflows straightforward:
|
|
164
185
|
|
|
186
|
+
- initialize a starter config and optional CI workflow from templates
|
|
187
|
+
- validate config JSON and schema shape
|
|
165
188
|
- create a plan from config
|
|
166
189
|
- inspect the plan without executing anything
|
|
167
190
|
- render target-specific files
|
|
168
191
|
- validate artifacts and target readiness
|
|
192
|
+
- report static auth and CI readiness
|
|
169
193
|
- produce evidence artifacts
|
|
170
194
|
- print publish operations
|
|
171
195
|
- execute approved operations
|
|
172
196
|
- verify published state after execution
|
|
197
|
+
- inspect status and resume only safe unfinished work
|
|
198
|
+
- reconcile a matching GitHub draft release without republishing immutable registries
|
|
173
199
|
|
|
174
200
|
The API should favor explicit functions and typed data over hidden global state.
|
|
175
201
|
|
|
@@ -220,6 +246,8 @@ The rewrite is successful when:
|
|
|
220
246
|
- irreversible operations require deliberate approval
|
|
221
247
|
- core behavior is covered with deterministic tests
|
|
222
248
|
- a CLI can be rebuilt as a thin adapter over the library
|
|
249
|
+
- a GitHub Action can run the same workflows without embedding CLI behavior
|
|
250
|
+
- starter templates can be checked by the same workflow path as examples
|
|
223
251
|
- adding a new target does not require rewriting the core planner
|
|
224
252
|
|
|
225
253
|
## Biases
|
|
@@ -243,19 +271,21 @@ Avoid:
|
|
|
243
271
|
- special cases that only work for one repository shape
|
|
244
272
|
- abstractions that erase important ecosystem differences
|
|
245
273
|
|
|
246
|
-
##
|
|
274
|
+
## Implementation Direction
|
|
247
275
|
|
|
248
|
-
|
|
276
|
+
Continue from the data model.
|
|
249
277
|
|
|
250
|
-
|
|
278
|
+
Keep the smallest set of types needed to represent release identity, artifacts, targets, operations, validation results, execution gates, and evidence. Add target adapters end to end only when they prove the abstractions carry real differences without becoming generic mush.
|
|
251
279
|
|
|
252
|
-
The
|
|
280
|
+
The implementation should stay narrow but honest:
|
|
253
281
|
|
|
254
282
|
1. Load config.
|
|
255
283
|
2. Normalize into a release model.
|
|
256
284
|
3. Generate a serializable plan.
|
|
257
|
-
4.
|
|
258
|
-
5.
|
|
259
|
-
6.
|
|
285
|
+
4. Render generated files only through explicit render operations.
|
|
286
|
+
5. Validate with structured evidence.
|
|
287
|
+
6. Print executable operations.
|
|
288
|
+
7. Execute only when explicitly approved.
|
|
289
|
+
8. Verify remote state and report status from evidence.
|
|
260
290
|
|
|
261
291
|
Everything else should be added only after it has a clear place in that flow.
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
|
+
import type * as JsonSchema from "effect/JsonSchema";
|
|
2
3
|
import { ReleaseIntent } from "../domain/release.js";
|
|
3
4
|
export type * from "../types/effect-internal.js";
|
|
4
5
|
export declare const DEFAULT_CONFIG_PATH = "release.config.json";
|
|
6
|
+
export declare const RELEASE_CONFIG_SCHEMA_ID = "https://mannyc2.github.io/ts-release/schema/release-config.schema.json";
|
|
5
7
|
export declare const ReleaseConfig: typeof ReleaseIntent;
|
|
6
8
|
export type ReleaseConfig = typeof ReleaseConfig.Type;
|
|
7
9
|
export declare const decodeReleaseConfig: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => import("effect/Effect").Effect<ReleaseIntent, Schema.SchemaError, never>;
|
|
10
|
+
export declare const releaseConfigJsonSchemaDocument: () => JsonSchema.JsonSchema;
|
|
11
|
+
export declare const renderReleaseConfigJsonSchema: () => string;
|
|
8
12
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AACxD,eAAO,MAAM,wBAAwB,2EAA2E,CAAA;AAEhH,eAAO,MAAM,aAAa,sBAAgB,CAAA;AAC1C,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,mBAAmB,iJAA4C,CAAA;AAE5E,eAAO,MAAM,+BAA+B,QAAO,UAAU,CAAC,UAU7D,CAAA;AAED,eAAO,MAAM,6BAA6B,QAAO,MACkB,CAAA"}
|