@alchemy.run/docker 0.0.0 → 2.0.0-beta.85

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 (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +46 -4
  3. package/lib/Bootstrap.d.ts +7 -0
  4. package/lib/Bootstrap.d.ts.map +1 -0
  5. package/lib/Bootstrap.js +25 -0
  6. package/lib/Bootstrap.js.map +1 -0
  7. package/lib/BuildHash.d.ts +56 -0
  8. package/lib/BuildHash.d.ts.map +1 -0
  9. package/lib/BuildHash.js +172 -0
  10. package/lib/BuildHash.js.map +1 -0
  11. package/lib/Container.d.ts +450 -0
  12. package/lib/Container.d.ts.map +1 -0
  13. package/lib/Container.js +745 -0
  14. package/lib/Container.js.map +1 -0
  15. package/lib/Context.d.ts +86 -0
  16. package/lib/Context.d.ts.map +1 -0
  17. package/lib/Context.js +146 -0
  18. package/lib/Context.js.map +1 -0
  19. package/lib/Docker.d.ts +527 -0
  20. package/lib/Docker.d.ts.map +1 -0
  21. package/lib/Docker.js +437 -0
  22. package/lib/Docker.js.map +1 -0
  23. package/lib/Dockerfile.d.ts +72 -0
  24. package/lib/Dockerfile.d.ts.map +1 -0
  25. package/lib/Dockerfile.js +12 -0
  26. package/lib/Dockerfile.js.map +1 -0
  27. package/lib/HealthcheckCommand.d.ts +17 -0
  28. package/lib/HealthcheckCommand.d.ts.map +1 -0
  29. package/lib/HealthcheckCommand.js +33 -0
  30. package/lib/HealthcheckCommand.js.map +1 -0
  31. package/lib/Image.d.ts +179 -0
  32. package/lib/Image.d.ts.map +1 -0
  33. package/lib/Image.js +210 -0
  34. package/lib/Image.js.map +1 -0
  35. package/lib/ImageSource.d.ts +288 -0
  36. package/lib/ImageSource.d.ts.map +1 -0
  37. package/lib/ImageSource.js +498 -0
  38. package/lib/ImageSource.js.map +1 -0
  39. package/lib/Network.d.ts +70 -0
  40. package/lib/Network.d.ts.map +1 -0
  41. package/lib/Network.js +111 -0
  42. package/lib/Network.js.map +1 -0
  43. package/lib/Providers.d.ts +21 -0
  44. package/lib/Providers.d.ts.map +1 -0
  45. package/lib/Providers.js +26 -0
  46. package/lib/Providers.js.map +1 -0
  47. package/lib/Registry.d.ts +47 -0
  48. package/lib/Registry.d.ts.map +1 -0
  49. package/lib/Registry.js +67 -0
  50. package/lib/Registry.js.map +1 -0
  51. package/lib/RegistryError.d.ts +21 -0
  52. package/lib/RegistryError.d.ts.map +1 -0
  53. package/lib/RegistryError.js +28 -0
  54. package/lib/RegistryError.js.map +1 -0
  55. package/lib/RemoteImage.d.ts +118 -0
  56. package/lib/RemoteImage.d.ts.map +1 -0
  57. package/lib/RemoteImage.js +164 -0
  58. package/lib/RemoteImage.js.map +1 -0
  59. package/lib/Service.d.ts +499 -0
  60. package/lib/Service.d.ts.map +1 -0
  61. package/lib/Service.js +730 -0
  62. package/lib/Service.js.map +1 -0
  63. package/lib/ServiceImage.d.ts +78 -0
  64. package/lib/ServiceImage.d.ts.map +1 -0
  65. package/lib/ServiceImage.js +162 -0
  66. package/lib/ServiceImage.js.map +1 -0
  67. package/lib/Swarm.d.ts +119 -0
  68. package/lib/Swarm.d.ts.map +1 -0
  69. package/lib/Swarm.js +148 -0
  70. package/lib/Swarm.js.map +1 -0
  71. package/lib/Volume.d.ts +94 -0
  72. package/lib/Volume.d.ts.map +1 -0
  73. package/lib/Volume.js +133 -0
  74. package/lib/Volume.js.map +1 -0
  75. package/lib/index.d.ts +14 -0
  76. package/lib/index.d.ts.map +1 -0
  77. package/lib/index.js +13 -0
  78. package/lib/index.js.map +1 -0
  79. package/package.json +58 -3
  80. package/src/Bootstrap.ts +51 -0
  81. package/src/BuildHash.ts +265 -0
  82. package/src/Container.ts +1118 -0
  83. package/src/Context.ts +215 -0
  84. package/src/Docker.ts +1173 -0
  85. package/src/Dockerfile.ts +81 -0
  86. package/src/HealthcheckCommand.ts +35 -0
  87. package/src/Image.ts +322 -0
  88. package/src/ImageSource.ts +842 -0
  89. package/src/Network.ts +169 -0
  90. package/src/Providers.ts +46 -0
  91. package/src/Registry.ts +91 -0
  92. package/src/RegistryError.ts +48 -0
  93. package/src/RemoteImage.ts +255 -0
  94. package/src/Service.ts +1264 -0
  95. package/src/ServiceImage.ts +252 -0
  96. package/src/Swarm.ts +221 -0
  97. package/src/Volume.ts +193 -0
  98. package/src/index.ts +17 -0
@@ -0,0 +1,288 @@
1
+ import { AlchemyContext } from "alchemy/AlchemyContext";
2
+ import * as Bundle from "alchemy/Bundle/Bundle";
3
+ import * as Effect from "effect/Effect";
4
+ import * as FileSystem from "effect/FileSystem";
5
+ import * as Path from "effect/Path";
6
+ import type * as Redacted from "effect/Redacted";
7
+ import type * as rolldown from "rolldown";
8
+ import { Docker, type RegistryCredentials } from "./Docker.ts";
9
+ import { type InlineDockerfile } from "./Dockerfile.ts";
10
+ /**
11
+ * INTERNAL — registry-agnostic container image-source machinery shared by
12
+ * the container platforms (`AWS.ECS.*`, `AWS.EKS.*` via ECR, and
13
+ * `Kubernetes.*` workloads pushing to any registry).
14
+ *
15
+ * NOT exported from any barrel. Consumers import the module path directly.
16
+ *
17
+ * A platform's props separate the ENVIRONMENT (what the container is) from
18
+ * the PROGRAM (`main` — "and run my bundled Effect program in it"):
19
+ *
20
+ * - environment (at most one): `image` (registry ref) | `context` +
21
+ * `dockerfile`-as-path (docker build) | inline `dockerfile` content
22
+ * (`Dockerfile.inline`) | the default bun base when `main` stands alone.
23
+ * - `main` present → the bundle is injected into the environment (COPY +
24
+ * ENTRYPOINT) and pushed as a derived image. `main` absent → the
25
+ * environment runs verbatim: `image` is mirrored (docker pull → tag →
26
+ * push, content-addressed on the ref), a Dockerfile builds as-is.
27
+ *
28
+ * Where images land is an {@link ImageRegistryTarget}: ECR supplies one that
29
+ * auto-creates a private repository; a plain registry (a local `registry`
30
+ * container, GHCR, Docker Hub, …) supplies one that pushes to
31
+ * `<server>/<name>`.
32
+ */
33
+ /**
34
+ * Bundle an Effect program into a generated image. Alchemy bundles `main`
35
+ * with rolldown and bakes it into a Dockerfile generated from the
36
+ * environment (`image`, `dockerfile`, or the default bun base).
37
+ */
38
+ export interface BundledImageSource {
39
+ /**
40
+ * Module entrypoint for the bundled program. This should typically be
41
+ * `import.meta.url` from an inline Effect program.
42
+ */
43
+ main: string;
44
+ /**
45
+ * Environment image: used as the generated Dockerfile's `FROM`. Any
46
+ * registry ref works (private non-ECR registries require docker
47
+ * credentials on the build machine); the image must be able to run the
48
+ * bun runtime. Exclusive with {@link dockerfile} / {@link context}.
49
+ * @default "oven/bun:1"
50
+ */
51
+ image?: string;
52
+ /**
53
+ * Environment Dockerfile: a string is a PATH (built in {@link context},
54
+ * then the bundle is layered on top in a second stage); an
55
+ * {@link InlineDockerfile} is inline content used as the environment
56
+ * preamble (built with no context — its own `COPY`s are unsupported).
57
+ * The resulting environment must be able to run the bun runtime.
58
+ * Exclusive with {@link image}.
59
+ */
60
+ dockerfile?: string | InlineDockerfile;
61
+ /**
62
+ * Build context for a path {@link dockerfile} environment. Exclusive
63
+ * with {@link image} and inline dockerfiles.
64
+ */
65
+ context?: string;
66
+ /**
67
+ * Named export to load from `main`.
68
+ * @default "default"
69
+ */
70
+ handler?: string;
71
+ /**
72
+ * Bundler configuration for the entrypoint. Unused code is tree-shaken.
73
+ * `effect`, alchemy, and `@distilled.cloud` are marked pure so unused
74
+ * parts prune more aggressively. List extra packages with
75
+ * `pure.packages`, or disable with `pure: false`.
76
+ */
77
+ build?: Bundle.BundleConfig;
78
+ }
79
+ /**
80
+ * Build arguments and BuildKit secrets for an image built from the user's
81
+ * own Dockerfile (`context` / `dockerfile`).
82
+ */
83
+ export interface DockerfileBuild {
84
+ /**
85
+ * Docker build arguments (`--build-arg`), read by `ARG` instructions.
86
+ * They are part of the image's content hash, so changing one rebuilds the
87
+ * image. Never pass secrets here: build args are visible in the image
88
+ * history. Use {@link secrets} instead.
89
+ */
90
+ args?: Record<string, string>;
91
+ /**
92
+ * BuildKit secrets, keyed by id. Mount one in a `RUN` step with
93
+ * `--mount=type=secret,id=<id>` and read it from `/run/secrets/<id>`, or
94
+ * add `env=<NAME>` to expose it as an environment variable for that step.
95
+ *
96
+ * A secret never enters the image, its build history, or `docker`'s argv.
97
+ * Secrets are left out of the image's content hash, so rotating one does
98
+ * not rebuild the image.
99
+ */
100
+ secrets?: Record<string, Redacted.Redacted<string>>;
101
+ }
102
+ /** The `build` prop of a source built from the user's own Dockerfile. */
103
+ export interface DockerfileBuildOptions {
104
+ /** Build arguments and BuildKit secrets for the Dockerfile build. */
105
+ build?: DockerfileBuild;
106
+ }
107
+ /**
108
+ * Build the image from the user's own Dockerfile and build context — no
109
+ * Effect program is bundled.
110
+ */
111
+ export interface DockerfileImageSource extends DockerfileBuildOptions {
112
+ /**
113
+ * Docker build context directory. Optional when {@link dockerfile} is
114
+ * inline content (which builds with an empty context).
115
+ */
116
+ context?: string;
117
+ /**
118
+ * Path to the Dockerfile relative to the cwd (NOT the context), or
119
+ * {@link InlineDockerfile} content. The Dockerfile must define its own
120
+ * `CMD`/`ENTRYPOINT` (no program is injected).
121
+ * @default `${context}/Dockerfile`
122
+ */
123
+ dockerfile?: string | InlineDockerfile;
124
+ }
125
+ /**
126
+ * Run a pre-built registry image. Registry-backed platforms may mirror it
127
+ * into their own registry (ECR: docker pull → tag → push).
128
+ */
129
+ export interface RegistryImageSource {
130
+ /**
131
+ * A pre-built image reference, e.g.
132
+ * `public.ecr.aws/docker/library/busybox:stable`.
133
+ */
134
+ image: string;
135
+ }
136
+ /**
137
+ * The image-source union. Discriminated by presence: exactly one of
138
+ * `main`, `context`, or `image`.
139
+ */
140
+ export type ImageSourceProps = BundledImageSource | DockerfileImageSource | RegistryImageSource;
141
+ /** Loose bag shape used to sniff which source variant a props object is. */
142
+ export interface ImageSourceLike {
143
+ main?: string;
144
+ handler?: string;
145
+ /** Bundler config for `main`; Docker build args and secrets for `context`. */
146
+ build?: Bundle.BundleConfig & DockerfileBuild;
147
+ context?: string;
148
+ dockerfile?: string | InlineDockerfile;
149
+ image?: string;
150
+ }
151
+ export type ImageSourceKind = "main" | "context" | "image";
152
+ /**
153
+ * Which image source a props bag declares. `main` always wins (the other
154
+ * fields then describe its ENVIRONMENT); without `main`, `image` is the
155
+ * mirrored-verbatim source and any `context`/`dockerfile` (path or inline)
156
+ * is an external docker build.
157
+ */
158
+ export declare const imageSourceKind: (source: ImageSourceLike) => ImageSourceKind | undefined;
159
+ declare const DockerfileBuildConflict_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
160
+ readonly _tag: "DockerfileBuildConflict";
161
+ } & Readonly<A>;
162
+ /**
163
+ * `build.args` or `build.secrets` set on an image that is not built from the
164
+ * user's own Dockerfile: a `main` program or a pre-built `image`.
165
+ */
166
+ export declare class DockerfileBuildConflict extends DockerfileBuildConflict_base<{
167
+ readonly id: string;
168
+ readonly source: "main" | "image";
169
+ }> {
170
+ get message(): string;
171
+ }
172
+ /**
173
+ * Dies with {@link DockerfileBuildConflict} when `build.args` or
174
+ * `build.secrets` are set alongside `main` or `image`.
175
+ */
176
+ export declare const validateDockerfileBuild: (id: string, source: {
177
+ main?: string;
178
+ image?: string;
179
+ build?: DockerfileBuild;
180
+ }) => Effect.Effect<void>;
181
+ /**
182
+ * Validate environment-source exclusivity. Dies (plan-time defect) on
183
+ * `image`+`dockerfile`, `image`+`context`, inline-`dockerfile`+`context`, or
184
+ * build args/secrets without a Dockerfile build.
185
+ */
186
+ export declare const validateImageSource: (id: string, source: ImageSourceLike) => Effect.Effect<void>;
187
+ /**
188
+ * Where a resolved image is pushed. Each field is an Effect so a target can
189
+ * create resources lazily (ECR creates the repository on first use).
190
+ */
191
+ export interface ImageRegistryTarget<R = never> {
192
+ /** The repository URI images are tagged into (`<repositoryUri>:<hash>`). */
193
+ readonly repositoryUri: Effect.Effect<string, any, R>;
194
+ /**
195
+ * Whether the content-addressed tag is already in the registry. `true`
196
+ * skips the build and push entirely.
197
+ */
198
+ readonly hasTag: (tag: string) => Effect.Effect<boolean, any, R>;
199
+ /**
200
+ * Push credentials. `undefined` pushes with the build machine's own
201
+ * Docker configuration (`docker login`, credential helpers).
202
+ */
203
+ readonly credentials: Effect.Effect<RegistryCredentials | undefined, any, R>;
204
+ }
205
+ export interface ResolveContainerImageOptions {
206
+ /** Logical resource id — keys the stable build-context directory. */
207
+ id: string;
208
+ /**
209
+ * The props bag carrying the image source fields (`main` / `context` /
210
+ * `image` plus their modifiers).
211
+ */
212
+ source: ImageSourceLike;
213
+ /**
214
+ * Target image platform.
215
+ * @default "linux/amd64"
216
+ */
217
+ platform?: string;
218
+ /**
219
+ * Port the generated Dockerfile should `ENV PORT=` + `EXPOSE`
220
+ * (`main` source only).
221
+ */
222
+ port?: number;
223
+ /**
224
+ * True when the resource was declared without an inline Effect impl —
225
+ * `main` is then bundled as-is without the virtual-entry bootstrap.
226
+ */
227
+ isExternal?: boolean;
228
+ /**
229
+ * The virtual-entry bootstrap wrapped around `main` for Effect-native
230
+ * programs: receives the resolved entry import path and returns the
231
+ * generated entry module source.
232
+ */
233
+ bootstrap: (importPath: string) => string;
234
+ /** Plan-status session used to emit build/push progress notes. */
235
+ session: {
236
+ note: (message: string) => Effect.Effect<void>;
237
+ };
238
+ }
239
+ /**
240
+ * Content hash for the sources whose identity is computable WITHOUT running
241
+ * a bundler:
242
+ *
243
+ * - `context` — hash of the build-context directory + Dockerfile content +
244
+ * platform.
245
+ * - `image` — hash of the image reference + platform (re-mirror only when
246
+ * the ref changes).
247
+ * - `main` — `undefined`: the hash comes from the bundle output, so it is
248
+ * only known inside `resolve`.
249
+ *
250
+ * Providers use this in `diff` to surface content drift (files changed under
251
+ * an unchanged `context` path) as an update.
252
+ */
253
+ export declare const computeStaticSourceHash: (source: ImageSourceLike, platform?: string | undefined) => Effect.Effect<string | undefined, import("effect/PlatformError").PlatformError, FileSystem.FileSystem | Path.Path>;
254
+ /**
255
+ * Init-time constructor for the image-source resolver. Resolves the services
256
+ * that are only available at provider-layer construction (Docker, the
257
+ * `.alchemy` directory, the rolldown virtual-entry plugin) and returns
258
+ * `resolve` (build/mirror + push to an {@link ImageRegistryTarget}), `hash`,
259
+ * and `watchMain`.
260
+ */
261
+ export declare const makeContainerImageSource: Effect.Effect<{
262
+ resolve: <R>(options: ResolveContainerImageOptions, target: ImageRegistryTarget<R>) => Effect.Effect<{
263
+ imageUri: string;
264
+ repositoryUri: string;
265
+ codeHash: string;
266
+ }, any, R | FileSystem.FileSystem | Path.Path | import("alchemy/Stack").Stack | import("alchemy/Stage").Stage>;
267
+ hash: (options: {
268
+ source: ImageSourceLike;
269
+ platform?: string;
270
+ port?: number;
271
+ isExternal?: boolean;
272
+ bootstrap: (importPath: string) => string;
273
+ }) => Effect.Effect<string | undefined, Bundle.BundleError | import("effect/PlatformError").PlatformError, FileSystem.FileSystem | Path.Path>;
274
+ watchMain: (options: {
275
+ source: BundledImageSource;
276
+ isExternal?: boolean;
277
+ bootstrap: (importPath: string) => string;
278
+ }) => Effect.Effect<{
279
+ inputOptions: rolldown.InputOptions;
280
+ outputOptions: rolldown.OutputOptions;
281
+ extra: Bundle.BundleConfig | undefined;
282
+ }, import("effect/PlatformError").PlatformError, FileSystem.FileSystem | Path.Path>;
283
+ }, never, AlchemyContext | Docker | Path.Path>;
284
+ /** The resolver service returned by {@link makeContainerImageSource}. */
285
+ export interface ContainerImageSource extends Effect.Success<typeof makeContainerImageSource> {
286
+ }
287
+ export {};
288
+ //# sourceMappingURL=ImageSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageSource.d.ts","sourceRoot":"","sources":["../src/ImageSource.ts"],"names":[],"mappings":"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"}