@mannyc1/ts-release 0.0.6 → 0.0.7

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.
Files changed (125) hide show
  1. package/ARCHITECTURE.md +13 -8
  2. package/README.md +226 -448
  3. package/SPEC.md +48 -43
  4. package/dist/artifacts/adapter.d.ts +39 -0
  5. package/dist/artifacts/adapter.d.ts.map +1 -0
  6. package/dist/artifacts/adapter.js +23 -0
  7. package/dist/artifacts/adapter.js.map +1 -0
  8. package/dist/artifacts/registry.d.ts +21 -0
  9. package/dist/artifacts/registry.d.ts.map +1 -0
  10. package/dist/artifacts/registry.js +21 -0
  11. package/dist/artifacts/registry.js.map +1 -0
  12. package/dist/config/schema.js +1 -1
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/domain/artifact.d.ts +85 -3
  15. package/dist/domain/artifact.d.ts.map +1 -1
  16. package/dist/domain/artifact.js +171 -3
  17. package/dist/domain/artifact.js.map +1 -1
  18. package/dist/domain/evidence.d.ts +16 -65
  19. package/dist/domain/evidence.d.ts.map +1 -1
  20. package/dist/domain/evidence.js +15 -60
  21. package/dist/domain/evidence.js.map +1 -1
  22. package/dist/domain/operation.d.ts +7 -17
  23. package/dist/domain/operation.d.ts.map +1 -1
  24. package/dist/domain/operation.js +22 -144
  25. package/dist/domain/operation.js.map +1 -1
  26. package/dist/domain/release.d.ts +1 -49
  27. package/dist/domain/release.d.ts.map +1 -1
  28. package/dist/domain/release.js +2 -47
  29. package/dist/domain/release.js.map +1 -1
  30. package/dist/domain/remote-state.d.ts +0 -27
  31. package/dist/domain/remote-state.d.ts.map +1 -1
  32. package/dist/domain/remote-state.js +1 -23
  33. package/dist/domain/remote-state.js.map +1 -1
  34. package/dist/domain/target.d.ts +14 -1
  35. package/dist/domain/target.d.ts.map +1 -1
  36. package/dist/domain/target.js +17 -3
  37. package/dist/domain/target.js.map +1 -1
  38. package/dist/planner/artifact-inventory.d.ts.map +1 -1
  39. package/dist/planner/artifact-inventory.js +3 -1
  40. package/dist/planner/artifact-inventory.js.map +1 -1
  41. package/dist/planner/errors.d.ts +2 -16
  42. package/dist/planner/errors.d.ts.map +1 -1
  43. package/dist/planner/errors.js +2 -14
  44. package/dist/planner/errors.js.map +1 -1
  45. package/dist/planner/evidence-recorder.d.ts +8 -6
  46. package/dist/planner/evidence-recorder.d.ts.map +1 -1
  47. package/dist/planner/evidence-recorder.js +50 -18
  48. package/dist/planner/evidence-recorder.js.map +1 -1
  49. package/dist/planner/executor.d.ts +12 -12
  50. package/dist/planner/executor.d.ts.map +1 -1
  51. package/dist/planner/executor.js +43 -55
  52. package/dist/planner/executor.js.map +1 -1
  53. package/dist/planner/normalize-release.d.ts +3 -0
  54. package/dist/planner/normalize-release.d.ts.map +1 -1
  55. package/dist/planner/normalize-release.js +128 -4
  56. package/dist/planner/normalize-release.js.map +1 -1
  57. package/dist/planner/reconcile.d.ts.map +1 -1
  58. package/dist/planner/reconcile.js +2 -4
  59. package/dist/planner/reconcile.js.map +1 -1
  60. package/dist/planner/render-plan.d.ts.map +1 -1
  61. package/dist/planner/render-plan.js +12 -19
  62. package/dist/planner/render-plan.js.map +1 -1
  63. package/dist/targets/adapter-helpers.d.ts +20 -5
  64. package/dist/targets/adapter-helpers.d.ts.map +1 -1
  65. package/dist/targets/adapter-helpers.js +77 -7
  66. package/dist/targets/adapter-helpers.js.map +1 -1
  67. package/dist/targets/github.d.ts.map +1 -1
  68. package/dist/targets/github.js +1 -9
  69. package/dist/targets/github.js.map +1 -1
  70. package/dist/targets/homebrew.d.ts.map +1 -1
  71. package/dist/targets/homebrew.js +131 -18
  72. package/dist/targets/homebrew.js.map +1 -1
  73. package/dist/targets/npm.d.ts.map +1 -1
  74. package/dist/targets/npm.js +1 -7
  75. package/dist/targets/npm.js.map +1 -1
  76. package/dist/targets/pypi.d.ts.map +1 -1
  77. package/dist/targets/pypi.js +50 -12
  78. package/dist/targets/pypi.js.map +1 -1
  79. package/dist/targets/scoop.d.ts.map +1 -1
  80. package/dist/targets/scoop.js +18 -8
  81. package/dist/targets/scoop.js.map +1 -1
  82. package/dist/workflows/config.d.ts +69 -119
  83. package/dist/workflows/config.d.ts.map +1 -1
  84. package/dist/workflows/config.js +80 -125
  85. package/dist/workflows/config.js.map +1 -1
  86. package/dist/workflows/diagnostics.d.ts.map +1 -1
  87. package/dist/workflows/diagnostics.js +6 -3
  88. package/dist/workflows/diagnostics.js.map +1 -1
  89. package/dist/workflows/distribution.d.ts +25 -0
  90. package/dist/workflows/distribution.d.ts.map +1 -0
  91. package/dist/workflows/distribution.js +24 -0
  92. package/dist/workflows/distribution.js.map +1 -0
  93. package/dist/workflows/evidence.d.ts +4 -13
  94. package/dist/workflows/evidence.d.ts.map +1 -1
  95. package/dist/workflows/evidence.js +15 -27
  96. package/dist/workflows/evidence.js.map +1 -1
  97. package/dist/workflows/index.d.ts +1 -0
  98. package/dist/workflows/index.d.ts.map +1 -1
  99. package/dist/workflows/index.js +1 -0
  100. package/dist/workflows/index.js.map +1 -1
  101. package/dist/workflows/init.d.ts +3 -3
  102. package/dist/workflows/init.d.ts.map +1 -1
  103. package/dist/workflows/init.js +46 -0
  104. package/dist/workflows/init.js.map +1 -1
  105. package/examples/README.md +4 -4
  106. package/package.json +18 -15
  107. package/templates/README.md +15 -2
  108. package/templates/bun-cli-github/README.md +14 -0
  109. package/templates/bun-cli-github/release.config.json +89 -0
  110. package/dist/domain/status.d.ts +0 -43
  111. package/dist/domain/status.d.ts.map +0 -1
  112. package/dist/domain/status.js +0 -51
  113. package/dist/domain/status.js.map +0 -1
  114. package/dist/internal/workflow-phases.d.ts +0 -3
  115. package/dist/internal/workflow-phases.d.ts.map +0 -1
  116. package/dist/internal/workflow-phases.js +0 -2
  117. package/dist/internal/workflow-phases.js.map +0 -1
  118. package/dist/planner/release-eligibility.d.ts +0 -39
  119. package/dist/planner/release-eligibility.d.ts.map +0 -1
  120. package/dist/planner/release-eligibility.js +0 -578
  121. package/dist/planner/release-eligibility.js.map +0 -1
  122. package/dist/planner/status.d.ts +0 -40
  123. package/dist/planner/status.d.ts.map +0 -1
  124. package/dist/planner/status.js +0 -313
  125. package/dist/planner/status.js.map +0 -1
