testcontainers 12.2.0 → 12.2.1

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 (123) hide show
  1. package/build/common/file-lock.js +3 -3
  2. package/build/common/hash.js +2 -2
  3. package/build/common/index.d.ts +2 -3
  4. package/build/common/index.js +2 -4
  5. package/build/common/retry.d.ts +1 -1
  6. package/build/common/uuid.js +2 -2
  7. package/build/container-runtime/auth/auths.d.ts +2 -2
  8. package/build/container-runtime/auth/cred-helpers.d.ts +1 -1
  9. package/build/container-runtime/auth/credential-provider.d.ts +2 -2
  10. package/build/container-runtime/auth/credential-provider.js +3 -3
  11. package/build/container-runtime/auth/creds-store.d.ts +2 -2
  12. package/build/container-runtime/auth/creds-store.js +1 -1
  13. package/build/container-runtime/auth/get-auth-config.d.ts +1 -1
  14. package/build/container-runtime/auth/get-auth-config.js +7 -7
  15. package/build/container-runtime/auth/registry-auth-locator.d.ts +1 -1
  16. package/build/container-runtime/auth/registry-matches.js +1 -1
  17. package/build/container-runtime/clients/client.d.ts +5 -5
  18. package/build/container-runtime/clients/compose/compose-client.d.ts +1 -1
  19. package/build/container-runtime/clients/compose/compose-client.js +1 -3
  20. package/build/container-runtime/clients/compose/default-compose-options.d.ts +2 -2
  21. package/build/container-runtime/clients/compose/default-compose-options.js +5 -3
  22. package/build/container-runtime/clients/compose/types.d.ts +3 -2
  23. package/build/container-runtime/clients/container/container-client.d.ts +5 -4
  24. package/build/container-runtime/clients/container/docker-container-client.d.ts +6 -5
  25. package/build/container-runtime/clients/container/docker-container-client.js +8 -9
  26. package/build/container-runtime/clients/container/types.d.ts +1 -3
  27. package/build/container-runtime/clients/image/docker-image-client.d.ts +4 -3
  28. package/build/container-runtime/clients/image/docker-image-client.js +11 -10
  29. package/build/container-runtime/clients/image/image-client.d.ts +2 -2
  30. package/build/container-runtime/clients/network/docker-network-client.d.ts +3 -2
  31. package/build/container-runtime/clients/network/network-client.d.ts +1 -1
  32. package/build/container-runtime/image-name.js +2 -2
  33. package/build/container-runtime/index.d.ts +1 -1
  34. package/build/container-runtime/strategies/configuration-strategy.d.ts +2 -2
  35. package/build/container-runtime/strategies/configuration-strategy.js +7 -7
  36. package/build/container-runtime/strategies/npipe-socket-strategy.d.ts +2 -2
  37. package/build/container-runtime/strategies/rootless-unix-socket-strategy.d.ts +2 -2
  38. package/build/container-runtime/strategies/rootless-unix-socket-strategy.js +9 -9
  39. package/build/container-runtime/strategies/strategy.d.ts +1 -1
  40. package/build/container-runtime/strategies/testcontainers-host-strategy.d.ts +2 -2
  41. package/build/container-runtime/strategies/testcontainers-host-strategy.js +2 -2
  42. package/build/container-runtime/strategies/types.d.ts +1 -1
  43. package/build/container-runtime/strategies/unix-socket-strategy.d.ts +2 -2
  44. package/build/container-runtime/strategies/unix-socket-strategy.js +2 -2
  45. package/build/container-runtime/strategies/utils/config.js +12 -12
  46. package/build/container-runtime/utils/attach-container.d.ts +2 -2
  47. package/build/container-runtime/utils/demux-stream.d.ts +2 -2
  48. package/build/container-runtime/utils/demux-stream.js +2 -2
  49. package/build/container-runtime/utils/image-exists.d.ts +2 -2
  50. package/build/container-runtime/utils/lookup-host-ips.d.ts +1 -1
  51. package/build/container-runtime/utils/lookup-host-ips.js +4 -4
  52. package/build/container-runtime/utils/pull-image.d.ts +2 -2
  53. package/build/container-runtime/utils/remote-container-runtime-socket-path.d.ts +1 -1
  54. package/build/container-runtime/utils/remote-container-runtime-socket-path.js +2 -2
  55. package/build/container-runtime/utils/resolve-host.d.ts +2 -2
  56. package/build/container-runtime/utils/resolve-host.js +4 -4
  57. package/build/container-runtime/utils/run-in-container.d.ts +1 -1
  58. package/build/container-runtime/utils/run-in-container.js +2 -1
  59. package/build/container-runtime/utils/start-container.d.ts +1 -1
  60. package/build/docker-compose-environment/docker-compose-environment.d.ts +5 -5
  61. package/build/docker-compose-environment/docker-compose-environment.js +13 -7
  62. package/build/docker-compose-environment/started-docker-compose-environment.d.ts +2 -2
  63. package/build/docker-compose-environment/stopped-docker-compose-environment.d.ts +1 -1
  64. package/build/generic-container/abstract-started-container.d.ts +3 -3
  65. package/build/generic-container/abstract-stopped-container.d.ts +1 -1
  66. package/build/generic-container/generic-container-builder.d.ts +3 -3
  67. package/build/generic-container/generic-container-builder.js +5 -5
  68. package/build/generic-container/generic-container.d.ts +9 -9
  69. package/build/generic-container/generic-container.js +10 -4
  70. package/build/generic-container/inspect-container-util-ports-exposed.d.ts +1 -1
  71. package/build/generic-container/inspect-container-util-ports-exposed.js +1 -1
  72. package/build/generic-container/started-generic-container.d.ts +6 -5
  73. package/build/generic-container/started-generic-container.js +19 -16
  74. package/build/generic-container/stopped-generic-container.d.ts +2 -2
  75. package/build/index.d.ts +4 -4
  76. package/build/index.js +3 -3
  77. package/build/network/network.d.ts +3 -3
  78. package/build/port-forwarder/port-forwarder.d.ts +2 -3
  79. package/build/port-forwarder/port-forwarder.js +25 -19
  80. package/build/reaper/reaper.d.ts +1 -1
  81. package/build/reaper/reaper.js +21 -19
  82. package/build/socat/socat-container.d.ts +0 -2
  83. package/build/socat/socat-container.js +0 -3
  84. package/build/test-container.d.ts +6 -6
  85. package/build/test-containers.js +2 -1
  86. package/build/types.d.ts +3 -4
  87. package/build/utils/bound-ports.d.ts +3 -3
  88. package/build/utils/bound-ports.js +2 -2
  89. package/build/utils/dockerfile-parser.d.ts +1 -1
  90. package/build/utils/dockerfile-parser.js +2 -2
  91. package/build/utils/labels.d.ts +0 -2
  92. package/build/utils/labels.js +5 -5
  93. package/build/utils/map-inspect-result.d.ts +2 -2
  94. package/build/utils/map-inspect-result.js +12 -13
  95. package/build/utils/pull-policy.js +1 -0
  96. package/build/version.d.ts +1 -1
  97. package/build/version.js +1 -1
  98. package/build/wait-strategies/composite-wait-strategy.d.ts +3 -3
  99. package/build/wait-strategies/composite-wait-strategy.js +3 -1
  100. package/build/wait-strategies/health-check-wait-strategy.d.ts +1 -1
  101. package/build/wait-strategies/host-port-wait-strategy.d.ts +2 -2
  102. package/build/wait-strategies/http-wait-strategy.d.ts +2 -2
  103. package/build/wait-strategies/http-wait-strategy.js +4 -7
  104. package/build/wait-strategies/log-wait-strategy.d.ts +3 -3
  105. package/build/wait-strategies/log-wait-strategy.js +1 -1
  106. package/build/wait-strategies/one-shot-startup-startegy.d.ts +2 -2
  107. package/build/wait-strategies/shell-wait-strategy.d.ts +1 -1
  108. package/build/wait-strategies/startup-check-strategy.d.ts +1 -2
  109. package/build/wait-strategies/startup-check-strategy.js +0 -3
  110. package/build/wait-strategies/utils/health-check.d.ts +2 -4
  111. package/build/wait-strategies/utils/health-check.js +4 -6
  112. package/build/wait-strategies/utils/port-check.d.ts +2 -2
  113. package/build/wait-strategies/utils/port-check.js +2 -2
  114. package/build/wait-strategies/utils/undici-response-parser.d.ts +1 -1
  115. package/build/wait-strategies/utils/undici-response-parser.js +2 -2
  116. package/build/wait-strategies/utils/wait-strategy-selector.d.ts +4 -4
  117. package/build/wait-strategies/wait-for-container.d.ts +4 -4
  118. package/build/wait-strategies/wait-strategy.d.ts +2 -2
  119. package/build/wait-strategies/wait.d.ts +3 -3
  120. package/build/wait-strategies/wait.js +1 -0
  121. package/package.json +2 -3
  122. package/build/common/streams.d.ts +0 -6
  123. package/build/common/streams.js +0 -12
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.withFileLock = withFileLock;
7
- const promises_1 = require("fs/promises");
8
- const path_1 = __importDefault(require("path"));
7
+ const promises_1 = require("node:fs/promises");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
9
  const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
