@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.
Files changed (305) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +309 -0
  3. package/THIRD_PARTY_NOTICES.md +299 -0
  4. package/dist/cjs/client/BuildContext.d.ts +22 -0
  5. package/dist/cjs/client/BuildContext.js +76 -0
  6. package/dist/cjs/client/BuildKitProgress.d.ts +81 -0
  7. package/dist/cjs/client/BuildKitProgress.js +195 -0
  8. package/dist/cjs/client/DockerClient.d.ts +196 -0
  9. package/dist/cjs/client/DockerClient.js +312 -0
  10. package/dist/cjs/client/DockerConnection.d.ts +154 -0
  11. package/dist/cjs/client/DockerConnection.js +397 -0
  12. package/dist/cjs/client/DockerIgnore.d.ts +44 -0
  13. package/dist/cjs/client/DockerIgnore.js +186 -0
  14. package/dist/cjs/client/DockerRequestError.d.ts +17 -0
  15. package/dist/cjs/client/DockerRequestError.js +24 -0
  16. package/dist/cjs/client/DockerStreams.d.ts +35 -0
  17. package/dist/cjs/client/DockerStreams.js +117 -0
  18. package/dist/cjs/client/types/ContainerCreateResponse.d.ts +7 -0
  19. package/dist/cjs/client/types/ContainerCreateResponse.js +2 -0
  20. package/dist/cjs/client/types/ContainerStopQuery.d.ts +13 -0
  21. package/dist/cjs/client/types/ContainerStopQuery.js +2 -0
  22. package/dist/cjs/client/types/DeviceMapping.d.ts +8 -0
  23. package/dist/cjs/client/types/DeviceMapping.js +2 -0
  24. package/dist/cjs/client/types/IdResponse.d.ts +6 -0
  25. package/dist/cjs/client/types/IdResponse.js +2 -0
  26. package/dist/cjs/client/types/NetworkCreateResponse.d.ts +7 -0
  27. package/dist/cjs/client/types/NetworkCreateResponse.js +2 -0
  28. package/dist/cjs/client/types/PortBinding.d.ts +10 -0
  29. package/dist/cjs/client/types/PortBinding.js +2 -0
  30. package/dist/cjs/docker/ConnectionOptionsBuilder.d.ts +128 -0
  31. package/dist/cjs/docker/ConnectionOptionsBuilder.js +150 -0
  32. package/dist/cjs/docker/Docker.d.ts +301 -0
  33. package/dist/cjs/docker/Docker.js +703 -0
  34. package/dist/cjs/docker/exceptions/DockerConnectionException.d.ts +9 -0
  35. package/dist/cjs/docker/exceptions/DockerConnectionException.js +16 -0
  36. package/dist/cjs/docker/exceptions/DockerContainerNotFoundException.d.ts +9 -0
  37. package/dist/cjs/docker/exceptions/DockerContainerNotFoundException.js +16 -0
  38. package/dist/cjs/docker/exceptions/DockerImageBuildException.d.ts +9 -0
  39. package/dist/cjs/docker/exceptions/DockerImageBuildException.js +16 -0
  40. package/dist/cjs/docker/exceptions/DockerImageImportException.d.ts +9 -0
  41. package/dist/cjs/docker/exceptions/DockerImageImportException.js +16 -0
  42. package/dist/cjs/docker/exceptions/DockerImageNotFoundException.d.ts +10 -0
  43. package/dist/cjs/docker/exceptions/DockerImageNotFoundException.js +17 -0
  44. package/dist/cjs/docker/exceptions/DockerImagePullException.d.ts +9 -0
  45. package/dist/cjs/docker/exceptions/DockerImagePullException.js +16 -0
  46. package/dist/cjs/docker/exceptions/DockerImagePushException.d.ts +8 -0
  47. package/dist/cjs/docker/exceptions/DockerImagePushException.js +15 -0
  48. package/dist/cjs/docker/exceptions/DockerImageRepoTagNotFoundException.d.ts +8 -0
  49. package/dist/cjs/docker/exceptions/DockerImageRepoTagNotFoundException.js +15 -0
  50. package/dist/cjs/docker/exceptions/DockerNetworkNotFoundException.d.ts +9 -0
  51. package/dist/cjs/docker/exceptions/DockerNetworkNotFoundException.js +16 -0
  52. package/dist/cjs/docker/exceptions/DockerRequestException.d.ts +22 -0
  53. package/dist/cjs/docker/exceptions/DockerRequestException.js +24 -0
  54. package/dist/cjs/docker/interfaces/IDockerConnectionOptions.d.ts +75 -0
  55. package/dist/cjs/docker/interfaces/IDockerConnectionOptions.js +2 -0
  56. package/dist/cjs/docker/interfaces/IDockerHttpConnectionOptions.d.ts +16 -0
  57. package/dist/cjs/docker/interfaces/IDockerHttpConnectionOptions.js +2 -0
  58. package/dist/cjs/docker/interfaces/IDockerHttpsConnectionOptions.d.ts +16 -0
  59. package/dist/cjs/docker/interfaces/IDockerHttpsConnectionOptions.js +2 -0
  60. package/dist/cjs/docker/interfaces/IDockerKeyObject.d.ts +14 -0
  61. package/dist/cjs/docker/interfaces/IDockerKeyObject.js +2 -0
  62. package/dist/cjs/docker/interfaces/IDockerSSHConnectionOptions.d.ts +16 -0
  63. package/dist/cjs/docker/interfaces/IDockerSSHConnectionOptions.js +2 -0
  64. package/dist/cjs/docker/interfaces/IDockerSocketConnectionOptions.d.ts +7 -0
  65. package/dist/cjs/docker/interfaces/IDockerSocketConnectionOptions.js +2 -0
  66. package/dist/cjs/docker/lib/DockerContainer.d.ts +315 -0
  67. package/dist/cjs/docker/lib/DockerContainer.js +742 -0
  68. package/dist/cjs/docker/lib/DockerContainerTTY.d.ts +99 -0
  69. package/dist/cjs/docker/lib/DockerContainerTTY.js +157 -0
  70. package/dist/cjs/docker/lib/DockerImage.d.ts +153 -0
  71. package/dist/cjs/docker/lib/DockerImage.js +273 -0
  72. package/dist/cjs/docker/lib/EngineSettings.d.ts +41 -0
  73. package/dist/cjs/docker/lib/EngineSettings.js +86 -0
  74. package/dist/cjs/docker/lib/ParseBaseImages.d.ts +9 -0
  75. package/dist/cjs/docker/lib/ParseBaseImages.js +50 -0
  76. package/dist/cjs/docker/lib/ParseEnvToRecord.d.ts +14 -0
  77. package/dist/cjs/docker/lib/ParseEnvToRecord.js +25 -0
  78. package/dist/cjs/docker/lib/ParseRepositoryTag.d.ts +17 -0
  79. package/dist/cjs/docker/lib/ParseRepositoryTag.js +48 -0
  80. package/dist/cjs/docker/lib/RegistryAuth.d.ts +8 -0
  81. package/dist/cjs/docker/lib/RegistryAuth.js +15 -0
  82. package/dist/cjs/docker/options/DockerPruneOptions.d.ts +38 -0
  83. package/dist/cjs/docker/options/DockerPruneOptions.js +47 -0
  84. package/dist/cjs/docker/options/auth/DockerAuthOptions.d.ts +46 -0
  85. package/dist/cjs/docker/options/auth/DockerAuthOptions.js +59 -0
  86. package/dist/cjs/docker/options/container/ContainerCommitOptions.d.ts +28 -0
  87. package/dist/cjs/docker/options/container/ContainerCommitOptions.js +39 -0
  88. package/dist/cjs/docker/options/container/ContainerCreateTTYOptions.d.ts +32 -0
  89. package/dist/cjs/docker/options/container/ContainerCreateTTYOptions.js +43 -0
  90. package/dist/cjs/docker/options/container/ContainerExecOptions.d.ts +26 -0
  91. package/dist/cjs/docker/options/container/ContainerExecOptions.js +38 -0
  92. package/dist/cjs/docker/options/container/ContainerExportDirectoryOptions.d.ts +27 -0
  93. package/dist/cjs/docker/options/container/ContainerExportDirectoryOptions.js +39 -0
  94. package/dist/cjs/docker/options/container/ContainerKillOptions.d.ts +25 -0
  95. package/dist/cjs/docker/options/container/ContainerKillOptions.js +36 -0
  96. package/dist/cjs/docker/options/container/ContainerLogsOptions.d.ts +48 -0
  97. package/dist/cjs/docker/options/container/ContainerLogsOptions.js +56 -0
  98. package/dist/cjs/docker/options/container/ContainerRemoveOptions.d.ts +22 -0
  99. package/dist/cjs/docker/options/container/ContainerRemoveOptions.js +34 -0
  100. package/dist/cjs/docker/options/container/ContainerSettingOptions.d.ts +137 -0
  101. package/dist/cjs/docker/options/container/ContainerSettingOptions.js +136 -0
  102. package/dist/cjs/docker/options/container/ContainerStopOptions.d.ts +28 -0
  103. package/dist/cjs/docker/options/container/ContainerStopOptions.js +40 -0
  104. package/dist/cjs/docker/options/container/ContainerTTYConsoleSizeOptions.d.ts +26 -0
  105. package/dist/cjs/docker/options/container/ContainerTTYConsoleSizeOptions.js +40 -0
  106. package/dist/cjs/docker/options/image/ImageBuildOptions.d.ts +117 -0
  107. package/dist/cjs/docker/options/image/ImageBuildOptions.js +111 -0
  108. package/dist/cjs/docker/options/image/ImageExportOptions.d.ts +33 -0
  109. package/dist/cjs/docker/options/image/ImageExportOptions.js +44 -0
  110. package/dist/cjs/docker/options/image/ImageImportOptions.d.ts +28 -0
  111. package/dist/cjs/docker/options/image/ImageImportOptions.js +42 -0
  112. package/dist/cjs/docker/options/image/ImagePullOptions.d.ts +49 -0
  113. package/dist/cjs/docker/options/image/ImagePullOptions.js +63 -0
  114. package/dist/cjs/docker/options/image/ImagePushOptions.d.ts +41 -0
  115. package/dist/cjs/docker/options/image/ImagePushOptions.js +56 -0
  116. package/dist/cjs/docker/options/image/ImageRemoveOptions.d.ts +26 -0
  117. package/dist/cjs/docker/options/image/ImageRemoveOptions.js +38 -0
  118. package/dist/cjs/docker/options/image/ImageTagOptions.d.ts +25 -0
  119. package/dist/cjs/docker/options/image/ImageTagOptions.js +38 -0
  120. package/dist/cjs/docker/options/network/NetworkCreateOptions.d.ts +54 -0
  121. package/dist/cjs/docker/options/network/NetworkCreateOptions.js +63 -0
  122. package/dist/cjs/docker/types/ContainerBind.d.ts +19 -0
  123. package/dist/cjs/docker/types/ContainerBind.js +2 -0
  124. package/dist/cjs/docker/types/ContainerCapability.d.ts +286 -0
  125. package/dist/cjs/docker/types/ContainerCapability.js +290 -0
  126. package/dist/cjs/docker/types/ContainerConfig.d.ts +67 -0
  127. package/dist/cjs/docker/types/ContainerConfig.js +2 -0
  128. package/dist/cjs/docker/types/ContainerDevice.d.ts +19 -0
  129. package/dist/cjs/docker/types/ContainerDevice.js +2 -0
  130. package/dist/cjs/docker/types/ContainerExecResult.d.ts +20 -0
  131. package/dist/cjs/docker/types/ContainerExecResult.js +2 -0
  132. package/dist/cjs/docker/types/ContainerNetwork.d.ts +46 -0
  133. package/dist/cjs/docker/types/ContainerNetwork.js +2 -0
  134. package/dist/cjs/docker/types/ContainerPort.d.ts +25 -0
  135. package/dist/cjs/docker/types/ContainerPort.js +2 -0
  136. package/dist/cjs/docker/types/ContainerRestartPolicy.d.ts +11 -0
  137. package/dist/cjs/docker/types/ContainerRestartPolicy.js +2 -0
  138. package/dist/cjs/docker/types/ContainerState.d.ts +48 -0
  139. package/dist/cjs/docker/types/ContainerState.js +2 -0
  140. package/dist/cjs/docker/types/ContainerStats.d.ts +408 -0
  141. package/dist/cjs/docker/types/ContainerStats.js +2 -0
  142. package/dist/cjs/docker/types/DockerOutputCallback.d.ts +8 -0
  143. package/dist/cjs/docker/types/DockerOutputCallback.js +2 -0
  144. package/dist/cjs/docker/types/ImageConfig.d.ts +34 -0
  145. package/dist/cjs/docker/types/ImageConfig.js +2 -0
  146. package/dist/cjs/docker/types/ImageExposePort.d.ts +17 -0
  147. package/dist/cjs/docker/types/ImageExposePort.js +2 -0
  148. package/dist/cjs/docker/types/NetworkInfo.d.ts +59 -0
  149. package/dist/cjs/docker/types/NetworkInfo.js +2 -0
  150. package/dist/cjs/docker/types/RepositoryTag.d.ts +15 -0
  151. package/dist/cjs/docker/types/RepositoryTag.js +2 -0
  152. package/dist/cjs/exports/Docker.d.ts +73 -0
  153. package/dist/cjs/exports/Docker.js +92 -0
  154. package/dist/cjs/package.json +1 -0
  155. package/dist/esm/client/BuildContext.js +70 -0
  156. package/dist/esm/client/BuildKitProgress.js +190 -0
  157. package/dist/esm/client/DockerClient.js +307 -0
  158. package/dist/esm/client/DockerConnection.js +355 -0
  159. package/dist/esm/client/DockerIgnore.js +179 -0
  160. package/dist/esm/client/DockerRequestError.js +20 -0
  161. package/dist/esm/client/DockerStreams.js +111 -0
  162. package/dist/esm/client/types/ContainerCreateResponse.js +1 -0
  163. package/dist/esm/client/types/ContainerStopQuery.js +1 -0
  164. package/dist/esm/client/types/DeviceMapping.js +1 -0
  165. package/dist/esm/client/types/IdResponse.js +1 -0
  166. package/dist/esm/client/types/NetworkCreateResponse.js +1 -0
  167. package/dist/esm/client/types/PortBinding.js +1 -0
  168. package/dist/esm/docker/ConnectionOptionsBuilder.js +142 -0
  169. package/dist/esm/docker/Docker.js +697 -0
  170. package/dist/esm/docker/exceptions/DockerConnectionException.js +12 -0
  171. package/dist/esm/docker/exceptions/DockerContainerNotFoundException.js +12 -0
  172. package/dist/esm/docker/exceptions/DockerImageBuildException.js +12 -0
  173. package/dist/esm/docker/exceptions/DockerImageImportException.js +12 -0
  174. package/dist/esm/docker/exceptions/DockerImageNotFoundException.js +13 -0
  175. package/dist/esm/docker/exceptions/DockerImagePullException.js +12 -0
  176. package/dist/esm/docker/exceptions/DockerImagePushException.js +11 -0
  177. package/dist/esm/docker/exceptions/DockerImageRepoTagNotFoundException.js +11 -0
  178. package/dist/esm/docker/exceptions/DockerNetworkNotFoundException.js +12 -0
  179. package/dist/esm/docker/exceptions/DockerRequestException.js +20 -0
  180. package/dist/esm/docker/interfaces/IDockerConnectionOptions.js +1 -0
  181. package/dist/esm/docker/interfaces/IDockerHttpConnectionOptions.js +1 -0
  182. package/dist/esm/docker/interfaces/IDockerHttpsConnectionOptions.js +1 -0
  183. package/dist/esm/docker/interfaces/IDockerKeyObject.js +1 -0
  184. package/dist/esm/docker/interfaces/IDockerSSHConnectionOptions.js +1 -0
  185. package/dist/esm/docker/interfaces/IDockerSocketConnectionOptions.js +1 -0
  186. package/dist/esm/docker/lib/DockerContainer.js +739 -0
  187. package/dist/esm/docker/lib/DockerContainerTTY.js +154 -0
  188. package/dist/esm/docker/lib/DockerImage.js +270 -0
  189. package/dist/esm/docker/lib/EngineSettings.js +78 -0
  190. package/dist/esm/docker/lib/ParseBaseImages.js +47 -0
  191. package/dist/esm/docker/lib/ParseEnvToRecord.js +22 -0
  192. package/dist/esm/docker/lib/ParseRepositoryTag.js +45 -0
  193. package/dist/esm/docker/lib/RegistryAuth.js +12 -0
  194. package/dist/esm/docker/options/DockerPruneOptions.js +43 -0
  195. package/dist/esm/docker/options/auth/DockerAuthOptions.js +55 -0
  196. package/dist/esm/docker/options/container/ContainerCommitOptions.js +35 -0
  197. package/dist/esm/docker/options/container/ContainerCreateTTYOptions.js +39 -0
  198. package/dist/esm/docker/options/container/ContainerExecOptions.js +34 -0
  199. package/dist/esm/docker/options/container/ContainerExportDirectoryOptions.js +35 -0
  200. package/dist/esm/docker/options/container/ContainerKillOptions.js +32 -0
  201. package/dist/esm/docker/options/container/ContainerLogsOptions.js +52 -0
  202. package/dist/esm/docker/options/container/ContainerRemoveOptions.js +30 -0
  203. package/dist/esm/docker/options/container/ContainerSettingOptions.js +132 -0
  204. package/dist/esm/docker/options/container/ContainerStopOptions.js +36 -0
  205. package/dist/esm/docker/options/container/ContainerTTYConsoleSizeOptions.js +36 -0
  206. package/dist/esm/docker/options/image/ImageBuildOptions.js +107 -0
  207. package/dist/esm/docker/options/image/ImageExportOptions.js +40 -0
  208. package/dist/esm/docker/options/image/ImageImportOptions.js +38 -0
  209. package/dist/esm/docker/options/image/ImagePullOptions.js +59 -0
  210. package/dist/esm/docker/options/image/ImagePushOptions.js +52 -0
  211. package/dist/esm/docker/options/image/ImageRemoveOptions.js +34 -0
  212. package/dist/esm/docker/options/image/ImageTagOptions.js +34 -0
  213. package/dist/esm/docker/options/network/NetworkCreateOptions.js +59 -0
  214. package/dist/esm/docker/types/ContainerBind.js +1 -0
  215. package/dist/esm/docker/types/ContainerCapability.js +287 -0
  216. package/dist/esm/docker/types/ContainerConfig.js +1 -0
  217. package/dist/esm/docker/types/ContainerDevice.js +1 -0
  218. package/dist/esm/docker/types/ContainerExecResult.js +1 -0
  219. package/dist/esm/docker/types/ContainerNetwork.js +1 -0
  220. package/dist/esm/docker/types/ContainerPort.js +1 -0
  221. package/dist/esm/docker/types/ContainerRestartPolicy.js +1 -0
  222. package/dist/esm/docker/types/ContainerState.js +1 -0
  223. package/dist/esm/docker/types/ContainerStats.js +1 -0
  224. package/dist/esm/docker/types/DockerOutputCallback.js +1 -0
  225. package/dist/esm/docker/types/ImageConfig.js +1 -0
  226. package/dist/esm/docker/types/ImageExposePort.js +1 -0
  227. package/dist/esm/docker/types/NetworkInfo.js +1 -0
  228. package/dist/esm/docker/types/RepositoryTag.js +1 -0
  229. package/dist/esm/exports/Docker.js +73 -0
  230. package/dist/types/client/BuildContext.d.ts +22 -0
  231. package/dist/types/client/BuildKitProgress.d.ts +81 -0
  232. package/dist/types/client/DockerClient.d.ts +196 -0
  233. package/dist/types/client/DockerConnection.d.ts +154 -0
  234. package/dist/types/client/DockerIgnore.d.ts +44 -0
  235. package/dist/types/client/DockerRequestError.d.ts +17 -0
  236. package/dist/types/client/DockerStreams.d.ts +35 -0
  237. package/dist/types/client/types/ContainerCreateResponse.d.ts +7 -0
  238. package/dist/types/client/types/ContainerStopQuery.d.ts +13 -0
  239. package/dist/types/client/types/DeviceMapping.d.ts +8 -0
  240. package/dist/types/client/types/IdResponse.d.ts +6 -0
  241. package/dist/types/client/types/NetworkCreateResponse.d.ts +7 -0
  242. package/dist/types/client/types/PortBinding.d.ts +10 -0
  243. package/dist/types/docker/ConnectionOptionsBuilder.d.ts +128 -0
  244. package/dist/types/docker/Docker.d.ts +301 -0
  245. package/dist/types/docker/exceptions/DockerConnectionException.d.ts +9 -0
  246. package/dist/types/docker/exceptions/DockerContainerNotFoundException.d.ts +9 -0
  247. package/dist/types/docker/exceptions/DockerImageBuildException.d.ts +9 -0
  248. package/dist/types/docker/exceptions/DockerImageImportException.d.ts +9 -0
  249. package/dist/types/docker/exceptions/DockerImageNotFoundException.d.ts +10 -0
  250. package/dist/types/docker/exceptions/DockerImagePullException.d.ts +9 -0
  251. package/dist/types/docker/exceptions/DockerImagePushException.d.ts +8 -0
  252. package/dist/types/docker/exceptions/DockerImageRepoTagNotFoundException.d.ts +8 -0
  253. package/dist/types/docker/exceptions/DockerNetworkNotFoundException.d.ts +9 -0
  254. package/dist/types/docker/exceptions/DockerRequestException.d.ts +22 -0
  255. package/dist/types/docker/interfaces/IDockerConnectionOptions.d.ts +75 -0
  256. package/dist/types/docker/interfaces/IDockerHttpConnectionOptions.d.ts +16 -0
  257. package/dist/types/docker/interfaces/IDockerHttpsConnectionOptions.d.ts +16 -0
  258. package/dist/types/docker/interfaces/IDockerKeyObject.d.ts +14 -0
  259. package/dist/types/docker/interfaces/IDockerSSHConnectionOptions.d.ts +16 -0
  260. package/dist/types/docker/interfaces/IDockerSocketConnectionOptions.d.ts +7 -0
  261. package/dist/types/docker/lib/DockerContainer.d.ts +315 -0
  262. package/dist/types/docker/lib/DockerContainerTTY.d.ts +99 -0
  263. package/dist/types/docker/lib/DockerImage.d.ts +153 -0
  264. package/dist/types/docker/lib/EngineSettings.d.ts +41 -0
  265. package/dist/types/docker/lib/ParseBaseImages.d.ts +9 -0
  266. package/dist/types/docker/lib/ParseEnvToRecord.d.ts +14 -0
  267. package/dist/types/docker/lib/ParseRepositoryTag.d.ts +17 -0
  268. package/dist/types/docker/lib/RegistryAuth.d.ts +8 -0
  269. package/dist/types/docker/options/DockerPruneOptions.d.ts +38 -0
  270. package/dist/types/docker/options/auth/DockerAuthOptions.d.ts +46 -0
  271. package/dist/types/docker/options/container/ContainerCommitOptions.d.ts +28 -0
  272. package/dist/types/docker/options/container/ContainerCreateTTYOptions.d.ts +32 -0
  273. package/dist/types/docker/options/container/ContainerExecOptions.d.ts +26 -0
  274. package/dist/types/docker/options/container/ContainerExportDirectoryOptions.d.ts +27 -0
  275. package/dist/types/docker/options/container/ContainerKillOptions.d.ts +25 -0
  276. package/dist/types/docker/options/container/ContainerLogsOptions.d.ts +48 -0
  277. package/dist/types/docker/options/container/ContainerRemoveOptions.d.ts +22 -0
  278. package/dist/types/docker/options/container/ContainerSettingOptions.d.ts +137 -0
  279. package/dist/types/docker/options/container/ContainerStopOptions.d.ts +28 -0
  280. package/dist/types/docker/options/container/ContainerTTYConsoleSizeOptions.d.ts +26 -0
  281. package/dist/types/docker/options/image/ImageBuildOptions.d.ts +117 -0
  282. package/dist/types/docker/options/image/ImageExportOptions.d.ts +33 -0
  283. package/dist/types/docker/options/image/ImageImportOptions.d.ts +28 -0
  284. package/dist/types/docker/options/image/ImagePullOptions.d.ts +49 -0
  285. package/dist/types/docker/options/image/ImagePushOptions.d.ts +41 -0
  286. package/dist/types/docker/options/image/ImageRemoveOptions.d.ts +26 -0
  287. package/dist/types/docker/options/image/ImageTagOptions.d.ts +25 -0
  288. package/dist/types/docker/options/network/NetworkCreateOptions.d.ts +54 -0
  289. package/dist/types/docker/types/ContainerBind.d.ts +19 -0
  290. package/dist/types/docker/types/ContainerCapability.d.ts +286 -0
  291. package/dist/types/docker/types/ContainerConfig.d.ts +67 -0
  292. package/dist/types/docker/types/ContainerDevice.d.ts +19 -0
  293. package/dist/types/docker/types/ContainerExecResult.d.ts +20 -0
  294. package/dist/types/docker/types/ContainerNetwork.d.ts +46 -0
  295. package/dist/types/docker/types/ContainerPort.d.ts +25 -0
  296. package/dist/types/docker/types/ContainerRestartPolicy.d.ts +11 -0
  297. package/dist/types/docker/types/ContainerState.d.ts +48 -0
  298. package/dist/types/docker/types/ContainerStats.d.ts +408 -0
  299. package/dist/types/docker/types/DockerOutputCallback.d.ts +8 -0
  300. package/dist/types/docker/types/ImageConfig.d.ts +34 -0
  301. package/dist/types/docker/types/ImageExposePort.d.ts +17 -0
  302. package/dist/types/docker/types/NetworkInfo.d.ts +59 -0
  303. package/dist/types/docker/types/RepositoryTag.d.ts +15 -0
  304. package/dist/types/exports/Docker.d.ts +73 -0
  305. package/package.json +57 -0
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
+ }