package/SPEC.md CHANGED
@@ -2,30 +2,32 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- The `release` package is a small TypeScript library for turning release intent into explicit, inspectable, and repeatable publishing operations.
5
+ The `release` package is a small TypeScript library for turning installable artifacts into explicit, inspectable, and repeatable package-manager distribution plans.
6
6
 
7
- It should not be a build system, a package-manager wrapper, or a generic task runner. Its job is to model what is being released, where it is being published, what must be true before publication, and which irreversible actions require deliberate approval.
7
+ It should not be a fake universal package manager or a generic task runner. Its job is to model what is being distributed, which artifact variants exist, which package managers or install channels consume them, and which externally visible actions require deliberate approval.
8
8
 
9
- The package should make release work boring: the same inputs should produce the same plan, the same validations should produce auditable evidence, and the same publish operation should be understandable before anything is executed.
9
+ The package should make distribution work boring: the same inputs should produce the same plan, the same staged artifacts should produce auditable inventory, and the same publish operation should be understandable before anything is executed.
10
10
 
11
11
  ## Core Idea
12
12
 
13
- A release is a data flow:
13
+ A distribution is a data flow:
14
14
 
15
15
  ```text
16
16
  release intent
17
17
  -> normalized release model
18
+ -> artifact recipes and inventory
19
+ -> installable artifact variants
18
20
  -> target-specific operations
19
- -> optional generated files
20
- -> validation evidence
21
- -> gated execution
21
+ -> generated package-manager files
22
+ -> validation and rendering evidence
23
+ -> approved execution
22
24
  -> post-publish verification
23
- -> status and conservative resume
25
+ -> optional modeled reconciliation
24
26
  ```
25
27
 
26
28
  The package owns the model and the orchestration. Ecosystem tools remain the source of truth for ecosystem-specific behavior.
27
29
 
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.
30
+ For example, npm, PyPI, GitHub Releases, Homebrew taps, Scoop buckets, OCI registries, app stores, or other targets may each need different manifests, commands, credentials, artifacts, and validators. The release package should describe those differences directly instead of hiding them behind one fake universal abstraction.
29
31
 
30
32
  ## Current Shape
31
33
 
@@ -34,11 +36,10 @@ The root package is the reusable library. It exposes explicit subpaths for domai
34
36
  Current first-party workflows cover:
35
37
 
36
38
  - config validation and plan rendering
39
+ - explicit artifact recipe staging
37
40
  - data-first init/scaffolding previews with approved writes
