1import type * as codeartifact from "@distilled.cloud/aws/codeartifact";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Repository } from "./Repository.ts";
5
6/**
7 * Request for {@link PublishPackageVersion} — `domain`, `domainOwner`, and
8 * `repository` are injected from the bound {@link Repository}.
9 */
10export interface PublishPackageVersionRequest extends Omit<
11 codeartifact.PublishPackageVersionRequest,
12 "domain" | "domainOwner" | "repository"
13> {}
14
15/**
16 * Runtime binding for `codeartifact:PublishPackageVersion`.
17 *
18 * Publishes a new package version (generic-format packages) by uploading an asset with its SHA-256 checksum. Provide the implementation with
19 * `Effect.provide(AWS.CodeArtifact.PublishPackageVersionHttp)`.
20 * ### Publishing Packages
21 * **Example:** Publish a Generic Package Version
22 * ```typescript
23 * const publish = yield* AWS.CodeArtifact.PublishPackageVersion(repo);
24 *
25 * const res = yield* publish({
26 * format: "generic",
27 * namespace: "my-ns",
28 * package: "my-package",
29 * packageVersion: "1.0.0",
30 * assetName: "artifact.bin",
31 * assetContent: bytes,
32 * assetSHA256: sha256HexOfBytes,
33 * });
34 * console.log(res.status);
35 * ```
36 *
37 * @binding
38 */
39export interface PublishPackageVersion extends Binding.Service<
40 PublishPackageVersion,
41 "AWS.CodeArtifact.PublishPackageVersion",
42 (
43 repository: Repository,
44 ) => Effect.Effect<
45 (
46 request: PublishPackageVersionRequest,
47 ) => Effect.Effect<
48 codeartifact.PublishPackageVersionResult,
49 codeartifact.PublishPackageVersionError
50 >
51 >
52> {}
53
54export const PublishPackageVersion = Binding.Service<PublishPackageVersion>(
55 "AWS.CodeArtifact.PublishPackageVersion",
56);