10
10
  const tmp_1 = __importDefault(require("tmp"));
11
11
  const logger_1 = require("./logger");
@@ -29,7 +29,7 @@ async function withFileLock(fileName, fn) {
29
29
  }
30
30
  }
31
31
  async function createEmptyTmpFile(fileName) {
32
- const file = path_1.default.resolve(tmp_1.default.tmpdir, fileName);
32
+ const file = node_path_1.default.resolve(tmp_1.default.tmpdir, fileName);
33
33
  await (0, promises_1.writeFile)(file, "");
34
34
  return file;
35
35
  }
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.hash = hash;
7
- const crypto_1 = __importDefault(require("crypto"));
7
+ const node_crypto_1 = __importDefault(require("node:crypto"));
8
8
  function hash(str) {
9
- return crypto_1.default.createHash("sha256").update(str).digest("hex");
9
+ return node_crypto_1.default.createHash("sha256").update(str).digest("hex");
10
10
  }
@@ -1,8 +1,7 @@
1
1
  export { withFileLock } from "./file-lock";
2
2
  export { hash } from "./hash";
3
- export { Logger, buildLog, composeLog, containerLog, execLog, log, pullLog } from "./logger";
3
+ export { buildLog, composeLog, containerLog, execLog, Logger, log, pullLog } from "./logger";
4
4
  export { IntervalRetry, Retry } from "./retry";