38
41
  - static doctor/auth/CI diagnostics
39
42
  - render, validation, execution, verification, and workflow evidence
40
- - status reporting from existing evidence
41
- - conservative resume after interrupted work
42
43
  - narrow GitHub release reconciliation without republishing npm versions
43
44
 
44
45
  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.
@@ -47,12 +48,12 @@ Reusable configs live in `templates/`, runnable fixtures live in `examples/`, an
47
48
 
48
49
  ### Plan-first
49
50
 
50
- The primary output of the package is a release plan, not a side effect.
51
+ The primary output of the package is a distribution plan, not a side effect.
51
52
 
52
53
  A plan should be serializable, reviewable, and suitable for CI artifacts. It should explain:
53
54
 
54
- - release identity: name, version, commit, tag, notes, source metadata, and the strategy that resolved it
55
- - artifact inventory: files, checksums, sizes, formats, and intended consumers
55
+ - release identity: name, version, commit, tag, notes, and source metadata
56
+ - artifact inventory: files, checksums, sizes, formats, intended consumers, and installable variants
56
57
  - target operations: what each target will do and what inputs it needs
57
58
  - validation steps: which checks must run before publishing
58
59
  - execution gates: which operations are irreversible or require explicit approval
@@ -77,7 +78,7 @@ Validation should produce structured evidence, not just console output.
77
78
 
78
79
  Evidence should be machine-readable enough for CI and human-readable enough for debugging. It should include command invocations, tool versions where practical, exit statuses, important paths, skipped checks, warnings, failures, and timestamps.
79
80
 
80
- Evidence should also support status reporting and conservative resume after failed or interrupted releases.
81
+ Evidence should also preserve enough context to debug failed or interrupted releases.
81
82
 
82
83
  Strict mode should fail on missing required validators. Non-strict mode may record skips, but skips must be visible in the evidence.
83
84
 
@@ -98,6 +99,7 @@ The core package should be a reusable library. A CLI can exist as an adapter, bu
98
99
  The library should expose APIs for:
99
100
 
100
101
  - loading and normalizing config
102
+ - staging declared artifact recipes through provided adapters
101
103
  - constructing a release plan
102
104
  - scaffolding starter configs and CI workflows as proposed files
103
105
  - rendering config schemas and validation results
@@ -107,8 +109,6 @@ The library should expose APIs for:
107
109
  - preparing executable operations
108
110
  - running approved operations through an injected host interface
109
111
  - recording evidence
110
- - reporting release status from evidence
111
- - conservatively resuming safe unfinished work
112
112
  - reconciling narrowly modeled remote state without replaying immutable publishes
113
113
 
114
114
  The CLI and GitHub Action should mainly parse host inputs, call the library, format host-specific output, and persist evidence.
@@ -129,9 +129,9 @@ Builders, packagers, changelog generators, signing tools, registry CLIs, provena
129
129
 
130
130
  The package should not try to:
131
131
 
132
- - build every artifact itself
132
+ - build every artifact itself or replace full build pipelines
133
133
  - replace ecosystem-native publishing tools
134
- - invent a universal package format
134
+ - invent a universal package format or one manifest schema for every ecosystem
135
135
  - hide target-specific auth requirements
136
136
  - guarantee semantic versioning policy for the project using it
137
137
  - own changelog generation as a core requirement
@@ -149,9 +149,19 @@ 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.
152
+ Identity may be static config data or may be derived from a package manifest. Release intent should declare artifact files, optional artifact recipes, target policy, and evidence location. Whether a project decides to bump a version from tags, commits, or human review belongs outside the generic distribution model unless it becomes a separate app-local or target-specific adapter.
153
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.
154
+ ### Artifact Recipe
155
+
156
+ An optional, explicit staging contract for artifacts that `ts-release` can create before planning target distribution.
157
+
158
+ Recipes are data until the caller runs a staging workflow. The first recipe family is Bun executable compilation, which produces executable artifacts with derived operating-system and architecture variants. Additional recipe families should land only when they provide durable distribution value without turning the core into a general build system.
159
+
160
+ ### Installable Artifact Variant
161
+
162
+ Platform metadata attached to an artifact intent or inventory item.
163
+
164
+ Variants should capture facts that package-manager targets need to choose or render the right artifact: operating system, architecture, optional Linux libc family, executable extension, binary name, install path, and source target triple. Target adapters should consume this data instead of guessing from filenames.
155
165
 
156
166
  ### Release Model
157
167
 
@@ -189,6 +199,7 @@ The package should make these workflows straightforward:
189
199
 
190
200
  - initialize a starter config and optional CI workflow from templates
191
201
  - validate config JSON and schema shape
202
+ - stage declared artifact recipes
192
203
  - create a plan from config
193
204
  - inspect the plan without executing anything
194
205
  - render target-specific files
@@ -198,7 +209,6 @@ The package should make these workflows straightforward:
198
209
  - print publish operations
199
210
  - execute approved operations
200
211
  - verify published state after execution
201
- - inspect status and resume only safe unfinished work
202
212
  - reconcile a matching GitHub draft release without republishing immutable registries
