@lakutata/docker 3.0.0-beta.0
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/LICENSE +23 -0
- package/README.md +309 -0
- package/THIRD_PARTY_NOTICES.md +299 -0
- package/dist/cjs/client/BuildContext.d.ts +22 -0
- package/dist/cjs/client/BuildContext.js +76 -0
- package/dist/cjs/client/BuildKitProgress.d.ts +81 -0
- package/dist/cjs/client/BuildKitProgress.js +195 -0
- package/dist/cjs/client/DockerClient.d.ts +196 -0
- package/dist/cjs/client/DockerClient.js +312 -0
- package/dist/cjs/client/DockerConnection.d.ts +154 -0
- package/dist/cjs/client/DockerConnection.js +397 -0
- package/dist/cjs/client/DockerIgnore.d.ts +44 -0
- package/dist/cjs/client/DockerIgnore.js +186 -0
- package/dist/cjs/client/DockerRequestError.d.ts +17 -0
- package/dist/cjs/client/DockerRequestError.js +24 -0
- package/dist/cjs/client/DockerStreams.d.ts +35 -0
- package/dist/cjs/client/DockerStreams.js +117 -0
- package/dist/cjs/client/types/ContainerCreateResponse.d.ts +7 -0
- package/dist/cjs/client/types/ContainerCreateResponse.js +2 -0
- package/dist/cjs/client/types/ContainerStopQuery.d.ts +13 -0
- package/dist/cjs/client/types/ContainerStopQuery.js +2 -0
- package/dist/cjs/client/types/DeviceMapping.d.ts +8 -0
- package/dist/cjs/client/types/DeviceMapping.js +2 -0
- package/dist/cjs/client/types/IdResponse.d.ts +6 -0
- package/dist/cjs/client/types/IdResponse.js +2 -0
- package/dist/cjs/client/types/NetworkCreateResponse.d.ts +7 -0
- package/dist/cjs/client/types/NetworkCreateResponse.js +2 -0
- package/dist/cjs/client/types/PortBinding.d.ts +10 -0
- package/dist/cjs/client/types/PortBinding.js +2 -0
- package/dist/cjs/docker/ConnectionOptionsBuilder.d.ts +128 -0
- package/dist/cjs/docker/ConnectionOptionsBuilder.js +150 -0
- package/dist/cjs/docker/Docker.d.ts +301 -0
- package/dist/cjs/docker/Docker.js +703 -0
- package/dist/cjs/docker/exceptions/DockerConnectionException.d.ts +9 -0
- package/dist/cjs/docker/exceptions/DockerConnectionException.js +16 -0
- package/dist/cjs/docker/exceptions/DockerContainerNotFoundException.d.ts +9 -0
- package/dist/cjs/docker/exceptions/DockerContainerNotFoundException.js +16 -0
- package/dist/cjs/docker/exceptions/DockerImageBuildException.d.ts +9 -0
- package/dist/cjs/docker/exceptions/DockerImageBuildException.js +16 -0
- package/dist/cjs/docker/exceptions/DockerImageImportException.d.ts +9 -0
- package/dist/cjs/docker/exceptions/DockerImageImportException.js +16 -0
- package/dist/cjs/docker/exceptions/DockerImageNotFoundException.d.ts +10 -0
- package/dist/cjs/docker/exceptions/DockerImageNotFoundException.js +17 -0
- package/dist/cjs/docker/exceptions/DockerImagePullException.d.ts +9 -0
- package/dist/cjs/docker/exceptions/DockerImagePullException.js +16 -0
- package/dist/cjs/docker/exceptions/DockerImagePushException.d.ts +8 -0
- package/dist/cjs/docker/exceptions/DockerImagePushException.js +15 -0
- package/dist/cjs/docker/exceptions/DockerImageRepoTagNotFoundException.d.ts +8 -0
- package/dist/cjs/docker/exceptions/DockerImageRepoTagNotFoundException.js +15 -0
- package/dist/cjs/docker/exceptions/DockerNetworkNotFoundException.d.ts +9 -0
- package/dist/cjs/docker/exceptions/DockerNetworkNotFoundException.js +16 -0
- package/dist/cjs/docker/exceptions/DockerRequestException.d.ts +22 -0
- package/dist/cjs/docker/exceptions/DockerRequestException.js +24 -0
- package/dist/cjs/docker/interfaces/IDockerConnectionOptions.d.ts +75 -0
- package/dist/cjs/docker/interfaces/IDockerConnectionOptions.js +2 -0
- package/dist/cjs/docker/interfaces/IDockerHttpConnectionOptions.d.ts +16 -0
- package/dist/cjs/docker/interfaces/IDockerHttpConnectionOptions.js +2 -0
- package/dist/cjs/docker/interfaces/IDockerHttpsConnectionOptions.d.ts +16 -0
- package/dist/cjs/docker/interfaces/IDockerHttpsConnectionOptions.js +2 -0
- package/dist/cjs/docker/interfaces/IDockerKeyObject.d.ts +14 -0
- package/dist/cjs/docker/interfaces/IDockerKeyObject.js +2 -0
- package/dist/cjs/docker/interfaces/IDockerSSHConnectionOptions.d.ts +16 -0
- package/dist/cjs/docker/interfaces/IDockerSSHConnectionOptions.js +2 -0
- package/dist/cjs/docker/interfaces/IDockerSocketConnectionOptions.d.ts +7 -0
- package/dist/cjs/docker/interfaces/IDockerSocketConnectionOptions.js +2 -0
- package/dist/cjs/docker/lib/DockerContainer.d.ts +315 -0
- package/dist/cjs/docker/lib/DockerContainer.js +742 -0
- package/dist/cjs/docker/lib/DockerContainerTTY.d.ts +99 -0
- package/dist/cjs/docker/lib/DockerContainerTTY.js +157 -0
- package/dist/cjs/docker/lib/DockerImage.d.ts +153 -0
- package/dist/cjs/docker/lib/DockerImage.js +273 -0
- package/dist/cjs/docker/lib/EngineSettings.d.ts +41 -0
- package/dist/cjs/docker/lib/EngineSettings.js +86 -0
- package/dist/cjs/docker/lib/ParseBaseImages.d.ts +9 -0
- package/dist/cjs/docker/lib/ParseBaseImages.js +50 -0
- package/dist/cjs/docker/lib/ParseEnvToRecord.d.ts +14 -0
- package/dist/cjs/docker/lib/ParseEnvToRecord.js +25 -0
- package/dist/cjs/docker/lib/ParseRepositoryTag.d.ts +17 -0
- package/dist/cjs/docker/lib/ParseRepositoryTag.js +48 -0
- package/dist/cjs/docker/lib/RegistryAuth.d.ts +8 -0
- package/dist/cjs/docker/lib/RegistryAuth.js +15 -0
- package/dist/cjs/docker/options/DockerPruneOptions.d.ts +38 -0
- package/dist/cjs/docker/options/DockerPruneOptions.js +47 -0
- package/dist/cjs/docker/options/auth/DockerAuthOptions.d.ts +46 -0
- package/dist/cjs/docker/options/auth/DockerAuthOptions.js +59 -0
- package/dist/cjs/docker/options/container/ContainerCommitOptions.d.ts +28 -0
- package/dist/cjs/docker/options/container/ContainerCommitOptions.js +39 -0
- package/dist/cjs/docker/options/container/ContainerCreateTTYOptions.d.ts +32 -0
- package/dist/cjs/docker/options/container/ContainerCreateTTYOptions.js +43 -0
- package/dist/cjs/docker/options/container/ContainerExecOptions.d.ts +26 -0
- package/dist/cjs/docker/options/container/ContainerExecOptions.js +38 -0
- package/dist/cjs/docker/options/container/ContainerExportDirectoryOptions.d.ts +27 -0
- package/dist/cjs/docker/options/container/ContainerExportDirectoryOptions.js +39 -0
- package/dist/cjs/docker/options/container/ContainerKillOptions.d.ts +25 -0
- package/dist/cjs/docker/options/container/ContainerKillOptions.js +36 -0
- package/dist/cjs/docker/options/container/ContainerLogsOptions.d.ts +48 -0
- package/dist/cjs/docker/options/container/ContainerLogsOptions.js +56 -0
- package/dist/cjs/docker/options/container/ContainerRemoveOptions.d.ts +22 -0
- package/dist/cjs/docker/options/container/ContainerRemoveOptions.js +34 -0
- package/dist/cjs/docker/options/container/ContainerSettingOptions.d.ts +137 -0
- package/dist/cjs/docker/options/container/ContainerSettingOptions.js +136 -0
- package/dist/cjs/docker/options/container/ContainerStopOptions.d.ts +28 -0
- package/dist/cjs/docker/options/container/ContainerStopOptions.js +40 -0
- package/dist/cjs/docker/options/container/ContainerTTYConsoleSizeOptions.d.ts +26 -0
- package/dist/cjs/docker/options/container/ContainerTTYConsoleSizeOptions.js +40 -0
- package/dist/cjs/docker/options/image/ImageBuildOptions.d.ts +117 -0
- package/dist/cjs/docker/options/image/ImageBuildOptions.js +111 -0
- package/dist/cjs/docker/options/image/ImageExportOptions.d.ts +33 -0
- package/dist/cjs/docker/options/image/ImageExportOptions.js +44 -0
- package/dist/cjs/docker/options/image/ImageImportOptions.d.ts +28 -0
- package/dist/cjs/docker/options/image/ImageImportOptions.js +42 -0
- package/dist/cjs/docker/options/image/ImagePullOptions.d.ts +49 -0
- package/dist/cjs/docker/options/image/ImagePullOptions.js +63 -0
- package/dist/cjs/docker/options/image/ImagePushOptions.d.ts +41 -0
- package/dist/cjs/docker/options/image/ImagePushOptions.js +56 -0
- package/dist/cjs/docker/options/image/ImageRemoveOptions.d.ts +26 -0
- package/dist/cjs/docker/options/image/ImageRemoveOptions.js +38 -0
- package/dist/cjs/docker/options/image/ImageTagOptions.d.ts +25 -0
- package/dist/cjs/docker/options/image/ImageTagOptions.js +38 -0
- package/dist/cjs/docker/options/network/NetworkCreateOptions.d.ts +54 -0
- package/dist/cjs/docker/options/network/NetworkCreateOptions.js +63 -0
- package/dist/cjs/docker/types/ContainerBind.d.ts +19 -0
- package/dist/cjs/docker/types/ContainerBind.js +2 -0
- package/dist/cjs/docker/types/ContainerCapability.d.ts +286 -0
- package/dist/cjs/docker/types/ContainerCapability.js +290 -0
- package/dist/cjs/docker/types/ContainerConfig.d.ts +67 -0
- package/dist/cjs/docker/types/ContainerConfig.js +2 -0
- package/dist/cjs/docker/types/ContainerDevice.d.ts +19 -0
- package/dist/cjs/docker/types/ContainerDevice.js +2 -0
- package/dist/cjs/docker/types/ContainerExecResult.d.ts +20 -0
- package/dist/cjs/docker/types/ContainerExecResult.js +2 -0
- package/dist/cjs/docker/types/ContainerNetwork.d.ts +46 -0
- package/dist/cjs/docker/types/ContainerNetwork.js +2 -0
- package/dist/cjs/docker/types/ContainerPort.d.ts +25 -0
- package/dist/cjs/docker/types/ContainerPort.js +2 -0
- package/dist/cjs/docker/types/ContainerRestartPolicy.d.ts +11 -0
- package/dist/cjs/docker/types/ContainerRestartPolicy.js +2 -0
- package/dist/cjs/docker/types/ContainerState.d.ts +48 -0
- package/dist/cjs/docker/types/ContainerState.js +2 -0
- package/dist/cjs/docker/types/ContainerStats.d.ts +408 -0
- package/dist/cjs/docker/types/ContainerStats.js +2 -0
- package/dist/cjs/docker/types/DockerOutputCallback.d.ts +8 -0
- package/dist/cjs/docker/types/DockerOutputCallback.js +2 -0
- package/dist/cjs/docker/types/ImageConfig.d.ts +34 -0
- package/dist/cjs/docker/types/ImageConfig.js +2 -0
- package/dist/cjs/docker/types/ImageExposePort.d.ts +17 -0
- package/dist/cjs/docker/types/ImageExposePort.js +2 -0
- package/dist/cjs/docker/types/NetworkInfo.d.ts +59 -0
- package/dist/cjs/docker/types/NetworkInfo.js +2 -0
- package/dist/cjs/docker/types/RepositoryTag.d.ts +15 -0
- package/dist/cjs/docker/types/RepositoryTag.js +2 -0
- package/dist/cjs/exports/Docker.d.ts +73 -0
- package/dist/cjs/exports/Docker.js +92 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/client/BuildContext.js +70 -0
- package/dist/esm/client/BuildKitProgress.js +190 -0
- package/dist/esm/client/DockerClient.js +307 -0
- package/dist/esm/client/DockerConnection.js +355 -0
- package/dist/esm/client/DockerIgnore.js +179 -0
- package/dist/esm/client/DockerRequestError.js +20 -0
- package/dist/esm/client/DockerStreams.js +111 -0
- package/dist/esm/client/types/ContainerCreateResponse.js +1 -0
- package/dist/esm/client/types/ContainerStopQuery.js +1 -0
- package/dist/esm/client/types/DeviceMapping.js +1 -0
- package/dist/esm/client/types/IdResponse.js +1 -0
- package/dist/esm/client/types/NetworkCreateResponse.js +1 -0
- package/dist/esm/client/types/PortBinding.js +1 -0
- package/dist/esm/docker/ConnectionOptionsBuilder.js +142 -0
- package/dist/esm/docker/Docker.js +697 -0
- package/dist/esm/docker/exceptions/DockerConnectionException.js +12 -0
- package/dist/esm/docker/exceptions/DockerContainerNotFoundException.js +12 -0
- package/dist/esm/docker/exceptions/DockerImageBuildException.js +12 -0
- package/dist/esm/docker/exceptions/DockerImageImportException.js +12 -0
- package/dist/esm/docker/exceptions/DockerImageNotFoundException.js +13 -0
- package/dist/esm/docker/exceptions/DockerImagePullException.js +12 -0
- package/dist/esm/docker/exceptions/DockerImagePushException.js +11 -0
- package/dist/esm/docker/exceptions/DockerImageRepoTagNotFoundException.js +11 -0
- package/dist/esm/docker/exceptions/DockerNetworkNotFoundException.js +12 -0
- package/dist/esm/docker/exceptions/DockerRequestException.js +20 -0
- package/dist/esm/docker/interfaces/IDockerConnectionOptions.js +1 -0
- package/dist/esm/docker/interfaces/IDockerHttpConnectionOptions.js +1 -0
- package/dist/esm/docker/interfaces/IDockerHttpsConnectionOptions.js +1 -0
- package/dist/esm/docker/interfaces/IDockerKeyObject.js +1 -0
- package/dist/esm/docker/interfaces/IDockerSSHConnectionOptions.js +1 -0
- package/dist/esm/docker/interfaces/IDockerSocketConnectionOptions.js +1 -0
- package/dist/esm/docker/lib/DockerContainer.js +739 -0
- package/dist/esm/docker/lib/DockerContainerTTY.js +154 -0
- package/dist/esm/docker/lib/DockerImage.js +270 -0
- package/dist/esm/docker/lib/EngineSettings.js +78 -0
- package/dist/esm/docker/lib/ParseBaseImages.js +47 -0
- package/dist/esm/docker/lib/ParseEnvToRecord.js +22 -0
- package/dist/esm/docker/lib/ParseRepositoryTag.js +45 -0
- package/dist/esm/docker/lib/RegistryAuth.js +12 -0
- package/dist/esm/docker/options/DockerPruneOptions.js +43 -0
- package/dist/esm/docker/options/auth/DockerAuthOptions.js +55 -0
- package/dist/esm/docker/options/container/ContainerCommitOptions.js +35 -0
- package/dist/esm/docker/options/container/ContainerCreateTTYOptions.js +39 -0
- package/dist/esm/docker/options/container/ContainerExecOptions.js +34 -0
- package/dist/esm/docker/options/container/ContainerExportDirectoryOptions.js +35 -0
- package/dist/esm/docker/options/container/ContainerKillOptions.js +32 -0
- package/dist/esm/docker/options/container/ContainerLogsOptions.js +52 -0
- package/dist/esm/docker/options/container/ContainerRemoveOptions.js +30 -0
- package/dist/esm/docker/options/container/ContainerSettingOptions.js +132 -0
- package/dist/esm/docker/options/container/ContainerStopOptions.js +36 -0
- package/dist/esm/docker/options/container/ContainerTTYConsoleSizeOptions.js +36 -0
- package/dist/esm/docker/options/image/ImageBuildOptions.js +107 -0
- package/dist/esm/docker/options/image/ImageExportOptions.js +40 -0
- package/dist/esm/docker/options/image/ImageImportOptions.js +38 -0
- package/dist/esm/docker/options/image/ImagePullOptions.js +59 -0
- package/dist/esm/docker/options/image/ImagePushOptions.js +52 -0
- package/dist/esm/docker/options/image/ImageRemoveOptions.js +34 -0
- package/dist/esm/docker/options/image/ImageTagOptions.js +34 -0
- package/dist/esm/docker/options/network/NetworkCreateOptions.js +59 -0
- package/dist/esm/docker/types/ContainerBind.js +1 -0
- package/dist/esm/docker/types/ContainerCapability.js +287 -0
- package/dist/esm/docker/types/ContainerConfig.js +1 -0
- package/dist/esm/docker/types/ContainerDevice.js +1 -0
- package/dist/esm/docker/types/ContainerExecResult.js +1 -0
- package/dist/esm/docker/types/ContainerNetwork.js +1 -0
- package/dist/esm/docker/types/ContainerPort.js +1 -0
- package/dist/esm/docker/types/ContainerRestartPolicy.js +1 -0
- package/dist/esm/docker/types/ContainerState.js +1 -0
- package/dist/esm/docker/types/ContainerStats.js +1 -0
- package/dist/esm/docker/types/DockerOutputCallback.js +1 -0
- package/dist/esm/docker/types/ImageConfig.js +1 -0
- package/dist/esm/docker/types/ImageExposePort.js +1 -0
- package/dist/esm/docker/types/NetworkInfo.js +1 -0
- package/dist/esm/docker/types/RepositoryTag.js +1 -0
- package/dist/esm/exports/Docker.js +73 -0
- package/dist/types/client/BuildContext.d.ts +22 -0
- package/dist/types/client/BuildKitProgress.d.ts +81 -0
- package/dist/types/client/DockerClient.d.ts +196 -0
- package/dist/types/client/DockerConnection.d.ts +154 -0
- package/dist/types/client/DockerIgnore.d.ts +44 -0
- package/dist/types/client/DockerRequestError.d.ts +17 -0
- package/dist/types/client/DockerStreams.d.ts +35 -0
- package/dist/types/client/types/ContainerCreateResponse.d.ts +7 -0
- package/dist/types/client/types/ContainerStopQuery.d.ts +13 -0
- package/dist/types/client/types/DeviceMapping.d.ts +8 -0
- package/dist/types/client/types/IdResponse.d.ts +6 -0
- package/dist/types/client/types/NetworkCreateResponse.d.ts +7 -0
- package/dist/types/client/types/PortBinding.d.ts +10 -0
- package/dist/types/docker/ConnectionOptionsBuilder.d.ts +128 -0
- package/dist/types/docker/Docker.d.ts +301 -0
- package/dist/types/docker/exceptions/DockerConnectionException.d.ts +9 -0
- package/dist/types/docker/exceptions/DockerContainerNotFoundException.d.ts +9 -0
- package/dist/types/docker/exceptions/DockerImageBuildException.d.ts +9 -0
- package/dist/types/docker/exceptions/DockerImageImportException.d.ts +9 -0
- package/dist/types/docker/exceptions/DockerImageNotFoundException.d.ts +10 -0
- package/dist/types/docker/exceptions/DockerImagePullException.d.ts +9 -0
- package/dist/types/docker/exceptions/DockerImagePushException.d.ts +8 -0
- package/dist/types/docker/exceptions/DockerImageRepoTagNotFoundException.d.ts +8 -0
- package/dist/types/docker/exceptions/DockerNetworkNotFoundException.d.ts +9 -0
- package/dist/types/docker/exceptions/DockerRequestException.d.ts +22 -0
- package/dist/types/docker/interfaces/IDockerConnectionOptions.d.ts +75 -0
- package/dist/types/docker/interfaces/IDockerHttpConnectionOptions.d.ts +16 -0
- package/dist/types/docker/interfaces/IDockerHttpsConnectionOptions.d.ts +16 -0
- package/dist/types/docker/interfaces/IDockerKeyObject.d.ts +14 -0
- package/dist/types/docker/interfaces/IDockerSSHConnectionOptions.d.ts +16 -0
- package/dist/types/docker/interfaces/IDockerSocketConnectionOptions.d.ts +7 -0
- package/dist/types/docker/lib/DockerContainer.d.ts +315 -0
- package/dist/types/docker/lib/DockerContainerTTY.d.ts +99 -0
- package/dist/types/docker/lib/DockerImage.d.ts +153 -0
- package/dist/types/docker/lib/EngineSettings.d.ts +41 -0
- package/dist/types/docker/lib/ParseBaseImages.d.ts +9 -0
- package/dist/types/docker/lib/ParseEnvToRecord.d.ts +14 -0
- package/dist/types/docker/lib/ParseRepositoryTag.d.ts +17 -0
- package/dist/types/docker/lib/RegistryAuth.d.ts +8 -0
- package/dist/types/docker/options/DockerPruneOptions.d.ts +38 -0
- package/dist/types/docker/options/auth/DockerAuthOptions.d.ts +46 -0
- package/dist/types/docker/options/container/ContainerCommitOptions.d.ts +28 -0
- package/dist/types/docker/options/container/ContainerCreateTTYOptions.d.ts +32 -0
- package/dist/types/docker/options/container/ContainerExecOptions.d.ts +26 -0
- package/dist/types/docker/options/container/ContainerExportDirectoryOptions.d.ts +27 -0
- package/dist/types/docker/options/container/ContainerKillOptions.d.ts +25 -0
- package/dist/types/docker/options/container/ContainerLogsOptions.d.ts +48 -0
- package/dist/types/docker/options/container/ContainerRemoveOptions.d.ts +22 -0
- package/dist/types/docker/options/container/ContainerSettingOptions.d.ts +137 -0
- package/dist/types/docker/options/container/ContainerStopOptions.d.ts +28 -0
- package/dist/types/docker/options/container/ContainerTTYConsoleSizeOptions.d.ts +26 -0
- package/dist/types/docker/options/image/ImageBuildOptions.d.ts +117 -0
- package/dist/types/docker/options/image/ImageExportOptions.d.ts +33 -0
- package/dist/types/docker/options/image/ImageImportOptions.d.ts +28 -0
- package/dist/types/docker/options/image/ImagePullOptions.d.ts +49 -0
- package/dist/types/docker/options/image/ImagePushOptions.d.ts +41 -0
- package/dist/types/docker/options/image/ImageRemoveOptions.d.ts +26 -0
- package/dist/types/docker/options/image/ImageTagOptions.d.ts +25 -0
- package/dist/types/docker/options/network/NetworkCreateOptions.d.ts +54 -0
- package/dist/types/docker/types/ContainerBind.d.ts +19 -0
- package/dist/types/docker/types/ContainerCapability.d.ts +286 -0
- package/dist/types/docker/types/ContainerConfig.d.ts +67 -0
- package/dist/types/docker/types/ContainerDevice.d.ts +19 -0
- package/dist/types/docker/types/ContainerExecResult.d.ts +20 -0
- package/dist/types/docker/types/ContainerNetwork.d.ts +46 -0
- package/dist/types/docker/types/ContainerPort.d.ts +25 -0
- package/dist/types/docker/types/ContainerRestartPolicy.d.ts +11 -0
- package/dist/types/docker/types/ContainerState.d.ts +48 -0
- package/dist/types/docker/types/ContainerStats.d.ts +408 -0
- package/dist/types/docker/types/DockerOutputCallback.d.ts +8 -0
- package/dist/types/docker/types/ImageConfig.d.ts +34 -0
- package/dist/types/docker/types/ImageExposePort.d.ts +17 -0
- package/dist/types/docker/types/NetworkInfo.d.ts +59 -0
- package/dist/types/docker/types/RepositoryTag.d.ts +15 -0
- package/dist/types/exports/Docker.d.ts +73 -0
- package/package.json +57 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ImageExposePort } from './ImageExposePort.js';
|
|
2
|
+
/**
|
|
3
|
+
* The run settings an image gives its containers by default, from its Dockerfile (`DockerImage.config`).
|
|
4
|
+
*/
|
|
5
|
+
export type ImageConfig = {
|
|
6
|
+
/**
|
|
7
|
+
* The containers' default host name, usually empty.
|
|
8
|
+
*/
|
|
9
|
+
hostname: string;
|
|
10
|
+
/**
|
|
11
|
+
* The user the containers' processes run as (`USER`: `"node"`, `"1000:1000"`), an empty string for root.
|
|
12
|
+
*/
|
|
13
|
+
user: string;
|
|
14
|
+
/**
|
|
15
|
+
* The environment variables (`ENV`), by name.
|
|
16
|
+
*/
|
|
17
|
+
env: Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* The default command (`CMD`), as its arguments. Docker reports `null` for an image without one.
|
|
20
|
+
*/
|
|
21
|
+
cmd: string[];
|
|
22
|
+
/**
|
|
23
|
+
* The entry point (`ENTRYPOINT`), as its arguments, empty when the image has none.
|
|
24
|
+
*/
|
|
25
|
+
entrypoint: string[];
|
|
26
|
+
/**
|
|
27
|
+
* The container paths of the image's volumes (`VOLUME`: `/var/lib/postgresql/data`).
|
|
28
|
+
*/
|
|
29
|
+
volumes: string[];
|
|
30
|
+
/**
|
|
31
|
+
* The exposed ports (`EXPOSE`).
|
|
32
|
+
*/
|
|
33
|
+
ports: ImageExposePort[];
|
|
34
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A port exposed by an image (its Dockerfile's `EXPOSE`), with its protocols (`DockerImage.config.ports`).
|
|
3
|
+
*/
|
|
4
|
+
export type ImageExposePort = {
|
|
5
|
+
/**
|
|
6
|
+
* The port in the container (`80`).
|
|
7
|
+
*/
|
|
8
|
+
port: number;
|
|
9
|
+
/**
|
|
10
|
+
* `true` when the port is exposed for TCP.
|
|
11
|
+
*/
|
|
12
|
+
tcp: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* `true` when the port is exposed for UDP.
|
|
15
|
+
*/
|
|
16
|
+
udp: boolean;
|
|
17
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Time } from '@lakutata/utils/Time';
|
|
2
|
+
/**
|
|
3
|
+
* An IP address range of a Docker network (its IPAM configuration): read from a network ({@link NetworkInfo}) and given
|
|
4
|
+
* to {@link NetworkCreateOptions.NetworkIPAMConfigs}.
|
|
5
|
+
*/
|
|
6
|
+
export type NetworkIPAMConfig = {
|
|
7
|
+
/**
|
|
8
|
+
* The network's subnet, in CIDR notation (`172.28.0.0/16`).
|
|
9
|
+
*/
|
|
10
|
+
subnet: string;
|
|
11
|
+
/**
|
|
12
|
+
* The part of the subnet Docker allocates the containers' addresses from, in CIDR notation (`172.28.5.0/24`); the
|
|
13
|
+
* whole subnet when absent.
|
|
14
|
+
*/
|
|
15
|
+
range?: string;
|
|
16
|
+
/**
|
|
17
|
+
* The gateway's IP address, without a prefix length (`172.28.0.1`).
|
|
18
|
+
*/
|
|
19
|
+
gateway: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* A Docker network, as {@link Docker.getNetwork}, {@link Docker.listNetworks} and {@link Docker.createNetwork} return
|
|
23
|
+
* it.
|
|
24
|
+
*/
|
|
25
|
+
export type NetworkInfo = {
|
|
26
|
+
/**
|
|
27
|
+
* The network ID.
|
|
28
|
+
*/
|
|
29
|
+
id: string;
|
|
30
|
+
/**
|
|
31
|
+
* The network name.
|
|
32
|
+
*/
|
|
33
|
+
name: string;
|
|
34
|
+
/**
|
|
35
|
+
* The network driver, as Docker reports it: `'bridge'`, `'ipvlan'` or `'macvlan'` for the networks created by this
|
|
36
|
+
* component; also `'host'`, `'null'` (the `none` network), `'overlay'` or a plugin's name for the others.
|
|
37
|
+
*/
|
|
38
|
+
driver: string;
|
|
39
|
+
/**
|
|
40
|
+
* `true` for the networks Docker creates itself: `bridge`, `host` and `none`.
|
|
41
|
+
*/
|
|
42
|
+
reserved: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* `true` when the network has no external access.
|
|
45
|
+
*/
|
|
46
|
+
internal: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* `true` when IPv6 is enabled on the network.
|
|
49
|
+
*/
|
|
50
|
+
enableIPv6: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* The network's address ranges, empty when it has none.
|
|
53
|
+
*/
|
|
54
|
+
IPAMConfigs: NetworkIPAMConfig[];
|
|
55
|
+
/**
|
|
56
|
+
* When the network was created.
|
|
57
|
+
*/
|
|
58
|
+
createdAt: Time;
|
|
59
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An image reference split into its repository and its tag, as {@link parseRepositoryTag} returns it.
|
|
3
|
+
*/
|
|
4
|
+
export type RepositoryTag = {
|
|
5
|
+
/**
|
|
6
|
+
* The repository, with its registry when the reference has one (`alpine`,
|
|
7
|
+
* `registry.example.com:5000/team/app`).
|
|
8
|
+
*/
|
|
9
|
+
repo: string;
|
|
10
|
+
/**
|
|
11
|
+
* The tag (`3.20`), or the digest when the reference has one (`sha256:…` for `alpine@sha256:…`); absent when the
|
|
12
|
+
* reference has neither.
|
|
13
|
+
*/
|
|
14
|
+
tag?: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export * from '../docker/Docker.js';
|
|
2
|
+
export * from '../docker/ConnectionOptionsBuilder.js';
|
|
3
|
+
/**
|
|
4
|
+
* Lib
|
|
5
|
+
*/
|
|
6
|
+
export * from '../docker/lib/DockerContainer.js';
|
|
7
|
+
export * from '../docker/lib/DockerContainerTTY.js';
|
|
8
|
+
export * from '../docker/lib/DockerImage.js';
|
|
9
|
+
export * from '../docker/lib/ParseEnvToRecord.js';
|
|
10
|
+
export * from '../docker/lib/ParseRepositoryTag.js';
|
|
11
|
+
/**
|
|
12
|
+
* Interfaces
|
|
13
|
+
*/
|
|
14
|
+
export * from '../docker/interfaces/IDockerConnectionOptions.js';
|
|
15
|
+
export * from '../docker/interfaces/IDockerHttpConnectionOptions.js';
|
|
16
|
+
export * from '../docker/interfaces/IDockerHttpsConnectionOptions.js';
|
|
17
|
+
export * from '../docker/interfaces/IDockerKeyObject.js';
|
|
18
|
+
export * from '../docker/interfaces/IDockerSocketConnectionOptions.js';
|
|
19
|
+
export * from '../docker/interfaces/IDockerSSHConnectionOptions.js';
|
|
20
|
+
/**
|
|
21
|
+
* Types
|
|
22
|
+
*/
|
|
23
|
+
export * from '../docker/types/ContainerBind.js';
|
|
24
|
+
export * from '../docker/types/RepositoryTag.js';
|
|
25
|
+
export * from '../docker/types/ContainerCapability.js';
|
|
26
|
+
export * from '../docker/types/ContainerConfig.js';
|
|
27
|
+
export * from '../docker/types/ContainerDevice.js';
|
|
28
|
+
export * from '../docker/types/ContainerExecResult.js';
|
|
29
|
+
export * from '../docker/types/ContainerNetwork.js';
|
|
30
|
+
export * from '../docker/types/ContainerPort.js';
|
|
31
|
+
export * from '../docker/types/ContainerRestartPolicy.js';
|
|
32
|
+
export * from '../docker/types/ContainerState.js';
|
|
33
|
+
export * from '../docker/types/ContainerStats.js';
|
|
34
|
+
export * from '../docker/types/DockerOutputCallback.js';
|
|
35
|
+
export * from '../docker/types/ImageConfig.js';
|
|
36
|
+
export * from '../docker/types/ImageExposePort.js';
|
|
37
|
+
export * from '../docker/types/NetworkInfo.js';
|
|
38
|
+
/**
|
|
39
|
+
* Options
|
|
40
|
+
*/
|
|
41
|
+
export * from '../docker/options/DockerPruneOptions.js';
|
|
42
|
+
export * from '../docker/options/auth/DockerAuthOptions.js';
|
|
43
|
+
export * from '../docker/options/container/ContainerCommitOptions.js';
|
|
44
|
+
export * from '../docker/options/container/ContainerCreateTTYOptions.js';
|
|
45
|
+
export * from '../docker/options/container/ContainerExecOptions.js';
|
|
46
|
+
export * from '../docker/options/container/ContainerKillOptions.js';
|
|
47
|
+
export * from '../docker/options/container/ContainerExportDirectoryOptions.js';
|
|
48
|
+
export * from '../docker/options/container/ContainerLogsOptions.js';
|
|
49
|
+
export * from '../docker/options/container/ContainerRemoveOptions.js';
|
|
50
|
+
export * from '../docker/options/container/ContainerSettingOptions.js';
|
|
51
|
+
export * from '../docker/options/container/ContainerStopOptions.js';
|
|
52
|
+
export * from '../docker/options/container/ContainerTTYConsoleSizeOptions.js';
|
|
53
|
+
export * from '../docker/options/image/ImageBuildOptions.js';
|
|
54
|
+
export * from '../docker/options/image/ImageExportOptions.js';
|
|
55
|
+
export * from '../docker/options/image/ImageImportOptions.js';
|
|
56
|
+
export * from '../docker/options/image/ImagePullOptions.js';
|
|
57
|
+
export * from '../docker/options/image/ImagePushOptions.js';
|
|
58
|
+
export * from '../docker/options/image/ImageRemoveOptions.js';
|
|
59
|
+
export * from '../docker/options/image/ImageTagOptions.js';
|
|
60
|
+
export * from '../docker/options/network/NetworkCreateOptions.js';
|
|
61
|
+
/**
|
|
62
|
+
* Exceptions
|
|
63
|
+
*/
|
|
64
|
+
export * from '../docker/exceptions/DockerConnectionException.js';
|
|
65
|
+
export * from '../docker/exceptions/DockerContainerNotFoundException.js';
|
|
66
|
+
export * from '../docker/exceptions/DockerImageBuildException.js';
|
|
67
|
+
export * from '../docker/exceptions/DockerImageImportException.js';
|
|
68
|
+
export * from '../docker/exceptions/DockerImageNotFoundException.js';
|
|
69
|
+
export * from '../docker/exceptions/DockerImagePullException.js';
|
|
70
|
+
export * from '../docker/exceptions/DockerImagePushException.js';
|
|
71
|
+
export * from '../docker/exceptions/DockerImageRepoTagNotFoundException.js';
|
|
72
|
+
export * from '../docker/exceptions/DockerNetworkNotFoundException.js';
|
|
73
|
+
export * from '../docker/exceptions/DockerRequestException.js';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("../docker/Docker.js"), exports);
|
|
18
|
+
__exportStar(require("../docker/ConnectionOptionsBuilder.js"), exports);
|
|
19
|
+
/**
|
|
20
|
+
* Lib
|
|
21
|
+
*/
|
|
22
|
+
__exportStar(require("../docker/lib/DockerContainer.js"), exports);
|
|
23
|
+
__exportStar(require("../docker/lib/DockerContainerTTY.js"), exports);
|
|
24
|
+
__exportStar(require("../docker/lib/DockerImage.js"), exports);
|
|
25
|
+
__exportStar(require("../docker/lib/ParseEnvToRecord.js"), exports);
|
|
26
|
+
__exportStar(require("../docker/lib/ParseRepositoryTag.js"), exports);
|
|
27
|
+
/**
|
|
28
|
+
* Interfaces
|
|
29
|
+
*/
|
|
30
|
+
__exportStar(require("../docker/interfaces/IDockerConnectionOptions.js"), exports);
|
|
31
|
+
__exportStar(require("../docker/interfaces/IDockerHttpConnectionOptions.js"), exports);
|
|
32
|
+
__exportStar(require("../docker/interfaces/IDockerHttpsConnectionOptions.js"), exports);
|
|
33
|
+
__exportStar(require("../docker/interfaces/IDockerKeyObject.js"), exports);
|
|
34
|
+
__exportStar(require("../docker/interfaces/IDockerSocketConnectionOptions.js"), exports);
|
|
35
|
+
__exportStar(require("../docker/interfaces/IDockerSSHConnectionOptions.js"), exports);
|
|
36
|
+
/**
|
|
37
|
+
* Types
|
|
38
|
+
*/
|
|
39
|
+
__exportStar(require("../docker/types/ContainerBind.js"), exports);
|
|
40
|
+
__exportStar(require("../docker/types/RepositoryTag.js"), exports);
|
|
41
|
+
__exportStar(require("../docker/types/ContainerCapability.js"), exports);
|
|
42
|
+
__exportStar(require("../docker/types/ContainerConfig.js"), exports);
|
|
43
|
+
__exportStar(require("../docker/types/ContainerDevice.js"), exports);
|
|
44
|
+
__exportStar(require("../docker/types/ContainerExecResult.js"), exports);
|
|
45
|
+
__exportStar(require("../docker/types/ContainerNetwork.js"), exports);
|
|
46
|
+
__exportStar(require("../docker/types/ContainerPort.js"), exports);
|
|
47
|
+
__exportStar(require("../docker/types/ContainerRestartPolicy.js"), exports);
|
|
48
|
+
__exportStar(require("../docker/types/ContainerState.js"), exports);
|
|
49
|
+
__exportStar(require("../docker/types/ContainerStats.js"), exports);
|
|
50
|
+
__exportStar(require("../docker/types/DockerOutputCallback.js"), exports);
|
|
51
|
+
__exportStar(require("../docker/types/ImageConfig.js"), exports);
|
|
52
|
+
__exportStar(require("../docker/types/ImageExposePort.js"), exports);
|
|
53
|
+
__exportStar(require("../docker/types/NetworkInfo.js"), exports);
|
|
54
|
+
/**
|
|
55
|
+
* Options
|
|
56
|
+
*/
|
|
57
|
+
__exportStar(require("../docker/options/DockerPruneOptions.js"), exports);
|
|
58
|
+
__exportStar(require("../docker/options/auth/DockerAuthOptions.js"), exports);
|
|
59
|
+
__exportStar(require("../docker/options/container/ContainerCommitOptions.js"), exports);
|
|
60
|
+
__exportStar(require("../docker/options/container/ContainerCreateTTYOptions.js"), exports);
|
|
61
|
+
__exportStar(require("../docker/options/container/ContainerExecOptions.js"), exports);
|
|
62
|
+
__exportStar(require("../docker/options/container/ContainerKillOptions.js"), exports);
|
|
63
|
+
__exportStar(require("../docker/options/container/ContainerExportDirectoryOptions.js"), exports);
|
|
64
|
+
__exportStar(require("../docker/options/container/ContainerLogsOptions.js"), exports);
|
|
65
|
+
__exportStar(require("../docker/options/container/ContainerRemoveOptions.js"), exports);
|
|
66
|
+
__exportStar(require("../docker/options/container/ContainerSettingOptions.js"), exports);
|
|
67
|
+
__exportStar(require("../docker/options/container/ContainerStopOptions.js"), exports);
|
|
68
|
+
__exportStar(require("../docker/options/container/ContainerTTYConsoleSizeOptions.js"), exports);
|
|
69
|
+
__exportStar(require("../docker/options/image/ImageBuildOptions.js"), exports);
|
|
70
|
+
__exportStar(require("../docker/options/image/ImageExportOptions.js"), exports);
|
|
71
|
+
__exportStar(require("../docker/options/image/ImageImportOptions.js"), exports);
|
|
72
|
+
__exportStar(require("../docker/options/image/ImagePullOptions.js"), exports);
|
|
73
|
+
__exportStar(require("../docker/options/image/ImagePushOptions.js"), exports);
|
|
74
|
+
__exportStar(require("../docker/options/image/ImageRemoveOptions.js"), exports);
|
|
75
|
+
__exportStar(require("../docker/options/image/ImageTagOptions.js"), exports);
|
|
76
|
+
__exportStar(require("../docker/options/network/NetworkCreateOptions.js"), exports);
|
|
77
|
+
/**
|
|
78
|
+
* Exceptions
|
|
79
|
+
*/
|
|
80
|
+
__exportStar(require("../docker/exceptions/DockerConnectionException.js"), exports);
|
|
81
|
+
__exportStar(require("../docker/exceptions/DockerContainerNotFoundException.js"), exports);
|
|
82
|
+
__exportStar(require("../docker/exceptions/DockerImageBuildException.js"), exports);
|
|
83
|
+
__exportStar(require("../docker/exceptions/DockerImageImportException.js"), exports);
|
|
84
|
+
__exportStar(require("../docker/exceptions/DockerImageNotFoundException.js"), exports);
|
|
85
|
+
__exportStar(require("../docker/exceptions/DockerImagePullException.js"), exports);
|
|
86
|
+
__exportStar(require("../docker/exceptions/DockerImagePushException.js"), exports);
|
|
87
|
+
__exportStar(require("../docker/exceptions/DockerImageRepoTagNotFoundException.js"), exports);
|
|
88
|
+
__exportStar(require("../docker/exceptions/DockerNetworkNotFoundException.js"), exports);
|
|
89
|
+
__exportStar(require("../docker/exceptions/DockerRequestException.js"), exports);
|
|
90
|
+
|
|
91
|
+
//The default of the entry: the entry itself (scripts/package-build/cjs-package.mjs)
|
|
92
|
+
if (!Object.prototype.hasOwnProperty.call(exports, 'default')) Object.defineProperty(exports, 'default', {value: exports})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The context of a build: the files of a directory packed into a gzipped tar archive, as dockerode prepares it (with
|
|
3
|
+
* tar-fs and @balena/dockerignore, see THIRD_PARTY_NOTICES.md), modified: an error of the packing fails the archive
|
|
4
|
+
* (instead of ending it), and each file is packed once
|
|
5
|
+
*/
|
|
6
|
+
import { createReadStream } from 'node:fs';
|
|
7
|
+
import { lstat, readdir, readFile, readlink } from 'node:fs/promises';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { pipeline } from 'node:stream/promises';
|
|
10
|
+
import { createGzip } from 'node:zlib';
|
|
11
|
+
import { pack as TarPack } from 'tar-stream';
|
|
12
|
+
import { DockerIgnore } from './DockerIgnore.js';
|
|
13
|
+
/**
|
|
14
|
+
* The path of an entry of the archive ("/" separated, relative)
|
|
15
|
+
* @param entry
|
|
16
|
+
*/
|
|
17
|
+
function entryName(entry) {
|
|
18
|
+
return path.posix.normalize(entry.split(path.sep).join('/')).replace(/^(\.\/)+/, '').replace(/\/+$/, '');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Pack the context of a build: a gzipped tar stream; the files excluded by the .dockerignore of the directory are
|
|
22
|
+
* skipped. An error of the packing (a file which cannot be read, or changes while it is read) is an error of the stream
|
|
23
|
+
* @param options
|
|
24
|
+
*/
|
|
25
|
+
export function packBuildContext(options) {
|
|
26
|
+
const archive = TarPack();
|
|
27
|
+
const gzip = createGzip();
|
|
28
|
+
archive.once('error', (error) => gzip.destroy(error));
|
|
29
|
+
archive.pipe(gzip);
|
|
30
|
+
(async () => {
|
|
31
|
+
const root = path.resolve(options.directory);
|
|
32
|
+
let ignore = new DockerIgnore();
|
|
33
|
+
try {
|
|
34
|
+
ignore = new DockerIgnore(await readFile(path.join(root, '.dockerignore'), 'utf8'));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
//No .dockerignore
|
|
38
|
+
}
|
|
39
|
+
const always = new Set((options.always ?? []).map(entryName));
|
|
40
|
+
const packed = new Set();
|
|
41
|
+
const add = async (name) => {
|
|
42
|
+
if (!name || name === '.' || name.startsWith('../') || packed.has(name))
|
|
43
|
+
return;
|
|
44
|
+
if (!always.has(name) && ignore.ignores(name))
|
|
45
|
+
return;
|
|
46
|
+
packed.add(name);
|
|
47
|
+
const file = path.join(root, name);
|
|
48
|
+
const stats = await lstat(file);
|
|
49
|
+
const header = { name: name, mode: stats.mode & 0o7777, mtime: stats.mtime, uid: stats.uid, gid: stats.gid };
|
|
50
|
+
if (stats.isDirectory()) {
|
|
51
|
+
await new Promise((resolve, reject) => archive.entry({ ...header, type: 'directory' }, (error) => error ? reject(error) : resolve()));
|
|
52
|
+
for (const child of (await readdir(file)).sort())
|
|
53
|
+
await add(`${name}/${child}`);
|
|
54
|
+
}
|
|
55
|
+
else if (stats.isSymbolicLink()) {
|
|
56
|
+
//The links of the images are the ones of Linux: "/" separated (readlink gives backslashes on Windows)
|
|
57
|
+
const target = (await readlink(file)).split(path.sep).join('/');
|
|
58
|
+
await new Promise((resolve, reject) => archive.entry({ ...header, type: 'symlink', linkname: target }, (error) => error ? reject(error) : resolve()));
|
|
59
|
+
}
|
|
60
|
+
else if (stats.isFile()) {
|
|
61
|
+
await pipeline(createReadStream(file), archive.entry({ ...header, type: 'file', size: stats.size }));
|
|
62
|
+
}
|
|
63
|
+
//The sockets and the pipes are not packed
|
|
64
|
+
};
|
|
65
|
+
for (const entry of options.entries)
|
|
66
|
+
await add(entryName(entry));
|
|
67
|
+
archive.finalize();
|
|
68
|
+
})().catch((error) => gzip.destroy(error));
|
|
69
|
+
return gzip;
|
|
70
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The progress of the builds of BuildKit: the "aux" of the messages "moby.buildkit.trace" of a build is a StatusResponse
|
|
3
|
+
* of BuildKit (github.com/moby/buildkit, api/services/control/control.proto), encoded by protobuf then base64. Only the
|
|
4
|
+
* fields read are decoded, by their numbers in control.proto:
|
|
5
|
+
*
|
|
6
|
+
* StatusResponse: 1 vertexes (Vertex), 2 statuses (VertexStatus), 3 logs (VertexLog), 4 warnings (VertexWarning)
|
|
7
|
+
* Vertex: 1 digest, 3 name, 4 cached, 5 started (Timestamp), 6 completed (Timestamp), 7 error
|
|
8
|
+
* VertexStatus: 1 ID, 2 vertex, 3 name, 4 current, 5 total, 8 completed (Timestamp)
|
|
9
|
+
* VertexLog: 1 vertex, 3 stream, 4 msg
|
|
10
|
+
* VertexWarning: 1 vertex, 2 level, 3 short
|
|
11
|
+
* Timestamp (google.protobuf): 1 seconds, 2 nanos
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The fields of a protobuf message (the wire format: varints, 64 and 32 bits values, length-delimited values)
|
|
15
|
+
* @param buffer
|
|
16
|
+
*/
|
|
17
|
+
function protobufFields(buffer) {
|
|
18
|
+
const fields = [];
|
|
19
|
+
let offset = 0;
|
|
20
|
+
const varint = () => {
|
|
21
|
+
let result = 0n;
|
|
22
|
+
let shift = 0n;
|
|
23
|
+
while (offset < buffer.length) {
|
|
24
|
+
const byte = buffer[offset++];
|
|
25
|
+
result |= BigInt(byte & 0x7f) << shift;
|
|
26
|
+
if (!(byte & 0x80))
|
|
27
|
+
return result;
|
|
28
|
+
shift += 7n;
|
|
29
|
+
}
|
|
30
|
+
throw new Error('Truncated protobuf varint');
|
|
31
|
+
};
|
|
32
|
+
while (offset < buffer.length) {
|
|
33
|
+
const key = Number(varint());
|
|
34
|
+
const number = key >>> 3;
|
|
35
|
+
switch (key & 0x07) {
|
|
36
|
+
case 0:
|
|
37
|
+
fields.push({ number: number, value: varint() });
|
|
38
|
+
break;
|
|
39
|
+
case 1:
|
|
40
|
+
fields.push({ number: number, value: buffer.readBigUInt64LE(offset) });
|
|
41
|
+
offset += 8;
|
|
42
|
+
break;
|
|
43
|
+
case 2: {
|
|
44
|
+
const length = Number(varint());
|
|
45
|
+
if (offset + length > buffer.length)
|
|
46
|
+
throw new Error('Truncated protobuf value');
|
|
47
|
+
fields.push({ number: number, value: buffer.subarray(offset, offset + length) });
|
|
48
|
+
offset += length;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case 5:
|
|
52
|
+
fields.push({ number: number, value: BigInt(buffer.readUInt32LE(offset)) });
|
|
53
|
+
offset += 4;
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
throw new Error(`Unsupported protobuf wire type ${key & 0x07}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return fields;
|
|
60
|
+
}
|
|
61
|
+
const text = (value) => Buffer.isBuffer(value) ? value.toString() : '';
|
|
62
|
+
const bytes = (value) => Buffer.isBuffer(value) ? value : Buffer.alloc(0);
|
|
63
|
+
const integer = (value) => Buffer.isBuffer(value) ? 0 : Number(BigInt.asIntN(64, value));
|
|
64
|
+
/**
|
|
65
|
+
* A google.protobuf.Timestamp, in milliseconds since the epoch
|
|
66
|
+
* @param value
|
|
67
|
+
*/
|
|
68
|
+
function timestamp(value) {
|
|
69
|
+
if (!Buffer.isBuffer(value))
|
|
70
|
+
return undefined;
|
|
71
|
+
let seconds = 0;
|
|
72
|
+
let nanos = 0;
|
|
73
|
+
for (const field of protobufFields(value)) {
|
|
74
|
+
if (field.number === 1)
|
|
75
|
+
seconds = integer(field.value);
|
|
76
|
+
if (field.number === 2)
|
|
77
|
+
nanos = integer(field.value);
|
|
78
|
+
}
|
|
79
|
+
//The zero timestamp is not set
|
|
80
|
+
return seconds || nanos ? seconds * 1000 + Math.floor(nanos / 1e6) : undefined;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Decode the progress of a build: the "aux" of a message "moby.buildkit.trace"
|
|
84
|
+
* @param aux the base64 of a StatusResponse
|
|
85
|
+
*/
|
|
86
|
+
export function decodeBuildKitStatus(aux) {
|
|
87
|
+
const status = { vertexes: [], statuses: [], logs: [], warnings: [] };
|
|
88
|
+
for (const field of protobufFields(Buffer.from(aux, 'base64'))) {
|
|
89
|
+
const message = protobufFields(bytes(field.value));
|
|
90
|
+
const get = (number) => message.find((candidate) => candidate.number === number)?.value;
|
|
91
|
+
switch (field.number) {
|
|
92
|
+
case 1:
|
|
93
|
+
status.vertexes.push({
|
|
94
|
+
digest: text(get(1) ?? 0n),
|
|
95
|
+
name: text(get(3) ?? 0n),
|
|
96
|
+
cached: integer(get(4) ?? 0n) === 1,
|
|
97
|
+
started: timestamp(get(5) ?? 0n),
|
|
98
|
+
completed: timestamp(get(6) ?? 0n),
|
|
99
|
+
error: text(get(7) ?? 0n) || undefined
|
|
100
|
+
});
|
|
101
|
+
break;
|
|
102
|
+
case 2:
|
|
103
|
+
status.statuses.push({
|
|
104
|
+
id: text(get(1) ?? 0n),
|
|
105
|
+
vertex: text(get(2) ?? 0n),
|
|
106
|
+
name: text(get(3) ?? 0n),
|
|
107
|
+
current: integer(get(4) ?? 0n),
|
|
108
|
+
total: integer(get(5) ?? 0n),
|
|
109
|
+
completed: timestamp(get(8) ?? 0n)
|
|
110
|
+
});
|
|
111
|
+
break;
|
|
112
|
+
case 3:
|
|
113
|
+
status.logs.push({ vertex: text(get(1) ?? 0n), stream: integer(get(3) ?? 0n), message: bytes(get(4) ?? 0n) });
|
|
114
|
+
break;
|
|
115
|
+
case 4:
|
|
116
|
+
status.warnings.push({ vertex: text(get(1) ?? 0n), level: integer(get(2) ?? 0n), short: text(get(3) ?? 0n) });
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return status;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The lines of the progress of a build, as "docker build --progress=plain" shows them: the steps are numbered in their
|
|
124
|
+
* order ("#3 [2/2] RUN npm ci"), with their output, and whether they are cached, done ("#3 DONE 1.2s") or failed
|
|
125
|
+
*/
|
|
126
|
+
export class BuildKitProgress {
|
|
127
|
+
#steps = new Map();
|
|
128
|
+
/**
|
|
129
|
+
* The incomplete last line of the output of each step
|
|
130
|
+
*/
|
|
131
|
+
#pending = new Map();
|
|
132
|
+
/**
|
|
133
|
+
* The number of a step, given when it is first seen
|
|
134
|
+
* @param digest
|
|
135
|
+
*/
|
|
136
|
+
step(digest) {
|
|
137
|
+
let step = this.#steps.get(digest);
|
|
138
|
+
if (!step)
|
|
139
|
+
this.#steps.set(digest, step = { number: this.#steps.size + 1, started: false, ended: false });
|
|
140
|
+
return step;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The lines of a status of the build
|
|
144
|
+
* @param status
|
|
145
|
+
*/
|
|
146
|
+
lines(status) {
|
|
147
|
+
const lines = [];
|
|
148
|
+
for (const vertex of status.vertexes) {
|
|
149
|
+
const step = this.step(vertex.digest);
|
|
150
|
+
if (!step.started && (vertex.started || vertex.cached)) {
|
|
151
|
+
step.started = true;
|
|
152
|
+
lines.push(`#${step.number} ${vertex.name}`);
|
|
153
|
+
}
|
|
154
|
+
if (step.ended)
|
|
155
|
+
continue;
|
|
156
|
+
if (vertex.cached) {
|
|
157
|
+
step.ended = true;
|
|
158
|
+
lines.push(`#${step.number} CACHED`);
|
|
159
|
+
}
|
|
160
|
+
else if (vertex.error) {
|
|
161
|
+
step.ended = true;
|
|
162
|
+
lines.push(...this.flush(vertex.digest), `#${step.number} ERROR: ${vertex.error}`);
|
|
163
|
+
}
|
|
164
|
+
else if (vertex.completed) {
|
|
165
|
+
step.ended = true;
|
|
166
|
+
const seconds = vertex.started ? ` ${((vertex.completed - vertex.started) / 1000).toFixed(1)}s` : '';
|
|
167
|
+
lines.push(...this.flush(vertex.digest), `#${step.number} DONE${seconds}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
for (const log of status.logs) {
|
|
171
|
+
const output = (this.#pending.get(log.vertex) ?? '') + log.message.toString();
|
|
172
|
+
const parts = output.split(/\r?\n/);
|
|
173
|
+
this.#pending.set(log.vertex, parts.pop());
|
|
174
|
+
const number = this.step(log.vertex).number;
|
|
175
|
+
parts.forEach((part) => lines.push(`#${number} ${part}`));
|
|
176
|
+
}
|
|
177
|
+
for (const warning of status.warnings)
|
|
178
|
+
lines.push(`#${this.step(warning.vertex).number} WARN: ${warning.short}`);
|
|
179
|
+
return lines;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* The incomplete last line of the output of a step
|
|
183
|
+
* @param digest
|
|
184
|
+
*/
|
|
185
|
+
flush(digest) {
|
|
186
|
+
const pending = this.#pending.get(digest);
|
|
187
|
+
this.#pending.delete(digest);
|
|
188
|
+
return pending ? [`#${this.step(digest).number} ${pending}`] : [];
|
|
189
|
+
}
|
|
190
|
+
}
|