5
- export { streamToString } from "./streams";
6
5
  export * from "./time";
7
6
  export * from "./type-guards";
8
- export { RandomUuid, Uuid, randomUuid } from "./uuid";
7
+ export { RandomUuid, randomUuid, Uuid } from "./uuid";
@@ -14,23 +14,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.randomUuid = exports.RandomUuid = exports.streamToString = exports.IntervalRetry = exports.pullLog = exports.log = exports.execLog = exports.containerLog = exports.composeLog = exports.buildLog = exports.Logger = exports.hash = exports.withFileLock = void 0;
17
+ exports.randomUuid = exports.RandomUuid = exports.IntervalRetry = exports.pullLog = exports.log = exports.Logger = exports.execLog = exports.containerLog = exports.composeLog = exports.buildLog = exports.hash = exports.withFileLock = void 0;
18
18
  var file_lock_1 = require("./file-lock");
19
19
  Object.defineProperty(exports, "withFileLock", { enumerable: true, get: function () { return file_lock_1.withFileLock; } });
20
20
  var hash_1 = require("./hash");
21
21
  Object.defineProperty(exports, "hash", { enumerable: true, get: function () { return hash_1.hash; } });
22
22
  var logger_1 = require("./logger");
23
- Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
24
23
  Object.defineProperty(exports, "buildLog", { enumerable: true, get: function () { return logger_1.buildLog; } });
25
24
  Object.defineProperty(exports, "composeLog", { enumerable: true, get: function () { return logger_1.composeLog; } });
26
25
  Object.defineProperty(exports, "containerLog", { enumerable: true, get: function () { return logger_1.containerLog; } });
27
26
  Object.defineProperty(exports, "execLog", { enumerable: true, get: function () { return logger_1.execLog; } });
27
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
28
28
  Object.defineProperty(exports, "log", { enumerable: true, get: function () { return logger_1.log; } });
29
29
  Object.defineProperty(exports, "pullLog", { enumerable: true, get: function () { return logger_1.pullLog; } });
30
30
  var retry_1 = require("./retry");
31
31
  Object.defineProperty(exports, "IntervalRetry", { enumerable: true, get: function () { return retry_1.IntervalRetry; } });
32
- var streams_1 = require("./streams");
33
- Object.defineProperty(exports, "streamToString", { enumerable: true, get: function () { return streams_1.streamToString; } });
34
32
  __exportStar(require("./time"), exports);
35
33
  __exportStar(require("./type-guards"), exports);
36
34
  var uuid_1 = require("./uuid");
@@ -1,4 +1,4 @@
1
- import { Clock, Time } from "./clock";
1
+ import { type Clock, type Time } from "./clock";
2
2
  export interface Retry<T, U> {
3
3
  retryUntil(fn: () => Promise<T>, predicate: (result: T) => boolean | Promise<boolean>, onTimeout: () => U, timeoutMs: number): Promise<T | U>;
4
4
  }
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.randomUuid = exports.RandomUuid = void 0;
7
- const crypto_1 = __importDefault(require("crypto"));
7
+ const node_crypto_1 = __importDefault(require("node:crypto"));
8
8
  const hash_1 = require("./hash");
9
9
  class RandomUuid {
10
10
  nextUuid() {
11
- return (0, hash_1.hash)(crypto_1.default.randomUUID()).substring(0, 12);
11
+ return (0, hash_1.hash)(node_crypto_1.default.randomUUID()).substring(0, 12);
12
12
  }
13
13
  }
14
14
  exports.RandomUuid = RandomUuid;