203
213
 
204
214
  The API should favor explicit functions and typed data over hidden global state.
@@ -212,22 +222,14 @@ It should describe release facts and target policy, not arbitrary scripts. Escap
212
222
  Good config answers:
213
223
 
214
224
  - What is the release?
215
- - Which artifacts are part of it?
216
- - Which targets receive it?
225
+ - Which artifacts and variants are part of it?
226
+ - Which targets or install surfaces receive them?
217
227
  - What credentials or environment are required?
218
228
  - What must be validated first?
219
229
  - Which generated files or indexes will change?
220
230
  - Which operations are allowed to execute in this environment?
221
231
 
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.
232
+ 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. Artifact variants must be explicit data or derived by a known recipe adapter before target rendering.
231
233
 
232
234
  ## Testing Strategy
233
235
 
@@ -252,9 +254,11 @@ Real integration tests can exist for official validators and sandbox registries,
252
254
 
253
255
  The rewrite is successful when:
254
256
 
255
- - a user can define release intent in a small config
256
- - the package produces a reviewable release plan with no side effects
257
+ - a user can define an artifact-first distribution intent in a small config
258
+ - the package can stage declared artifacts before target planning
259
+ - the package produces a reviewable distribution plan with no side effects
257
260
  - target differences are explicit in the plan
261
+ - installable artifact variants are available before package-manager rendering
258
262
  - validation emits structured evidence
259
263
  - publish operations are blocked by default
260
264
  - irreversible operations require deliberate approval
@@ -289,17 +293,18 @@ Avoid:
289
293
 
290
294
  Continue from the data model.
291
295
 
292
- 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.
296
+ Keep the smallest set of types needed to represent release identity, artifact recipes, artifact variants, 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.
293
297
 
294
298
  The implementation should stay narrow but honest:
295
299
 
296
300
  1. Load config.
297
- 2. Normalize into a release model.
298
- 3. Generate a serializable plan.
299
- 4. Render generated files only through explicit render operations.
300
- 5. Validate with structured evidence.
301
- 6. Print executable operations.
302
- 7. Execute only when explicitly approved.
303
- 8. Verify remote state and report status from evidence.
301
+ 2. Stage declared artifact recipes when requested.
302
+ 3. Normalize into a release model with artifact inventory and variants.
303
+ 4. Generate a serializable distribution plan.
304
+ 5. Render generated files only through explicit render operations.
305
+ 6. Validate with structured evidence.
306
+ 7. Print executable operations.
307
+ 8. Execute only when explicitly approved.
308
+ 9. Verify remote state and record evidence.
304
309
 
305
310
  Everything else should be added only after it has a clear place in that flow.
@@ -0,0 +1,39 @@
1
+ import * as Effect from "effect/Effect";
2
+ import type * as Path from "effect/Path";
3
+ import * as Schema from "effect/Schema";
4
+ import { ArtifactRecipe } from "../domain/artifact.js";
5
+ import { ReleaseIdentity } from "../domain/release.js";
6
+ export type * from "../types/effect-internal.js";
7
+ export interface ArtifactRecipeStageContext {
8
+ readonly root: string;
9
+ readonly identity: ReleaseIdentity;
10
+ readonly configPath?: string | undefined;
11
+ }
12
+ declare const StagedArtifact_base: Schema.Class<StagedArtifact, Schema.Struct<{
13
+ readonly id: Schema.NonEmptyString;
14
+ readonly path: Schema.String;
15
+ }>, {}>;
16
+ export declare class StagedArtifact extends StagedArtifact_base {
17
+ }
18
+ declare const StagedArtifactRecipeResult_base: Schema.Class<StagedArtifactRecipeResult, Schema.Struct<{
19
+ readonly recipeId: Schema.NonEmptyString;
20
+ readonly recipeTag: Schema.String;
21
+ readonly artifacts: Schema.$Array<typeof StagedArtifact>;
22
+ }>, {}>;
23
+ export declare class StagedArtifactRecipeResult extends StagedArtifactRecipeResult_base {
24
+ }
25
+ declare const ArtifactRecipeStageError_base: Schema.Class<ArtifactRecipeStageError, Schema.TaggedStruct<"ArtifactRecipeStageError", {
26
+ readonly recipeId: Schema.NonEmptyString;
27
+ readonly recipeTag: Schema.String;
28
+ readonly artifactId: Schema.optionalKey<Schema.NonEmptyString>;
29
+ readonly path: Schema.optionalKey<Schema.String>;
30
+ readonly reason: Schema.String;
31
+ readonly cause: Schema.optionalKey<Schema.Defect>;
32
+ }>, import("effect/Cause").YieldableError>;
33
+ export declare class ArtifactRecipeStageError extends ArtifactRecipeStageError_base {
34
+ }
35
+ export interface ArtifactRecipeAdapter<Recipe extends ArtifactRecipe> {
36
+ readonly recipeTag: Recipe["_tag"];
37
+ readonly stage: (recipe: Recipe, context: ArtifactRecipeStageContext) => Effect.Effect<StagedArtifactRecipeResult, ArtifactRecipeStageError, Path.Path>;
38
+ }
39
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/artifacts/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAEL,cAAc,EAEf,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,mBAAmB,6BAA6B,CAAA;AAEhD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACzC;;;;;AAED,qBAAa,cAAe,SAAQ,mBAGlC;CAAG;;;;;;AAEL,qBAAa,0BAA2B,SAAQ,+BAM9C;CAAG;;;;;;;;;AAEL,qBAAa,wBAAyB,SAAQ,6BAU7C;CAAG;AAEJ,MAAM,WAAW,qBAAqB,CAAC,MAAM,SAAS,cAAc;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,0BAA0B,KAChC,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;CACpF"}
@@ -0,0 +1,23 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { ArtifactId, ArtifactRecipeId } from "../domain/artifact.js";
3
+ export class StagedArtifact extends Schema.Class("StagedArtifact")({
4
+ id: ArtifactId,
5
+ path: Schema.String
6
+ }) {
7
+ }
8
+ export class StagedArtifactRecipeResult extends Schema.Class("StagedArtifactRecipeResult")({
9
+ recipeId: ArtifactRecipeId,
10
+ recipeTag: Schema.String,
11
+ artifacts: Schema.Array(StagedArtifact)
12
+ }) {
13
+ }
14
+ export class ArtifactRecipeStageError extends Schema.TaggedErrorClass()("ArtifactRecipeStageError", {
15
+ recipeId: ArtifactRecipeId,
16
+ recipeTag: Schema.String,
17
+ artifactId: Schema.optionalKey(ArtifactId),
18
+ path: Schema.optionalKey(Schema.String),
19
+ reason: Schema.String,
20
+ cause: Schema.optionalKey(Schema.Defect())
21
+ }) {
22
+ }
23
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/artifacts/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,UAAU,EAEV,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAW9B,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IACjF,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC;CAAG;AAEL,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,KAAK,CAC1D,4BAA4B,CAC7B,CAAC;IACA,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;CACxC,CAAC;CAAG;AAEL,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,gBAAgB,EAA4B,CAC/F,0BAA0B,EAC1B;IACE,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CAC3C,CACF;CAAG"}
@@ -0,0 +1,21 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import type * as Path from "effect/Path";
4
+ import * as Schema from "effect/Schema";
5
+ import { ArtifactRecipe } from "../domain/artifact.js";
6
+ import { ArtifactRecipeStageContext, ArtifactRecipeStageError, StagedArtifactRecipeResult } from "./adapter.js";
7
+ export type * from "../types/effect-internal.js";
8
+ declare const MissingArtifactRecipeAdapterError_base: Schema.Class<MissingArtifactRecipeAdapterError, Schema.TaggedStruct<"MissingArtifactRecipeAdapterError", {
9
+ readonly recipeTag: Schema.String;
10
+ }>, import("effect/Cause").YieldableError>;
11
+ export declare class MissingArtifactRecipeAdapterError extends MissingArtifactRecipeAdapterError_base {
12
+ }
13
+ export interface ArtifactRecipeRegistryShape {
14
+ readonly stageArtifactRecipe: (recipe: ArtifactRecipe, context: ArtifactRecipeStageContext) => Effect.Effect<StagedArtifactRecipeResult, MissingArtifactRecipeAdapterError | ArtifactRecipeStageError, Path.Path>;
15
+ }
16
+ declare const ArtifactRecipeRegistry_base: Context.ServiceClass<ArtifactRecipeRegistry, "ArtifactRecipeRegistry", ArtifactRecipeRegistryShape>;
17
+ export declare class ArtifactRecipeRegistry extends ArtifactRecipeRegistry_base {
18
+ }
19
+ export declare const stageArtifactRecipe: (recipe: import("../domain/artifact.js").BunExecutableArtifactRecipe | import("../domain/artifact.js").PyPiWheelArtifactRecipe, context: ArtifactRecipeStageContext) => Effect.Effect<StagedArtifactRecipeResult, ArtifactRecipeStageError | MissingArtifactRecipeAdapterError, Path.Path | ArtifactRecipeRegistry>;
20
+ export declare const stageAllArtifactRecipes: (recipes: readonly (import("../domain/artifact.js").BunExecutableArtifactRecipe | import("../domain/artifact.js").PyPiWheelArtifactRecipe)[], context: ArtifactRecipeStageContext) => Effect.Effect<StagedArtifactRecipeResult[], ArtifactRecipeStageError | MissingArtifactRecipeAdapterError, Path.Path | ArtifactRecipeRegistry>;
21
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/artifacts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,cAAc,CAAA;AAErB,mBAAmB,6BAA6B,CAAA;;;;AAEhD,qBAAa,iCAAkC,SAAQ,sCAKtD;CAAG;AAEJ,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,0BAA0B,KAChC,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,iCAAiC,GAAG,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;CACxH;;AAED,qBAAa,sBAAuB,SAAQ,2BAGf;CAAG;AAEhC,eAAO,MAAM,mBAAmB,qTAM9B,CAAA;AAEF,eAAO,MAAM,uBAAuB,qUASlC,CAAA"}
@@ -0,0 +1,21 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Schema from "effect/Schema";
4
+ export class MissingArtifactRecipeAdapterError extends Schema.TaggedErrorClass()("MissingArtifactRecipeAdapterError", {
5
+ recipeTag: Schema.String
6
+ }) {
7
+ }
8
+ export class ArtifactRecipeRegistry extends Context.Service()("ArtifactRecipeRegistry") {
9
+ }
10
+ export const stageArtifactRecipe = Effect.fn("stageArtifactRecipe")(function* (recipe, context) {
11
+ const registry = yield* ArtifactRecipeRegistry;
12
+ return yield* registry.stageArtifactRecipe(recipe, context);
13
+ });
14
+ export const stageAllArtifactRecipes = Effect.fn("stageAllArtifactRecipes")(function* (recipes, context) {
15
+ const results = [];
16
+ for (const recipe of recipes) {
17
+ results.push(yield* stageArtifactRecipe(recipe, context));
18
+ }
19
+ return results;
20
+ });
21
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/artifacts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAUvC,MAAM,OAAO,iCAAkC,SAAQ,MAAM,CAAC,gBAAgB,EAAqC,CACjH,mCAAmC,EACnC;IACE,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CACF;CAAG;AASJ,MAAM,OAAO,sBAAuB,SAAQ,OAAO,CAAC,OAAO,EAGxD,CAAC,wBAAwB,CAAC;CAAG;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,EAC3E,MAAsB,EACtB,OAAmC;IAEnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,sBAAsB,CAAA;IAC9C,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAC7D,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,EACnF,OAAsC,EACtC,OAAmC;IAEnC,MAAM,OAAO,GAAsC,EAAE,CAAA;IACrD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAC,CAAA"}
@@ -11,7 +11,7 @@ export const releaseConfigJsonSchemaDocument = () => {
11
11
  $schema: "https://json-schema.org/draft/2020-12/schema",
12
12
  $id: RELEASE_CONFIG_SCHEMA_ID,
13
13
  title: "ts-release configuration",
14
- description: "Configuration for a plan-first ts-release workflow.",
14
+ description: "Configuration for an artifact-first ts-release distribution workflow.",
15
15
  $defs: document.definitions
16
16
  };
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAIpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,wEAAwE,CAAA;AAEhH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAA;AAG1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAA0B,EAAE;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAC3D,OAAO;QACL,GAAG,QAAQ,CAAC,MAAM;QAClB,OAAO,EAAE,8CAA8C;QACvD,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,qDAAqD;QAClE,KAAK,EAAE,QAAQ,CAAC,WAAW;KAC5B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAW,EAAE,CACxD,GAAG,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAIpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACxD,MAAM,CAAC,MAAM,wBAAwB,GAAG,wEAAwE,CAAA;AAEhH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAA;AAG1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAA0B,EAAE;IACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAC3D,OAAO;QACL,GAAG,QAAQ,CAAC,MAAM;QAClB,OAAO,EAAE,8CAA8C;QACvD,GAAG,EAAE,wBAAwB;QAC7B,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,uEAAuE;QACpF,KAAK,EAAE,QAAQ,CAAC,WAAW;KAC5B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAW,EAAE,CACxD,GAAG,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAA"}
@@ -2,35 +2,117 @@ import * as Schema from "effect/Schema";
2
2
  export type * from "../types/effect-internal.js";