@@ -1,5 +1,5 @@
1
- import { RegistryAuthLocator } from "./registry-auth-locator";
2
- import { AuthConfig, ContainerRuntimeConfig } from "./types";
1
+ import type { RegistryAuthLocator } from "./registry-auth-locator";
2
+ import type { AuthConfig, ContainerRuntimeConfig } from "./types";
3
3
  export declare class Auths implements RegistryAuthLocator {
4
4
  getName(): string;
5
5
  getAuthConfig(registry: string, dockerConfig: ContainerRuntimeConfig): Promise<AuthConfig | undefined>;
@@ -1,5 +1,5 @@
1
1
  import { CredentialProvider } from "./credential-provider";
2
- import { ContainerRuntimeConfig } from "./types";
2
+ import type { ContainerRuntimeConfig } from "./types";
3
3
  export declare class CredHelpers extends CredentialProvider {
4
4
  getName(): string;
5
5
  getCredentialProviderName(registry: string, dockerConfig: ContainerRuntimeConfig): string | undefined;
@@ -1,5 +1,5 @@
1
- import { RegistryAuthLocator } from "./registry-auth-locator";
2
- import { AuthConfig, ContainerRuntimeConfig } from "./types";
1
+ import type { RegistryAuthLocator } from "./registry-auth-locator";
2
+ import type { AuthConfig, ContainerRuntimeConfig } from "./types";
3
3
  export declare abstract class CredentialProvider implements RegistryAuthLocator {
4
4
  abstract getName(): string;
5
5
  abstract getCredentialProviderName(registry: string, dockerConfig: ContainerRuntimeConfig): string | undefined;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CredentialProvider = void 0;
4
- const child_process_1 = require("child_process");
4
+ const node_child_process_1 = require("node:child_process");
5
5
  const common_1 = require("../../common");
6
6
  class CredentialProvider {
7
7
  async getAuthConfig(registry, dockerConfig) {
@@ -15,7 +15,7 @@ class CredentialProvider {
15
15
  }
16
16
  runCredentialProvider(registry, providerName) {
17
17
  return new Promise((resolve, reject) => {
18
- const sink = (0, child_process_1.spawn)(providerName, ["get"]);
18
+ const sink = (0, node_child_process_1.spawn)(providerName, ["get"]);
19
19
  const chunks = [];
20
20
  sink.stdout.on("data", (chunk) => chunks.push(chunk));
21
21
  sink.on("error", (err) => {
@@ -35,7 +35,7 @@ class CredentialProvider {
35
35
  : this.parseUsernamePasswordConfig(registry, credentialProviderResponse);
36
36
  return resolve(authConfig);
37
37
  }
38
- catch (e) {
38
+ catch (_e) {
39
39
  common_1.log.error(`Unexpected response from Docker credential provider GET command: "${response}"`);
40
40
  return reject(new Error("Unexpected response from Docker credential provider GET command"));
41
41
  }
@@ -1,6 +1,6 @@
1
1
  import { CredentialProvider } from "./credential-provider";
2
- import { ContainerRuntimeConfig } from "./types";
2
+ import type { ContainerRuntimeConfig } from "./types";
3
3
  export declare class CredsStore extends CredentialProvider {
4
4
  getName(): string;
5
- getCredentialProviderName(registry: string, dockerConfig: ContainerRuntimeConfig): string | undefined;
5
+ getCredentialProviderName(_registry: string, dockerConfig: ContainerRuntimeConfig): string | undefined;
6
6
  }
@@ -6,7 +6,7 @@ class CredsStore extends credential_provider_1.CredentialProvider {
6
6
  getName() {
7
7
  return "CredsStore";
8
8
  }
9
- getCredentialProviderName(registry, dockerConfig) {
9
+ getCredentialProviderName(_registry, dockerConfig) {
10
10
  if (dockerConfig.credsStore !== undefined && dockerConfig.credsStore.length > 0) {
11
11
  return dockerConfig.credsStore;
12
12
  }
@@ -1,2 +1,2 @@
1
- import { AuthConfig } from "./types";
1
+ import type { AuthConfig } from "./types";
2
2
  export declare const getAuthConfig: (registry: string) => Promise<AuthConfig | undefined>;
@@ -4,21 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getAuthConfig = void 0;
7
- const fs_1 = require("fs");
8
- const promises_1 = require("fs/promises");
9
- const os_1 = __importDefault(require("os"));
10
- const path_1 = __importDefault(require("path"));
7
+ const node_fs_1 = require("node:fs");
8
+ const promises_1 = require("node:fs/promises");
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
11
  const common_1 = require("../../common");
12
12
  const auths_1 = require("./auths");
13
13
  const cred_helpers_1 = require("./cred-helpers");
14
14
  const creds_store_1 = require("./creds-store");
15
- const dockerConfigLocation = process.env.DOCKER_CONFIG || `${os_1.default.homedir()}/.docker`;
16
- const dockerConfigFile = path_1.default.resolve(dockerConfigLocation, "config.json");
15
+ const dockerConfigLocation = process.env.DOCKER_CONFIG || `${node_os_1.default.homedir()}/.docker`;
16
+ const dockerConfigFile = node_path_1.default.resolve(dockerConfigLocation, "config.json");
17
17
  const readDockerConfig = async () => {
18
18
  if (process.env.DOCKER_AUTH_CONFIG) {
19
19
  return parseDockerConfig(process.env.DOCKER_AUTH_CONFIG);
20
20
  }
21
- else if ((0, fs_1.existsSync)(dockerConfigFile)) {
21
+ else if ((0, node_fs_1.existsSync)(dockerConfigFile)) {
22
22
  return parseDockerConfig((await (0, promises_1.readFile)(dockerConfigFile)).toString());
23
23
  }
24
24
  else {
@@ -1,4 +1,4 @@
1
- import { AuthConfig, ContainerRuntimeConfig } from "./types";
1
+ import type { AuthConfig, ContainerRuntimeConfig } from "./types";
2
2
  export interface RegistryAuthLocator {
3
3
  getName(): string;
4
4
  getAuthConfig(registry: string, dockerConfig: ContainerRuntimeConfig): Promise<AuthConfig | undefined>;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registryMatches = void 0;
4
- const registryMatches = (authConfigRegistry, requestedRegistry) => authConfigRegistry == requestedRegistry || authConfigRegistry.endsWith("://" + requestedRegistry);
4
+ const registryMatches = (authConfigRegistry, requestedRegistry) => authConfigRegistry === requestedRegistry || authConfigRegistry.endsWith(`://${requestedRegistry}`);
5
5
  exports.registryMatches = registryMatches;
@@ -1,8 +1,8 @@
1
- import { ComposeClient } from "./compose/compose-client";
2
- import { ContainerClient } from "./container/container-client";
3
- import { ImageClient } from "./image/image-client";
4
- import { NetworkClient } from "./network/network-client";
5
- import { Info } from "./types";
1
+ import { type ComposeClient } from "./compose/compose-client";
2
+ import type { ContainerClient } from "./container/container-client";
3
+ import type { ImageClient } from "./image/image-client";
4
+ import type { NetworkClient } from "./network/network-client";
5
+ import type { Info } from "./types";
6
6
  export declare class ContainerRuntimeClient {
7
7
  readonly info: Info;
8
8
  readonly compose: ComposeClient;
@@ -1,4 +1,4 @@
1
- import { ComposeDownOptions, ComposeOptions } from "./types";
1
+ import type { ComposeDownOptions, ComposeOptions } from "./types";
2
2
  export interface ComposeClient {
3
3
  up(options: ComposeOptions, services?: Array<string>): Promise<void>;
4
4
  pull(options: ComposeOptions, services?: Array<string>): Promise<void>;
@@ -11,7 +11,7 @@ async function getComposeClient(environment) {
11
11
  try {
12
12
  return new DockerComposeClient(environment);
13
13
  }
14
- catch (err) {
14
+ catch (_err) {
15
15
  return new MissingComposeClient();
16
16
  }
17
17
  }
@@ -85,7 +85,6 @@ class DockerComposeClient {
85
85
  }
86
86
  }
87
87
  class MissingComposeClient {
88
- constructor() { }
89
88
  up() {
90
89
  throw new Error("Compose is not installed");
91
90
  }
@@ -99,7 +98,6 @@ class MissingComposeClient {
99
98
  throw new Error("Compose is not installed");
100
99
  }
101
100
  }
102
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
103
101
  async function handleAndRethrow(err, handle) {
104
102
  const error = err instanceof Error ? err : new Error(err.err.trim());
105
103
  await handle(error);
@@ -1,3 +1,3 @@
1
- import { IDockerComposeOptions } from "docker-compose";
2
- import { ComposeOptions } from "./types";
1
+ import type { IDockerComposeOptions } from "docker-compose";
2
+ import type { ComposeOptions } from "./types";
3
3
  export declare function defaultComposeOptions(environment: NodeJS.ProcessEnv, options: ComposeOptions): Partial<IDockerComposeOptions>;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultComposeOptions = defaultComposeOptions;
4
- const os_1 = require("os");
4
+ const node_os_1 = require("node:os");
5
5
  const common_1 = require("../../../common");
6
6
  function defaultComposeOptions(environment, options) {
7
7
  const log = options.logger ?? common_1.composeLog;
@@ -11,9 +11,11 @@ function defaultComposeOptions(environment, options) {
11
11
  ? (chunk) => {
12
12
  chunk
13
13
  .toString()
14
- .split(os_1.EOL)
14
+ .split(node_os_1.EOL)
15
15
  .filter(common_1.isNotEmptyString)
16
- .forEach((line) => log.trace(line.trim()));
16
+ .forEach((line) => {
17
+ log.trace(line.trim());
18
+ });
17
19
  }
18
20
  : undefined,
19
21
  cwd: options.filePath,
@@ -1,4 +1,4 @@
1
- import { Logger } from "../../../common";
1
+ import type { Logger } from "../../../common";
2
2
  export type ComposeOptions = {
3
3
  filePath: string;
4
4
  files: string | string[];
@@ -9,7 +9,7 @@ export type ComposeOptions = {
9
9
  logger?: Logger;
10
10
  executable?: ComposeExecutableOptions;
11
11
  };
12
- export type ComposeExecutableOptions = {
12
+ type ComposeExecutableOptions = {
13
13
  executablePath: string;
14
14
  options?: string[] | (string | string[])[];
15
15
  standalone?: never;
@@ -22,3 +22,4 @@ export type ComposeDownOptions = {
22
22
  timeout: number;
23
23
  removeVolumes: boolean;
24
24
  };
25
+ export {};
@@ -1,7 +1,8 @@
1
- import Dockerode, { Container, ContainerCreateOptions, ContainerInfo, ContainerInspectInfo, ContainerLogsOptions, Network } from "dockerode";
2
- import { Readable } from "stream";
3
- import { CopyToContainerOptions } from "../../../types";
4
- import { ContainerCommitOptions, ContainerStatus, ExecOptions, ExecResult } from "./types";
1
+ import type { Readable } from "node:stream";
2
+ import type Dockerode from "dockerode";
3
+ import type { Container, ContainerCreateOptions, ContainerInfo, ContainerInspectInfo, ContainerLogsOptions, Network } from "dockerode";
4
+ import type { CopyToContainerOptions } from "../../../types";
5
+ import type { ContainerCommitOptions, ContainerStatus, ExecOptions, ExecResult } from "./types";
5
6
  export interface ContainerClient {
6
7
  dockerode: Dockerode;
7
8
  getById(id: string): Container;
@@ -1,8 +1,9 @@
1
- import Dockerode, { Container, ContainerCreateOptions, ContainerInfo, ContainerInspectInfo, ContainerLogsOptions, Network } from "dockerode";
2
- import { Readable } from "stream";
3
- import { CopyToContainerOptions } from "../../../types";
4
- import { ContainerClient } from "./container-client";
5
- import { ContainerCommitOptions, ContainerStatus, ExecOptions, ExecResult } from "./types";
1
+ import { type Readable } from "node:stream";
2
+ import type Dockerode from "dockerode";
3
+ import type { Container, ContainerCreateOptions, ContainerInfo, ContainerInspectInfo, ContainerLogsOptions, Network } from "dockerode";
4
+ import type { CopyToContainerOptions } from "../../../types";
5
+ import type { ContainerClient } from "./container-client";
6
+ import type { ContainerCommitOptions, ContainerStatus, ExecOptions, ExecResult } from "./types";
6
7
  export declare class DockerContainerClient implements ContainerClient {
7
8
  readonly dockerode: Dockerode;
8
9
  constructor(dockerode: Dockerode);
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DockerContainerClient = void 0;
4
- const stream_1 = require("stream");
5
- const promises_1 = require("stream/promises");
4
+ const node_stream_1 = require("node:stream");
5
+ const promises_1 = require("node:stream/promises");
6
6
  const common_1 = require("../../../common");
7
7
  class DockerContainerClient {
8
8
  dockerode;
@@ -63,11 +63,11 @@ class DockerContainerClient {
63
63
  async putArchive(container, stream, path, options) {
64
64
  try {
65
65
  common_1.log.debug(`Putting archive to container...`, { containerId: container.id });
66
- await (0, common_1.streamToString)(stream_1.Readable.from(await container.putArchive(stream, {
66
+ await container.putArchive(stream, {
67
67
  path,
68
68
  noOverwriteDirNonDir: options?.noOverwriteDirNonDir,
69
69
  copyUIDGID: options?.copyUIDGID,
70
- })));
70
+ });
71
71
  common_1.log.debug(`Put archive to container`, { containerId: container.id });
72
72
  }
73
73
  catch (err) {
@@ -124,7 +124,6 @@ class DockerContainerClient {
124
124
  common_1.log.debug(`Stopping container...`, { containerId: container.id });
125
125
  await container.stop({ t: (0, common_1.toSeconds)(opts?.timeout ?? 0) });
126
126
  common_1.log.debug(`Stopped container`, { containerId: container.id });
127
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
128
127
  }
129
128
  catch (err) {
130
129
  if (err.statusCode === 304) {
@@ -155,7 +154,7 @@ class DockerContainerClient {
155
154
  }
156
155
  logs(container, opts) {
157
156
  common_1.log.debug(`Fetching container logs...`, { containerId: container.id });
158
- const proxyStream = new stream_1.PassThrough();
157
+ const proxyStream = new node_stream_1.PassThrough();
159
158
  proxyStream.setEncoding("utf8");
160
159
  container
161
160
  .logs({
@@ -208,8 +207,8 @@ class DockerContainerClient {
208
207
  }
209
208
  const exec = await container.exec(execOptions);
210
209
  const stream = await exec.start({ stdin: true, Detach: false, Tty: false });
211
- const stdoutStream = new stream_1.PassThrough();
212
- const stderrStream = new stream_1.PassThrough();
210
+ const stdoutStream = new node_stream_1.PassThrough();
211
+ const stderrStream = new node_stream_1.PassThrough();
213
212
  this.dockerode.modem.demuxStream(stream, stdoutStream, stderrStream);
214
213
  const processStream = (stream, chunks) => {
215
214
  stream.on("data", (chunk) => {
@@ -300,7 +299,7 @@ class DockerContainerClient {
300
299
  async demuxStream(containerId, stream) {
301
300
  try {
302
301
  common_1.log.debug(`Demuxing stream...`, { containerId });
303
- const demuxedStream = new stream_1.PassThrough({ autoDestroy: true, encoding: "utf-8" });
302
+ const demuxedStream = new node_stream_1.PassThrough({ autoDestroy: true, encoding: "utf-8" });
304
303
  this.dockerode.modem.demuxStream(stream, demuxedStream, demuxedStream);
305
304
  stream.on("end", () => demuxedStream.end());
306
305
  demuxedStream.on("close", () => {
@@ -1,6 +1,4 @@
1
- export type Environment = {
2
- [key in string]: string;
3
- };
1
+ import type { Environment } from "../../../types";
4
2
  export type ExecOptions = {
5
3
  workingDir: string;
6
4
  user: string;
@@ -1,6 +1,7 @@
1
- import Dockerode, { ImageBuildOptions, ImageInspectInfo } from "dockerode";
2
- import { ImageName } from "../../image-name";
3
- import { ImageClient } from "./image-client";
1
+ import type Dockerode from "dockerode";
2
+ import type { ImageBuildOptions, ImageInspectInfo } from "dockerode";
3
+ import type { ImageName } from "../../image-name";
4
+ import type { ImageClient } from "./image-client";
4
5
  export declare class DockerImageClient implements ImageClient {
5
6
  protected readonly dockerode: Dockerode;
6
7
  protected readonly indexServerAddress: string;
@@ -4,11 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DockerImageClient = void 0;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_stream_1 = require("node:stream");
7
10
  const dockerignore_1 = __importDefault(require("@balena/dockerignore"));
8
11
  const async_lock_1 = __importDefault(require("async-lock"));
9
12
  const byline_1 = __importDefault(require("byline"));
10
- const fs_1 = require("fs");
11
- const path_1 = __importDefault(require("path"));
12
13
  const tar_fs_1 = __importDefault(require("tar-fs"));
13
14
  const common_1 = require("../../../common");
14
15
  const get_auth_config_1 = require("../../auth/get-auth-config");
@@ -25,7 +26,7 @@ class DockerImageClient {
25
26
  try {
26
27
  common_1.log.debug(`Building image "${opts.t}" with context "${context}"...`);
27
28
  const tarPackOptions = await this.createTarPackOptions(context, opts.dockerfile ?? "Dockerfile");
28
- const tarStream = tar_fs_1.default.pack(context, tarPackOptions);
29
+ const tarStream = node_stream_1.Readable.from(tar_fs_1.default.pack(context, tarPackOptions));
29
30
  await new Promise((resolve) => {
30
31
  this.dockerode
31
32
  .buildImage(tarStream, opts)
@@ -48,16 +49,16 @@ class DockerImageClient {
48
49
  }
49
50
  }
50
51
  async createTarPackOptions(context, dockerfileName) {
51
- const dockerIgnoreFilePath = path_1.default.join(context, ".dockerignore");
52
- if (!(0, fs_1.existsSync)(dockerIgnoreFilePath)) {
52
+ const dockerIgnoreFilePath = node_path_1.default.join(context, ".dockerignore");
53
+ if (!(0, node_fs_1.existsSync)(dockerIgnoreFilePath)) {
53
54
  return {};
54
55
  }
55
- const dockerIgnorePatterns = await fs_1.promises.readFile(dockerIgnoreFilePath, { encoding: "utf-8" });
56
+ const dockerIgnorePatterns = await node_fs_1.promises.readFile(dockerIgnoreFilePath, { encoding: "utf-8" });
56
57
  const instance = (0, dockerignore_1.default)({ ignorecase: false });
57
58
  instance.add(dockerIgnorePatterns);
58
59
  const allEntries = await this.listContextEntries(context);
59
60
  const includedEntries = instance.filter(allEntries);
60
- const dockerfilePath = this.normalizePathForDockerIgnore(path_1.default.normalize(dockerfileName));
61
+ const dockerfilePath = this.normalizePathForDockerIgnore(node_path_1.default.normalize(dockerfileName));
61
62
  if (!includedEntries.includes(dockerfilePath)) {
62
63
  includedEntries.push(dockerfilePath);
63
64
  }
@@ -71,10 +72,10 @@ class DockerImageClient {
71
72
  if (directory === undefined) {
72
73
  continue;
73
74
  }
74
- const absoluteDirectory = directory.length > 0 ? path_1.default.join(context, directory) : context;
75
- const directoryEntries = await fs_1.promises.readdir(absoluteDirectory, { withFileTypes: true });
75
+ const absoluteDirectory = directory.length > 0 ? node_path_1.default.join(context, directory) : context;
76
+ const directoryEntries = await node_fs_1.promises.readdir(absoluteDirectory, { withFileTypes: true });
76
77
  for (const directoryEntry of directoryEntries) {
77
- const relativeEntry = directory.length > 0 ? path_1.default.join(directory, directoryEntry.name) : directoryEntry.name;
78
+ const relativeEntry = directory.length > 0 ? node_path_1.default.join(directory, directoryEntry.name) : directoryEntry.name;
78
79
  if (directoryEntry.isDirectory()) {
79
80
  directoriesToVisit.push(relativeEntry);
80
81
  }
@@ -1,5 +1,5 @@
1
- import { ImageBuildOptions, ImageInspectInfo } from "dockerode";
2
- import { ImageName } from "../../image-name";
1
+ import type { ImageBuildOptions, ImageInspectInfo } from "dockerode";
2
+ import type { ImageName } from "../../image-name";
3
3
  export interface ImageClient {
4
4
  build(context: string, opts: ImageBuildOptions): Promise<void>;
5
5
  pull(imageName: ImageName, opts?: {
@@ -1,5 +1,6 @@
1
- import Dockerode, { Network, NetworkCreateOptions } from "dockerode";
2
- import { NetworkClient } from "./network-client";
1
+ import type Dockerode from "dockerode";
2
+ import type { Network, NetworkCreateOptions } from "dockerode";
3
+ import type { NetworkClient } from "./network-client";
3
4
  export declare class DockerNetworkClient implements NetworkClient {
4
5
  protected readonly dockerode: Dockerode;
5
6
  constructor(dockerode: Dockerode);
@@ -1,4 +1,4 @@
1
- import { Network, NetworkCreateOptions } from "dockerode";
1
+ import type { Network, NetworkCreateOptions } from "dockerode";
2
2
  export interface NetworkClient {
3
3
  getById(id: string): Network;
4
4
  create(opts: NetworkCreateOptions): Promise<Network>;
@@ -68,7 +68,7 @@ class ImageName {
68
68
  this.digest === other.digest);
69
69
  }
70
70
  static fromString(string) {
71
- const registry = this.getRegistry(string);
71
+ const registry = ImageName.getRegistry(string);
72
72
  const stringWithoutRegistry = registry ? string.split("/").slice(1).join("/") : string;
73
73
  const [imageAndTag, digest] = stringWithoutRegistry.split("@");
74
74
  if (imageAndTag.includes(":")) {
@@ -84,7 +84,7 @@ class ImageName {
84
84
  }
85
85
  static getRegistry(string) {
86
86
  const parts = string.split("/");
87
- if (parts.length > 1 && this.isRegistry(parts[0])) {
87
+ if (parts.length > 1 && ImageName.isRegistry(parts[0])) {
88
88
  return parts[0];
89
89
  }
90
90
  }
@@ -1,6 +1,6 @@
1
1
  export { getAuthConfig } from "./auth/get-auth-config";
2
2
  export { ContainerRuntimeClient, getContainerRuntimeClient } from "./clients/client";
3
3
  export { parseComposeContainerName } from "./clients/compose/parse-compose-container-name";
4
- export { ComposeDownOptions, ComposeExecutableOptions, ComposeOptions } from "./clients/compose/types";
4
+ export { ComposeDownOptions, ComposeOptions } from "./clients/compose/types";
5
5
  export { HostIp } from "./clients/types";
6
6
  export { ImageName } from "./image-name";
@@ -1,5 +1,5 @@
1
- import { ContainerRuntimeClientStrategy } from "./strategy";
2
- import { ContainerRuntimeClientStrategyResult } from "./types";
1
+ import type { ContainerRuntimeClientStrategy } from "./strategy";
2
+ import type { ContainerRuntimeClientStrategyResult } from "./types";
3
3
  export declare class ConfigurationStrategy implements ContainerRuntimeClientStrategy {
4
4
  getName(): string;
5
5
  getResult(): Promise<ContainerRuntimeClientStrategyResult | undefined>;
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ConfigurationStrategy = void 0;
7
- const promises_1 = __importDefault(require("fs/promises"));
8
- const path_1 = __importDefault(require("path"));
9
- const url_1 = require("url");
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const node_url_1 = require("node:url");
10
10
  const config_1 = require("./utils/config");
11
11
  class ConfigurationStrategy {
12
12
  getName() {
@@ -18,7 +18,7 @@ class ConfigurationStrategy {
18
18
  return undefined;
19
19
  }
20
20
  const dockerOptions = {};
21
- const { pathname, hostname, port } = new url_1.URL(dockerHost);
21
+ const { pathname, hostname, port } = new node_url_1.URL(dockerHost);
22
22
  if (hostname !== "") {
23
23
  dockerOptions.host = hostname;
24
24
  dockerOptions.port = port;
@@ -27,9 +27,9 @@ class ConfigurationStrategy {
27
27
  dockerOptions.socketPath = pathname;
28
28
  }
29
29
  if (dockerTlsVerify === "1" && dockerCertPath !== undefined) {
30
- dockerOptions.ca = await promises_1.default.readFile(path_1.default.resolve(dockerCertPath, "ca.pem"));
31
- dockerOptions.cert = await promises_1.default.readFile(path_1.default.resolve(dockerCertPath, "cert.pem"));
32
- dockerOptions.key = await promises_1.default.readFile(path_1.default.resolve(dockerCertPath, "key.pem"));
30
+ dockerOptions.ca = await promises_1.default.readFile(node_path_1.default.resolve(dockerCertPath, "ca.pem"));
31
+ dockerOptions.cert = await promises_1.default.readFile(node_path_1.default.resolve(dockerCertPath, "cert.pem"));
32
+ dockerOptions.key = await promises_1.default.readFile(node_path_1.default.resolve(dockerCertPath, "key.pem"));
33
33
  }
34
34
  return {
35
35
  uri: dockerHost,
@@ -1,5 +1,5 @@
1
- import { ContainerRuntimeClientStrategy } from "./strategy";
2
- import { ContainerRuntimeClientStrategyResult } from "./types";
1
+ import type { ContainerRuntimeClientStrategy } from "./strategy";
2
+ import type { ContainerRuntimeClientStrategyResult } from "./types";
3
3
  export declare class NpipeSocketStrategy implements ContainerRuntimeClientStrategy {
4
4
  private readonly platform;
5
5
  constructor(platform?: NodeJS.Platform);
@@ -1,5 +1,5 @@
1
- import { ContainerRuntimeClientStrategy } from "./strategy";
2
- import { ContainerRuntimeClientStrategyResult } from "./types";
1
+ import type { ContainerRuntimeClientStrategy } from "./strategy";
2
+ import type { ContainerRuntimeClientStrategyResult } from "./types";
3
3
  export declare class RootlessUnixSocketStrategy implements ContainerRuntimeClientStrategy {
4
4
  private readonly platform;
5
5
  private readonly env;