3
3
  export declare const ArtifactId: Schema.NonEmptyString;
4
4
  export type ArtifactId = typeof ArtifactId.Type;
5
- export declare const ArtifactFormat: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
5
+ export declare const ArtifactFormat: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image", "executable"]>;
6
6
  export type ArtifactFormat = typeof ArtifactFormat.Type;
7
7
  export declare const ChecksumAlgorithm: Schema.Literals<readonly ["sha256", "sha512"]>;
8
8
  export type ChecksumAlgorithm = typeof ChecksumAlgorithm.Type;
9
+ export declare const ArtifactRecipeId: Schema.NonEmptyString;
10
+ export type ArtifactRecipeId = typeof ArtifactRecipeId.Type;
11
+ export declare const ArtifactOperatingSystem: Schema.Literals<readonly ["linux", "darwin", "windows"]>;
12
+ export type ArtifactOperatingSystem = typeof ArtifactOperatingSystem.Type;
13
+ export declare const ArtifactArchitecture: Schema.Literals<readonly ["x64", "arm64"]>;
14
+ export type ArtifactArchitecture = typeof ArtifactArchitecture.Type;
15
+ export declare const ArtifactLibc: Schema.Literals<readonly ["glibc", "musl"]>;
16
+ export type ArtifactLibc = typeof ArtifactLibc.Type;
17
+ export declare const BunExecutableCompileTarget: Schema.Literals<readonly ["bun-linux-x64", "bun-linux-x64-baseline", "bun-linux-x64-modern", "bun-linux-arm64", "bun-windows-x64", "bun-windows-x64-baseline", "bun-windows-x64-modern", "bun-windows-arm64", "bun-darwin-x64", "bun-darwin-x64-baseline", "bun-darwin-x64-modern", "bun-darwin-arm64", "bun-linux-x64-musl", "bun-linux-x64-baseline-musl", "bun-linux-x64-modern-musl", "bun-linux-arm64-musl"]>;
18
+ export type BunExecutableCompileTarget = typeof BunExecutableCompileTarget.Type;
9
19
  declare const Checksum_base: Schema.Class<Checksum, Schema.Struct<{
10
20
  readonly algorithm: Schema.Literals<readonly ["sha256", "sha512"]>;
11
21
  readonly value: Schema.String;
12
22
  }>, {}>;
13
23
  export declare class Checksum extends Checksum_base {
14
24
  }
25
+ declare const InstallableArtifactVariant_base: Schema.Class<InstallableArtifactVariant, Schema.Struct<{
26
+ readonly os: Schema.Literals<readonly ["linux", "darwin", "windows"]>;
27
+ readonly arch: Schema.Literals<readonly ["x64", "arm64"]>;
28
+ readonly libc: Schema.optionalKey<Schema.Literals<readonly ["glibc", "musl"]>>;
29
+ readonly binaryName: Schema.optionalKey<Schema.NonEmptyString>;
30
+ readonly executableExtension: Schema.optionalKey<Schema.NonEmptyString>;
31
+ readonly installPath: Schema.optionalKey<Schema.NonEmptyString>;
32
+ readonly targetTriple: Schema.optionalKey<Schema.NonEmptyString>;
33
+ }>, {}>;
34
+ export declare class InstallableArtifactVariant extends InstallableArtifactVariant_base {
35
+ }
36
+ declare const InstallableArtifactVariantOverride_base: Schema.Class<InstallableArtifactVariantOverride, Schema.Struct<{
37
+ readonly os: Schema.optionalKey<Schema.Literals<readonly ["linux", "darwin", "windows"]>>;
38
+ readonly arch: Schema.optionalKey<Schema.Literals<readonly ["x64", "arm64"]>>;
39
+ readonly libc: Schema.optionalKey<Schema.Literals<readonly ["glibc", "musl"]>>;
40
+ readonly binaryName: Schema.optionalKey<Schema.NonEmptyString>;
41
+ readonly executableExtension: Schema.optionalKey<Schema.NonEmptyString>;
42
+ readonly installPath: Schema.optionalKey<Schema.NonEmptyString>;
43
+ readonly targetTriple: Schema.optionalKey<Schema.NonEmptyString>;
44
+ }>, {}>;
45
+ export declare class InstallableArtifactVariantOverride extends InstallableArtifactVariantOverride_base {
46
+ }
15
47
  declare const ArtifactIntent_base: Schema.Class<ArtifactIntent, Schema.Struct<{
16
48
  readonly id: Schema.NonEmptyString;
17
49
  readonly path: Schema.String;
18
- readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
50
+ readonly downloadUrl: Schema.optionalKey<Schema.String>;
51
+ readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image", "executable"]>;
19
52
  readonly consumers: Schema.$Array<Schema.String>;
20
53
  readonly checksum: Schema.optionalKey<typeof Checksum>;
54
+ readonly variant: Schema.optionalKey<typeof InstallableArtifactVariant>;
21
55
  }>, {}>;
22
56
  export declare class ArtifactIntent extends ArtifactIntent_base {
23
57
  }
58
+ declare const BunExecutableArtifactOutput_base: Schema.Class<BunExecutableArtifactOutput, Schema.Struct<{
59
+ readonly id: Schema.NonEmptyString;
60
+ readonly target: Schema.Literals<readonly ["bun-linux-x64", "bun-linux-x64-baseline", "bun-linux-x64-modern", "bun-linux-arm64", "bun-windows-x64", "bun-windows-x64-baseline", "bun-windows-x64-modern", "bun-windows-arm64", "bun-darwin-x64", "bun-darwin-x64-baseline", "bun-darwin-x64-modern", "bun-darwin-arm64", "bun-linux-x64-musl", "bun-linux-x64-baseline-musl", "bun-linux-x64-modern-musl", "bun-linux-arm64-musl"]>;
61
+ readonly path: Schema.String;
62
+ readonly downloadUrl: Schema.optionalKey<Schema.String>;
63
+ readonly consumers: Schema.$Array<Schema.String>;
64
+ readonly variant: Schema.optionalKey<typeof InstallableArtifactVariantOverride>;
65
+ }>, {}>;
66
+ export declare class BunExecutableArtifactOutput extends BunExecutableArtifactOutput_base {
67
+ }
68
+ declare const BunExecutableArtifactRecipe_base: Schema.Class<BunExecutableArtifactRecipe, Schema.TaggedStruct<"BunExecutableArtifactRecipe", {
69
+ readonly id: Schema.NonEmptyString;
70
+ readonly entrypoint: Schema.String;
71
+ readonly outputs: Schema.$Array<typeof BunExecutableArtifactOutput>;
72
+ readonly minify: Schema.optionalKey<Schema.Boolean>;
73
+ }>, {}>;
74
+ export declare class BunExecutableArtifactRecipe extends BunExecutableArtifactRecipe_base {
75
+ }
76
+ declare const PyPiWheelBinaryArtifact_base: Schema.Class<PyPiWheelBinaryArtifact, Schema.Struct<{
77
+ readonly os: Schema.Literals<readonly ["linux", "darwin", "windows"]>;
78
+ readonly arch: Schema.Literals<readonly ["x64", "arm64"]>;
79
+ readonly sourcePath: Schema.String;
80
+ readonly wheelPath: Schema.String;
81
+ }>, {}>;
82
+ export declare class PyPiWheelBinaryArtifact extends PyPiWheelBinaryArtifact_base {
83
+ }
84
+ declare const PyPiWheelArtifactRecipe_base: Schema.Class<PyPiWheelArtifactRecipe, Schema.TaggedStruct<"PyPiWheelArtifactRecipe", {
85
+ readonly id: Schema.NonEmptyString;
86
+ readonly path: Schema.String;
87
+ readonly wheelTag: Schema.String;
88
+ readonly packageName: Schema.String;
89
+ readonly moduleName: Schema.String;
90
+ readonly consoleScript: Schema.String;
91
+ readonly summary: Schema.String;
92
+ readonly homepage: Schema.String;
93
+ readonly license: Schema.String;
94
+ readonly requiresPython: Schema.String;
95
+ readonly binaries: Schema.$Array<typeof PyPiWheelBinaryArtifact>;
96
+ readonly consumers: Schema.$Array<Schema.String>;
97
+ }>, {}>;
98
+ export declare class PyPiWheelArtifactRecipe extends PyPiWheelArtifactRecipe_base {
99
+ }
100
+ export declare const ArtifactRecipe: Schema.Union<readonly [typeof BunExecutableArtifactRecipe, typeof PyPiWheelArtifactRecipe]>;
101
+ export type ArtifactRecipe = typeof ArtifactRecipe.Type;
24
102
  declare const ArtifactInventoryItem_base: Schema.Class<ArtifactInventoryItem, Schema.Struct<{
25
103
  readonly id: Schema.NonEmptyString;
26
104
  readonly path: Schema.String;
27
- readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
105
+ readonly downloadUrl: Schema.optionalKey<Schema.String>;
106
+ readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image", "executable"]>;
28
107
  readonly consumers: Schema.$Array<Schema.String>;
29
108
  readonly sizeBytes: Schema.Number;
30
109
  readonly checksum: Schema.optionalKey<typeof Checksum>;
110
+ readonly variant: Schema.optionalKey<typeof InstallableArtifactVariant>;
31
111
  }>, {}>;
32
112
  export declare class ArtifactInventoryItem extends ArtifactInventoryItem_base {
33
113
  }
114
+ export declare const bunExecutableCompileTargetVariant: (target: BunExecutableCompileTarget) => InstallableArtifactVariant;
115
+ export declare const bunExecutableOutputVariant: (target: BunExecutableCompileTarget, override: InstallableArtifactVariantOverride | undefined) => InstallableArtifactVariant;
34
116
  export declare const artifactIntentOrder: (left: ArtifactIntent, right: ArtifactIntent) => number;
35
117
  export declare const artifactInventoryOrder: (left: ArtifactInventoryItem, right: ArtifactInventoryItem) => number;
36
118
  //# sourceMappingURL=artifact.d.ts.map
@@ -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,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"}
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,8FAAsF,CAAA;AACjH,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,eAAO,MAAM,gBAAgB,uBAAwB,CAAA;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,uBAAuB,0DAAkD,CAAA;AACtF,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,eAAO,MAAM,oBAAoB,4CAAoC,CAAA;AACrE,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,eAAO,MAAM,YAAY,6CAAqC,CAAA;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAEnD,eAAO,MAAM,0BAA0B,oZAiBrC,CAAA;AACF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,IAAI,CAAA;;;;;AAE/E,qBAAa,QAAS,SAAQ,aAG5B;CAAG;;;;;;;;;;AAEL,qBAAa,0BAA2B,SAAQ,+BAU9C;CAAG;;;;;;;;;;AAEL,qBAAa,kCAAmC,SAAQ,uCAUtD;CAAG;;;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAQlC;CAAG;;;;;;;;;AAEL,qBAAa,2BAA4B,SAAQ,gCAS/C;CAAG;;;;;;;AAEL,qBAAa,2BAA4B,SAAQ,gCAQhD;CAAG;;;;;;;AAEJ,qBAAa,uBAAwB,SAAQ,4BAK3C;CAAG;;;;;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAgB5C;CAAG;AAEJ,eAAO,MAAM,cAAc,6FAAuE,CAAA;AAClG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;;;;;AAEvD,qBAAa,qBAAsB,SAAQ,0BASzC;CAAG;AAEL,eAAO,MAAM,iCAAiC,GAC5C,QAAQ,0BAA0B,KACjC,0BAiEF,CAAA;AAED,eAAO,MAAM,0BAA0B,GACrC,QAAQ,0BAA0B,EAClC,UAAU,kCAAkC,GAAG,SAAS,KACvD,0BAgBF,CAAA;AAED,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"}