testcontainers 9.12.0 → 10.0.0-beta.5
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/{dist/src → build/common}/clock.js +1 -0
- package/build/common/clock.js.map +1 -0
- package/build/common/file-lock.js +58 -0
- package/build/common/file-lock.js.map +1 -0
- package/build/common/hash.d.ts +1 -0
- package/{dist/src → build/common}/hash.js +3 -2
- package/build/common/hash.js.map +1 -0
- package/build/common/index.d.ts +7 -0
- package/build/common/index.js +37 -0
- package/build/common/index.js.map +1 -0
- package/{dist/src → build/common}/logger.d.ts +5 -6
- package/{dist/src → build/common}/logger.js +5 -2
- package/build/common/logger.js.map +1 -0
- package/{dist/src/retry-strategy.d.ts → build/common/retry.d.ts} +3 -3
- package/build/common/retry.js +38 -0
- package/build/common/retry.js.map +1 -0
- package/build/common/streams.js +13 -0
- package/build/common/streams.js.map +1 -0
- package/{dist/src → build/common}/type-guards.js +1 -0
- package/build/common/type-guards.js.map +1 -0
- package/{dist/src → build/common}/uuid.js +1 -0
- package/build/common/uuid.js.map +1 -0
- package/build/container-runtime/auth/auths.d.ts +7 -0
- package/build/container-runtime/auth/auths.js +45 -0
- package/build/container-runtime/auth/auths.js.map +1 -0
- package/build/container-runtime/auth/cred-helpers.d.ts +6 -0
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/cred-helpers.js +1 -0
- package/build/container-runtime/auth/cred-helpers.js.map +1 -0
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/credential-provider.d.ts +3 -4
- package/build/container-runtime/auth/credential-provider.js +71 -0
- package/build/container-runtime/auth/credential-provider.js.map +1 -0
- package/build/container-runtime/auth/creds-store.d.ts +6 -0
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/creds-store.js +1 -0
- package/build/container-runtime/auth/creds-store.js.map +1 -0
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/get-auth-config.d.ts +1 -1
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/get-auth-config.js +11 -19
- package/build/container-runtime/auth/get-auth-config.js.map +1 -0
- package/build/container-runtime/auth/registry-auth-locator.d.ts +5 -0
- package/build/container-runtime/auth/registry-auth-locator.js +3 -0
- package/build/container-runtime/auth/registry-auth-locator.js.map +1 -0
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/registry-matches.js +1 -0
- package/build/container-runtime/auth/registry-matches.js.map +1 -0
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/types.d.ts +13 -1
- package/{dist/src/registry-auth-locator → build/container-runtime/auth}/types.js +1 -0
- package/build/container-runtime/auth/types.js.map +1 -0
- package/build/container-runtime/clients/client.d.ts +14 -0
- package/build/container-runtime/clients/client.js +105 -0
- package/build/container-runtime/clients/client.js.map +1 -0
- package/build/container-runtime/clients/compose/compose-client.d.ts +11 -0
- package/build/container-runtime/clients/compose/compose-client.js +238 -0
- package/build/container-runtime/clients/compose/compose-client.js.map +1 -0
- package/build/container-runtime/clients/compose/default-compose-options.d.ts +4 -0
- package/build/container-runtime/clients/compose/default-compose-options.js +31 -0
- package/build/container-runtime/clients/compose/default-compose-options.js.map +1 -0
- package/build/container-runtime/clients/compose/parse-compose-container-name.d.ts +1 -0
- package/{dist/src/docker-compose/container-name-resolver.js → build/container-runtime/clients/compose/parse-compose-container-name.js} +5 -4
- package/build/container-runtime/clients/compose/parse-compose-container-name.js.map +1 -0
- package/build/container-runtime/clients/compose/types.d.ts +15 -0
- package/{dist/src/docker → build/container-runtime/clients/compose}/types.js +1 -0
- package/build/container-runtime/clients/compose/types.js.map +1 -0
- package/build/container-runtime/clients/container/container-client.d.ts +32 -0
- package/build/container-runtime/clients/container/container-client.js +3 -0
- package/build/container-runtime/clients/container/container-client.js.map +1 -0
- package/build/container-runtime/clients/container/docker-container-client.d.ts +35 -0
- package/build/container-runtime/clients/container/docker-container-client.js +276 -0
- package/build/container-runtime/clients/container/docker-container-client.js.map +1 -0
- package/build/container-runtime/clients/container/podman-container-client.d.ts +8 -0
- package/build/container-runtime/clients/container/podman-container-client.js +43 -0
- package/build/container-runtime/clients/container/podman-container-client.js.map +1 -0
- package/build/container-runtime/clients/container/types.d.ts +4 -0
- package/{dist/src/docker/client/docker-client-types.js → build/container-runtime/clients/container/types.js} +1 -0
- package/build/container-runtime/clients/container/types.js.map +1 -0
- package/build/container-runtime/clients/image/docker-image-client.d.ts +16 -0
- package/build/container-runtime/clients/image/docker-image-client.js +119 -0
- package/build/container-runtime/clients/image/docker-image-client.js.map +1 -0
- package/build/container-runtime/clients/image/image-client.d.ts +9 -0
- package/build/container-runtime/clients/image/image-client.js +3 -0
- package/build/container-runtime/clients/image/image-client.js.map +1 -0
- package/build/container-runtime/clients/network/docker-network-client.d.ts +9 -0
- package/build/container-runtime/clients/network/docker-network-client.js +50 -0
- package/build/container-runtime/clients/network/docker-network-client.js.map +1 -0
- package/build/container-runtime/clients/network/network-client.d.ts +6 -0
- package/build/container-runtime/clients/network/network-client.js +3 -0
- package/build/container-runtime/clients/network/network-client.js.map +1 -0
- package/build/container-runtime/clients/types.d.ts +30 -0
- package/{dist/src/docker/client/strategy/docker-client-strategy.js → build/container-runtime/clients/types.js} +1 -0
- package/build/container-runtime/clients/types.js.map +1 -0
- package/build/container-runtime/image-name.d.ts +11 -0
- package/{dist/src/docker-image-name.js → build/container-runtime/image-name.js} +11 -17
- package/build/container-runtime/image-name.js.map +1 -0
- package/build/container-runtime/index.d.ts +6 -0
- package/build/container-runtime/index.js +13 -0
- package/build/container-runtime/index.js.map +1 -0
- package/build/container-runtime/strategies/configuration-strategy.d.ts +9 -0
- package/build/container-runtime/strategies/configuration-strategy.js +53 -0
- package/build/container-runtime/strategies/configuration-strategy.js.map +1 -0
- package/build/container-runtime/strategies/npipe-socket-strategy.d.ts +6 -0
- package/build/container-runtime/strategies/npipe-socket-strategy.js +21 -0
- package/build/container-runtime/strategies/npipe-socket-strategy.js.map +1 -0
- package/build/container-runtime/strategies/rootless-unix-socket-strategy.d.ts +14 -0
- package/build/container-runtime/strategies/rootless-unix-socket-strategy.js +63 -0
- package/build/container-runtime/strategies/rootless-unix-socket-strategy.js.map +1 -0
- package/build/container-runtime/strategies/strategy.d.ts +5 -0
- package/{dist/src/registry-auth-locator/registry-auth-locator.js → build/container-runtime/strategies/strategy.js} +1 -0
- package/build/container-runtime/strategies/strategy.js.map +1 -0
- package/build/container-runtime/strategies/testcontainers-host-strategy.d.ts +6 -0
- package/build/container-runtime/strategies/testcontainers-host-strategy.js +30 -0
- package/build/container-runtime/strategies/testcontainers-host-strategy.js.map +1 -0
- package/build/container-runtime/strategies/types.d.ts +8 -0
- package/build/container-runtime/strategies/types.js +3 -0
- package/build/container-runtime/strategies/types.js.map +1 -0
- package/build/container-runtime/strategies/unix-socket-strategy.d.ts +6 -0
- package/build/container-runtime/strategies/unix-socket-strategy.js +22 -0
- package/build/container-runtime/strategies/unix-socket-strategy.js.map +1 -0
- package/build/container-runtime/strategies/utils/config.d.ts +9 -0
- package/build/container-runtime/strategies/utils/config.js +75 -0
- package/build/container-runtime/strategies/utils/config.js.map +1 -0
- package/build/container-runtime/utils/attach-container.js +17 -0
- package/build/container-runtime/utils/attach-container.js.map +1 -0
- package/build/container-runtime/utils/demux-stream.d.ts +4 -0
- package/build/container-runtime/utils/demux-stream.js +24 -0
- package/build/container-runtime/utils/demux-stream.js.map +1 -0
- package/build/container-runtime/utils/image-exists.d.ts +3 -0
- package/build/container-runtime/utils/image-exists.js +29 -0
- package/build/container-runtime/utils/image-exists.js.map +1 -0
- package/build/container-runtime/utils/lookup-host-ips.d.ts +2 -0
- package/build/container-runtime/utils/lookup-host-ips.js +18 -0
- package/build/container-runtime/utils/lookup-host-ips.js.map +1 -0
- package/{dist/src/docker/functions/image → build/container-runtime/utils}/pull-image.d.ts +2 -2
- package/build/container-runtime/utils/pull-image.js +35 -0
- package/build/container-runtime/utils/pull-image.js.map +1 -0
- package/build/container-runtime/utils/remote-container-runtime-socket-path.d.ts +7 -0
- package/build/container-runtime/utils/remote-container-runtime-socket-path.js +23 -0
- package/build/container-runtime/utils/remote-container-runtime-socket-path.js.map +1 -0
- package/build/container-runtime/utils/resolve-host.d.ts +8 -0
- package/build/container-runtime/utils/resolve-host.js +54 -0
- package/build/container-runtime/utils/resolve-host.js.map +1 -0
- package/build/container-runtime/utils/run-in-container.js +30 -0
- package/build/container-runtime/utils/run-in-container.js.map +1 -0
- package/build/container-runtime/utils/start-container.js +15 -0
- package/build/container-runtime/utils/start-container.js.map +1 -0
- package/{dist/src → build}/docker-compose-environment/docker-compose-environment.d.ts +5 -5
- package/build/docker-compose-environment/docker-compose-environment.js +144 -0
- package/build/docker-compose-environment/docker-compose-environment.js.map +1 -0
- package/{dist/src → build}/docker-compose-environment/downed-docker-compose-environment.js +1 -0
- package/build/docker-compose-environment/downed-docker-compose-environment.js.map +1 -0
- package/{dist/src → build}/docker-compose-environment/started-docker-compose-environment.d.ts +3 -3
- package/build/docker-compose-environment/started-docker-compose-environment.js +37 -0
- package/build/docker-compose-environment/started-docker-compose-environment.js.map +1 -0
- package/build/docker-compose-environment/stopped-docker-compose-environment.d.ts +7 -0
- package/build/docker-compose-environment/stopped-docker-compose-environment.js +19 -0
- package/build/docker-compose-environment/stopped-docker-compose-environment.js.map +1 -0
- package/{dist/src/modules → build/generic-container}/abstract-started-container.d.ts +1 -1
- package/build/generic-container/abstract-started-container.js +69 -0
- package/build/generic-container/abstract-started-container.js.map +1 -0
- package/{dist/src/modules → build/generic-container}/abstract-stopped-container.js +2 -0
- package/build/generic-container/abstract-stopped-container.js.map +1 -0
- package/{dist/src → build}/generic-container/generic-container-builder.d.ts +4 -4
- package/build/generic-container/generic-container-builder.js +87 -0
- package/build/generic-container/generic-container-builder.js.map +1 -0
- package/{dist/src → build}/generic-container/generic-container.d.ts +18 -22
- package/build/generic-container/generic-container.js +350 -0
- package/build/generic-container/generic-container.js.map +1 -0
- package/{dist/src → build}/generic-container/started-generic-container.d.ts +6 -6
- package/build/generic-container/started-generic-container.js +161 -0
- package/build/generic-container/started-generic-container.js.map +1 -0
- package/build/generic-container/stopped-generic-container.js +23 -0
- package/build/generic-container/stopped-generic-container.js.map +1 -0
- package/build/index.d.ts +16 -0
- package/build/index.js +35 -0
- package/build/index.js.map +1 -0
- package/build/network/network.d.ts +19 -0
- package/build/network/network.js +61 -0
- package/build/network/network.js.map +1 -0
- package/{dist/src → build/port-forwarder}/port-forwarder.d.ts +2 -1
- package/build/port-forwarder/port-forwarder.js +73 -0
- package/build/port-forwarder/port-forwarder.js.map +1 -0
- package/build/reaper/reaper.d.ts +8 -0
- package/build/reaper/reaper.js +119 -0
- package/build/reaper/reaper.js.map +1 -0
- package/{dist/src → build}/test-container.d.ts +6 -6
- package/{dist/src → build}/test-container.js +1 -0
- package/build/test-container.js.map +1 -0
- package/build/test-containers.js +12 -0
- package/build/test-containers.js.map +1 -0
- package/{dist/src/docker → build}/types.d.ts +16 -0
- package/build/types.js +3 -0
- package/build/types.js.map +1 -0
- package/{dist/src → build/utils}/bound-ports.d.ts +4 -3
- package/{dist/src → build/utils}/bound-ports.js +22 -5
- package/build/utils/bound-ports.js.map +1 -0
- package/build/utils/dockerfile-parser.d.ts +3 -0
- package/build/utils/dockerfile-parser.js +28 -0
- package/build/utils/dockerfile-parser.js.map +1 -0
- package/{dist/src → build/utils}/labels.d.ts +1 -0
- package/build/utils/labels.js +18 -0
- package/build/utils/labels.js.map +1 -0
- package/build/utils/map-inspect-result.d.ts +3 -0
- package/build/utils/map-inspect-result.js +55 -0
- package/build/utils/map-inspect-result.js.map +1 -0
- package/build/utils/port-generator.js +43 -0
- package/build/utils/port-generator.js.map +1 -0
- package/{dist/src → build/utils}/port.d.ts +0 -3
- package/build/utils/port.js +10 -0
- package/build/utils/port.js.map +1 -0
- package/build/utils/pull-policy.d.ts +7 -0
- package/build/utils/pull-policy.js +23 -0
- package/build/utils/pull-policy.js.map +1 -0
- package/build/utils/test-helper.d.ts +19 -0
- package/build/utils/test-helper.js +107 -0
- package/build/utils/test-helper.js.map +1 -0
- package/build/version.d.ts +1 -0
- package/build/version.js +5 -0
- package/build/version.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/composite-wait-strategy.d.ts +1 -1
- package/build/wait-strategies/composite-wait-strategy.js +49 -0
- package/build/wait-strategies/composite-wait-strategy.js.map +1 -0
- package/build/wait-strategies/health-check-wait-strategy.js +26 -0
- package/build/wait-strategies/health-check-wait-strategy.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/host-port-wait-strategy.d.ts +1 -1
- package/build/wait-strategies/host-port-wait-strategy.js +42 -0
- package/build/wait-strategies/host-port-wait-strategy.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/http-wait-strategy.d.ts +1 -1
- package/build/wait-strategies/http-wait-strategy.js +111 -0
- package/build/wait-strategies/http-wait-strategy.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/log-wait-strategy.d.ts +1 -1
- package/build/wait-strategies/log-wait-strategy.js +62 -0
- package/build/wait-strategies/log-wait-strategy.js.map +1 -0
- package/build/wait-strategies/shell-wait-strategy.js +30 -0
- package/build/wait-strategies/shell-wait-strategy.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/startup-check-strategy.d.ts +3 -0
- package/build/wait-strategies/startup-check-strategy.js +27 -0
- package/build/wait-strategies/startup-check-strategy.js.map +1 -0
- package/{dist/src → build/wait-strategies/utils}/port-check.d.ts +5 -6
- package/build/wait-strategies/utils/port-check.js +81 -0
- package/build/wait-strategies/utils/port-check.js.map +1 -0
- package/build/wait-strategies/wait-for-container.d.ts +5 -0
- package/build/wait-strategies/wait-for-container.js +24 -0
- package/build/wait-strategies/wait-for-container.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/wait-strategy.d.ts +1 -1
- package/{dist/src/wait-strategy → build/wait-strategies}/wait-strategy.js +3 -4
- package/build/wait-strategies/wait-strategy.js.map +1 -0
- package/{dist/src/wait-strategy → build/wait-strategies}/wait.js +1 -0
- package/build/wait-strategies/wait.js.map +1 -0
- package/package.json +18 -63
- package/LICENSE +0 -21
- package/README.md +0 -27
- package/dist/package.json +0 -104
- package/dist/src/docker/client/docker-client-config.d.ts +0 -9
- package/dist/src/docker/client/docker-client-config.js +0 -82
- package/dist/src/docker/client/docker-client-types.d.ts +0 -23
- package/dist/src/docker/client/docker-client.d.ts +0 -2
- package/dist/src/docker/client/docker-client.js +0 -133
- package/dist/src/docker/client/strategy/configuration-strategy.d.ts +0 -11
- package/dist/src/docker/client/strategy/configuration-strategy.js +0 -66
- package/dist/src/docker/client/strategy/docker-client-strategy.d.ts +0 -7
- package/dist/src/docker/client/strategy/npipe-socket-strategy.d.ts +0 -7
- package/dist/src/docker/client/strategy/npipe-socket-strategy.js +0 -31
- package/dist/src/docker/client/strategy/rootless-unix-socket-strategy.d.ts +0 -18
- package/dist/src/docker/client/strategy/rootless-unix-socket-strategy.js +0 -77
- package/dist/src/docker/client/strategy/testcontainers-host-strategy.d.ts +0 -9
- package/dist/src/docker/client/strategy/testcontainers-host-strategy.js +0 -47
- package/dist/src/docker/client/strategy/unix-socket-strategy.d.ts +0 -7
- package/dist/src/docker/client/strategy/unix-socket-strategy.js +0 -32
- package/dist/src/docker/functions/container/attach-container.js +0 -25
- package/dist/src/docker/functions/container/container-logs.d.ts +0 -6
- package/dist/src/docker/functions/container/container-logs.js +0 -32
- package/dist/src/docker/functions/container/create-container.d.ts +0 -31
- package/dist/src/docker/functions/container/create-container.js +0 -117
- package/dist/src/docker/functions/container/exec-container.d.ts +0 -3
- package/dist/src/docker/functions/container/exec-container.js +0 -66
- package/dist/src/docker/functions/container/get-container-archive.d.ts +0 -11
- package/dist/src/docker/functions/container/get-container-archive.js +0 -23
- package/dist/src/docker/functions/container/get-container.d.ts +0 -3
- package/dist/src/docker/functions/container/get-container.js +0 -49
- package/dist/src/docker/functions/container/inspect-container.d.ts +0 -19
- package/dist/src/docker/functions/container/inspect-container.js +0 -67
- package/dist/src/docker/functions/container/list-containers.d.ts +0 -2
- package/dist/src/docker/functions/container/list-containers.js +0 -25
- package/dist/src/docker/functions/container/put-container-archive.d.ts +0 -9
- package/dist/src/docker/functions/container/put-container-archive.js +0 -26
- package/dist/src/docker/functions/container/remove-container.d.ts +0 -5
- package/dist/src/docker/functions/container/remove-container.js +0 -23
- package/dist/src/docker/functions/container/restart-container.d.ts +0 -5
- package/dist/src/docker/functions/container/restart-container.js +0 -23
- package/dist/src/docker/functions/container/start-container.js +0 -23
- package/dist/src/docker/functions/container/stop-container.d.ts +0 -5
- package/dist/src/docker/functions/container/stop-container.js +0 -29
- package/dist/src/docker/functions/create-labels.d.ts +0 -2
- package/dist/src/docker/functions/create-labels.js +0 -13
- package/dist/src/docker/functions/demux-stream.d.ts +0 -3
- package/dist/src/docker/functions/demux-stream.js +0 -32
- package/dist/src/docker/functions/get-info.d.ts +0 -11
- package/dist/src/docker/functions/get-info.js +0 -38
- package/dist/src/docker/functions/image/build-image.d.ts +0 -14
- package/dist/src/docker/functions/image/build-image.js +0 -81
- package/dist/src/docker/functions/image/image-exists.d.ts +0 -3
- package/dist/src/docker/functions/image/image-exists.js +0 -37
- package/dist/src/docker/functions/image/pull-image.js +0 -48
- package/dist/src/docker/functions/network/connect-network.d.ts +0 -6
- package/dist/src/docker/functions/network/connect-network.js +0 -28
- package/dist/src/docker/functions/network/create-network.d.ts +0 -16
- package/dist/src/docker/functions/network/create-network.js +0 -39
- package/dist/src/docker/functions/network/remove-network.d.ts +0 -1
- package/dist/src/docker/functions/network/remove-network.js +0 -31
- package/dist/src/docker/functions/run-in-container.js +0 -39
- package/dist/src/docker/lookup-host-ips.d.ts +0 -5
- package/dist/src/docker/lookup-host-ips.js +0 -26
- package/dist/src/docker/remote-docker-unix-socket-path.d.ts +0 -7
- package/dist/src/docker/remote-docker-unix-socket-path.js +0 -22
- package/dist/src/docker/resolve-host.d.ts +0 -8
- package/dist/src/docker/resolve-host.js +0 -63
- package/dist/src/docker-compose/container-name-resolver.d.ts +0 -1
- package/dist/src/docker-compose/docker-compose-client.d.ts +0 -9
- package/dist/src/docker-compose/docker-compose-client.js +0 -221
- package/dist/src/docker-compose/docker-compose-options.d.ts +0 -17
- package/dist/src/docker-compose/docker-compose-options.js +0 -51
- package/dist/src/docker-compose-environment/docker-compose-environment.js +0 -146
- package/dist/src/docker-compose-environment/started-docker-compose-environment.js +0 -47
- package/dist/src/docker-compose-environment/stopped-docker-compose-environment.d.ts +0 -7
- package/dist/src/docker-compose-environment/stopped-docker-compose-environment.js +0 -28
- package/dist/src/docker-image-name.d.ts +0 -15
- package/dist/src/dockerfile-parser.d.ts +0 -3
- package/dist/src/dockerfile-parser.js +0 -39
- package/dist/src/file-lock.js +0 -47
- package/dist/src/generic-container/create-container-options.d.ts +0 -3
- package/dist/src/generic-container/create-container-options.js +0 -18
- package/dist/src/generic-container/generic-container-builder.js +0 -97
- package/dist/src/generic-container/generic-container.js +0 -329
- package/dist/src/generic-container/started-generic-container.js +0 -168
- package/dist/src/generic-container/stopped-generic-container.js +0 -20
- package/dist/src/hash.d.ts +0 -1
- package/dist/src/images.d.ts +0 -2
- package/dist/src/images.js +0 -6
- package/dist/src/index.d.ts +0 -25
- package/dist/src/index.js +0 -66
- package/dist/src/labels.js +0 -8
- package/dist/src/modules/abstract-started-container.js +0 -86
- package/dist/src/modules/arangodb/arangodb-container.d.ts +0 -19
- package/dist/src/modules/arangodb/arangodb-container.js +0 -60
- package/dist/src/modules/elasticsearch/elasticsearch-container.d.ts +0 -12
- package/dist/src/modules/elasticsearch/elasticsearch-container.js +0 -49
- package/dist/src/modules/hivemq/hivemq-container.d.ts +0 -15
- package/dist/src/modules/hivemq/hivemq-container.js +0 -79
- package/dist/src/modules/kafka/kafka-container.d.ts +0 -45
- package/dist/src/modules/kafka/kafka-container.js +0 -177
- package/dist/src/modules/mongodb/mongodb-container.d.ts +0 -19
- package/dist/src/modules/mongodb/mongodb-container.js +0 -85
- package/dist/src/modules/mysql/mysql-container.d.ts +0 -30
- package/dist/src/modules/mysql/mysql-container.js +0 -111
- package/dist/src/modules/nats/nats-container.d.ts +0 -55
- package/dist/src/modules/nats/nats-container.js +0 -99
- package/dist/src/modules/neo4j/neo4j-container.d.ts +0 -23
- package/dist/src/modules/neo4j/neo4j-container.js +0 -82
- package/dist/src/modules/postgresql/postgresql-container.d.ts +0 -28
- package/dist/src/modules/postgresql/postgresql-container.js +0 -87
- package/dist/src/modules/selenium/selenium-container.d.ts +0 -38
- package/dist/src/modules/selenium/selenium-container.js +0 -161
- package/dist/src/network.d.ts +0 -18
- package/dist/src/network.js +0 -60
- package/dist/src/port-check.js +0 -90
- package/dist/src/port-forwarder.js +0 -83
- package/dist/src/port-generator.js +0 -51
- package/dist/src/port.js +0 -47
- package/dist/src/pull-policy.d.ts +0 -9
- package/dist/src/pull-policy.js +0 -15
- package/dist/src/reaper.d.ts +0 -5
- package/dist/src/reaper.js +0 -157
- package/dist/src/registry-auth-locator/auths.d.ts +0 -8
- package/dist/src/registry-auth-locator/auths.js +0 -56
- package/dist/src/registry-auth-locator/cred-helpers.d.ts +0 -6
- package/dist/src/registry-auth-locator/credential-provider.js +0 -81
- package/dist/src/registry-auth-locator/creds-store.d.ts +0 -6
- package/dist/src/registry-auth-locator/registry-auth-locator.d.ts +0 -6
- package/dist/src/retry-strategy.js +0 -46
- package/dist/src/stream-utils.js +0 -46
- package/dist/src/system-info.d.ts +0 -19
- package/dist/src/system-info.js +0 -80
- package/dist/src/test-containers.js +0 -22
- package/dist/src/wait-for-container.d.ts +0 -4
- package/dist/src/wait-for-container.js +0 -34
- package/dist/src/wait-strategy/composite-wait-strategy.js +0 -57
- package/dist/src/wait-strategy/health-check-wait-strategy.js +0 -36
- package/dist/src/wait-strategy/host-port-wait-strategy.js +0 -59
- package/dist/src/wait-strategy/http-wait-strategy.js +0 -120
- package/dist/src/wait-strategy/log-wait-strategy.js +0 -69
- package/dist/src/wait-strategy/shell-wait-strategy.js +0 -39
- package/dist/src/wait-strategy/startup-check-strategy.js +0 -35
- /package/{dist/src → build/common}/clock.d.ts +0 -0
- /package/{dist/src → build/common}/file-lock.d.ts +0 -0
- /package/{dist/src/stream-utils.d.ts → build/common/streams.d.ts} +0 -0
- /package/{dist/src → build/common}/type-guards.d.ts +0 -0
- /package/{dist/src → build/common}/uuid.d.ts +0 -0
- /package/{dist/src/registry-auth-locator → build/container-runtime/auth}/registry-matches.d.ts +0 -0
- /package/{dist/src/docker/functions/container → build/container-runtime/utils}/attach-container.d.ts +0 -0
- /package/{dist/src/docker/functions → build/container-runtime/utils}/run-in-container.d.ts +0 -0
- /package/{dist/src/docker/functions/container → build/container-runtime/utils}/start-container.d.ts +0 -0
- /package/{dist/src → build}/docker-compose-environment/downed-docker-compose-environment.d.ts +0 -0
- /package/{dist/src/modules → build/generic-container}/abstract-stopped-container.d.ts +0 -0
- /package/{dist/src → build}/generic-container/stopped-generic-container.d.ts +0 -0
- /package/{dist/src → build}/test-containers.d.ts +0 -0
- /package/{dist/src → build/utils}/port-generator.d.ts +0 -0
- /package/{dist/src/wait-strategy → build/wait-strategies}/health-check-wait-strategy.d.ts +0 -0
- /package/{dist/src/wait-strategy → build/wait-strategies}/shell-wait-strategy.d.ts +0 -0
- /package/{dist/src/wait-strategy → build/wait-strategies}/wait.d.ts +0 -0
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.StartedNeo4jContainer = exports.Neo4jContainer = void 0;
|
|
13
|
-
const __1 = require("../..");
|
|
14
|
-
const abstract_started_container_1 = require("../abstract-started-container");
|
|
15
|
-
const BOLT_PORT = 7687;
|
|
16
|
-
const HTTP_PORT = 7474;
|
|
17
|
-
const USERNAME = "neo4j";
|
|
18
|
-
class Neo4jContainer extends __1.GenericContainer {
|
|
19
|
-
constructor(image = "neo4j:4.4.12") {
|
|
20
|
-
super(image);
|
|
21
|
-
this.password = "test";
|
|
22
|
-
this.apoc = false;
|
|
23
|
-
}
|
|
24
|
-
withPassword(password) {
|
|
25
|
-
this.password = password;
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
withApoc() {
|
|
29
|
-
this.apoc = true;
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
withTtl(schedule = 5) {
|
|
33
|
-
this.ttl = schedule;
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
start() {
|
|
37
|
-
const _super = Object.create(null, {
|
|
38
|
-
start: { get: () => super.start }
|
|
39
|
-
});
|
|
40
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
this.withExposedPorts(...(this.hasExposedPorts ? this.opts.exposedPorts : [BOLT_PORT, HTTP_PORT]))
|
|
42
|
-
.withWaitStrategy(__1.Wait.forLogMessage("Started."))
|
|
43
|
-
.withEnvironment({ NEO4J_AUTH: `${USERNAME}/${this.password}` })
|
|
44
|
-
.withStartupTimeout(120000);
|
|
45
|
-
if (this.apoc) {
|
|
46
|
-
this.withEnvironment({
|
|
47
|
-
NEO4JLABS_PLUGINS: '["apoc"]',
|
|
48
|
-
NEO4J_dbms_security_procedures_unrestricted: "apoc.*",
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
if (this.ttl) {
|
|
52
|
-
this.withEnvironment({
|
|
53
|
-
NEO4J_apoc_ttl_enabled: "true",
|
|
54
|
-
NEO4J_apoc_ttl_schedule: this.ttl.toString(),
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
return new StartedNeo4jContainer(yield _super.start.call(this), this.password);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.Neo4jContainer = Neo4jContainer;
|
|
62
|
-
class StartedNeo4jContainer extends abstract_started_container_1.AbstractStartedContainer {
|
|
63
|
-
constructor(startedTestContainer, password) {
|
|
64
|
-
super(startedTestContainer);
|
|
65
|
-
this.password = password;
|
|
66
|
-
this.boltPort = this.startedTestContainer.getMappedPort(BOLT_PORT);
|
|
67
|
-
this.httpPort = this.startedTestContainer.getMappedPort(HTTP_PORT);
|
|
68
|
-
}
|
|
69
|
-
getBoltUri() {
|
|
70
|
-
return `bolt://${this.getHost()}:${this.boltPort}/`;
|
|
71
|
-
}
|
|
72
|
-
getHttpUri() {
|
|
73
|
-
return `http://${this.getHost()}:${this.httpPort}/`;
|
|
74
|
-
}
|
|
75
|
-
getPassword() {
|
|
76
|
-
return this.password;
|
|
77
|
-
}
|
|
78
|
-
getUsername() {
|
|
79
|
-
return USERNAME;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.StartedNeo4jContainer = StartedNeo4jContainer;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { GenericContainer } from "../../generic-container/generic-container";
|
|
2
|
-
import { StartedTestContainer } from "../../test-container";
|
|
3
|
-
import { AbstractStartedContainer } from "../abstract-started-container";
|
|
4
|
-
export declare class PostgreSqlContainer extends GenericContainer {
|
|
5
|
-
private database;
|
|
6
|
-
private username;
|
|
7
|
-
private password;
|
|
8
|
-
constructor(image?: string);
|
|
9
|
-
withDatabase(database: string): this;
|
|
10
|
-
withUsername(username: string): this;
|
|
11
|
-
withPassword(password: string): this;
|
|
12
|
-
start(): Promise<StartedPostgreSqlContainer>;
|
|
13
|
-
}
|
|
14
|
-
export declare class StartedPostgreSqlContainer extends AbstractStartedContainer {
|
|
15
|
-
private readonly database;
|
|
16
|
-
private readonly username;
|
|
17
|
-
private readonly password;
|
|
18
|
-
private readonly port;
|
|
19
|
-
constructor(startedTestContainer: StartedTestContainer, database: string, username: string, password: string);
|
|
20
|
-
getPort(): number;
|
|
21
|
-
getDatabase(): string;
|
|
22
|
-
getUsername(): string;
|
|
23
|
-
getPassword(): string;
|
|
24
|
-
/**
|
|
25
|
-
* @returns A connection URI in the form of `postgres[ql]://[username[:password]@][host[:port],]/database`
|
|
26
|
-
*/
|
|
27
|
-
getConnectionUri(): string;
|
|
28
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.StartedPostgreSqlContainer = exports.PostgreSqlContainer = void 0;
|
|
13
|
-
const generic_container_1 = require("../../generic-container/generic-container");
|
|
14
|
-
const abstract_started_container_1 = require("../abstract-started-container");
|
|
15
|
-
const wait_1 = require("../../wait-strategy/wait");
|
|
16
|
-
const POSTGRES_PORT = 5432;
|
|
17
|
-
class PostgreSqlContainer extends generic_container_1.GenericContainer {
|
|
18
|
-
constructor(image = "postgres:13.3-alpine") {
|
|
19
|
-
super(image);
|
|
20
|
-
this.database = "test";
|
|
21
|
-
this.username = "test";
|
|
22
|
-
this.password = "test";
|
|
23
|
-
}
|
|
24
|
-
withDatabase(database) {
|
|
25
|
-
this.database = database;
|
|
26
|
-
return this;
|
|
27
|
-
}
|
|
28
|
-
withUsername(username) {
|
|
29
|
-
this.username = username;
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
withPassword(password) {
|
|
33
|
-
this.password = password;
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
start() {
|
|
37
|
-
const _super = Object.create(null, {
|
|
38
|
-
start: { get: () => super.start }
|
|
39
|
-
});
|
|
40
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
this.withExposedPorts(...(this.hasExposedPorts ? this.opts.exposedPorts : [POSTGRES_PORT]))
|
|
42
|
-
.withEnvironment({
|
|
43
|
-
POSTGRES_DB: this.database,
|
|
44
|
-
POSTGRES_USER: this.username,
|
|
45
|
-
POSTGRES_PASSWORD: this.password,
|
|
46
|
-
})
|
|
47
|
-
.withWaitStrategy(wait_1.Wait.forLogMessage(/.*database system is ready to accept connections.*/, 2))
|
|
48
|
-
.withStartupTimeout(120000);
|
|
49
|
-
return new StartedPostgreSqlContainer(yield _super.start.call(this), this.database, this.username, this.password);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
exports.PostgreSqlContainer = PostgreSqlContainer;
|
|
54
|
-
class StartedPostgreSqlContainer extends abstract_started_container_1.AbstractStartedContainer {
|
|
55
|
-
constructor(startedTestContainer, database, username, password) {
|
|
56
|
-
super(startedTestContainer);
|
|
57
|
-
this.database = database;
|
|
58
|
-
this.username = username;
|
|
59
|
-
this.password = password;
|
|
60
|
-
this.port = startedTestContainer.getMappedPort(5432);
|
|
61
|
-
}
|
|
62
|
-
getPort() {
|
|
63
|
-
return this.port;
|
|
64
|
-
}
|
|
65
|
-
getDatabase() {
|
|
66
|
-
return this.database;
|
|
67
|
-
}
|
|
68
|
-
getUsername() {
|
|
69
|
-
return this.username;
|
|
70
|
-
}
|
|
71
|
-
getPassword() {
|
|
72
|
-
return this.password;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* @returns A connection URI in the form of `postgres[ql]://[username[:password]@][host[:port],]/database`
|
|
76
|
-
*/
|
|
77
|
-
getConnectionUri() {
|
|
78
|
-
const url = new URL("", "postgres://");
|
|
79
|
-
url.hostname = this.getHost();
|
|
80
|
-
url.port = this.getPort().toString();
|
|
81
|
-
url.pathname = this.getDatabase();
|
|
82
|
-
url.username = this.getUsername();
|
|
83
|
-
url.password = this.getPassword();
|
|
84
|
-
return url.toString();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.StartedPostgreSqlContainer = StartedPostgreSqlContainer;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { GenericContainer } from "../../generic-container/generic-container";
|
|
2
|
-
import { AbstractStartedContainer } from "../abstract-started-container";
|
|
3
|
-
import { StartedTestContainer, StopOptions, StoppedTestContainer } from "../../test-container";
|
|
4
|
-
import { AbstractStoppedContainer } from "../abstract-stopped-container";
|
|
5
|
-
import { StartedNetwork } from "../../network";
|
|
6
|
-
export declare const SELENIUM_VIDEO_IMAGE = "selenium/video:ffmpeg-4.3.1-20230508";
|
|
7
|
-
export declare class SeleniumContainer extends GenericContainer {
|
|
8
|
-
constructor(image?: string);
|
|
9
|
-
protected beforeContainerStarted(): Promise<void>;
|
|
10
|
-
withRecording(): SeleniumRecordingContainer;
|
|
11
|
-
start(): Promise<StartedSeleniumContainer>;
|
|
12
|
-
}
|
|
13
|
-
export declare class StartedSeleniumContainer extends AbstractStartedContainer {
|
|
14
|
-
private readonly serverUrl;
|
|
15
|
-
constructor(startedTestContainer: StartedTestContainer);
|
|
16
|
-
getServerUrl(): string;
|
|
17
|
-
stop(options?: Partial<StopOptions>): Promise<StoppedSeleniumContainer>;
|
|
18
|
-
}
|
|
19
|
-
export declare class StoppedSeleniumContainer extends AbstractStoppedContainer {
|
|
20
|
-
private readonly stoppedSeleniumContainer;
|
|
21
|
-
constructor(stoppedSeleniumContainer: StoppedTestContainer);
|
|
22
|
-
}
|
|
23
|
-
export declare class SeleniumRecordingContainer extends SeleniumContainer {
|
|
24
|
-
constructor(image: string);
|
|
25
|
-
start(): Promise<StartedSeleniumRecordingContainer>;
|
|
26
|
-
}
|
|
27
|
-
export declare class StartedSeleniumRecordingContainer extends StartedSeleniumContainer {
|
|
28
|
-
private readonly startedFfmpegContainer;
|
|
29
|
-
private readonly network;
|
|
30
|
-
constructor(startedSeleniumContainer: StartedTestContainer, startedFfmpegContainer: StartedTestContainer, network: StartedNetwork);
|
|
31
|
-
stop(options?: Partial<StopOptions>): Promise<StoppedSeleniumRecordingContainer>;
|
|
32
|
-
}
|
|
33
|
-
export declare class StoppedSeleniumRecordingContainer extends StoppedSeleniumContainer {
|
|
34
|
-
private readonly stoppedFfmpegContainer;
|
|
35
|
-
constructor(stoppedSeleniumContainer: StoppedTestContainer, stoppedFfmpegContainer: StoppedTestContainer);
|
|
36
|
-
saveRecording(target: string): Promise<void>;
|
|
37
|
-
private extractTarStreamToDest;
|
|
38
|
-
}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.StoppedSeleniumRecordingContainer = exports.StartedSeleniumRecordingContainer = exports.SeleniumRecordingContainer = exports.StoppedSeleniumContainer = exports.StartedSeleniumContainer = exports.SeleniumContainer = exports.SELENIUM_VIDEO_IMAGE = void 0;
|
|
16
|
-
const generic_container_1 = require("../../generic-container/generic-container");
|
|
17
|
-
const abstract_started_container_1 = require("../abstract-started-container");
|
|
18
|
-
const wait_1 = require("../../wait-strategy/wait");
|
|
19
|
-
const abstract_stopped_container_1 = require("../abstract-stopped-container");
|
|
20
|
-
const network_1 = require("../../network");
|
|
21
|
-
const logger_1 = require("../../logger");
|
|
22
|
-
const promises_1 = require("fs/promises");
|
|
23
|
-
const tmp_1 = __importDefault(require("tmp"));
|
|
24
|
-
const tar_fs_1 = __importDefault(require("tar-fs"));
|
|
25
|
-
const path_1 = __importDefault(require("path"));
|
|
26
|
-
const SELENIUM_PORT = 4444;
|
|
27
|
-
const VNC_PORT = 5900;
|
|
28
|
-
const SELENIUM_NETWORK_ALIAS = "selenium";
|
|
29
|
-
exports.SELENIUM_VIDEO_IMAGE = "selenium/video:ffmpeg-4.3.1-20230508";
|
|
30
|
-
class SeleniumContainer extends generic_container_1.GenericContainer {
|
|
31
|
-
constructor(image = "selenium/standalone-chrome:112.0") {
|
|
32
|
-
super(image);
|
|
33
|
-
}
|
|
34
|
-
beforeContainerStarted() {
|
|
35
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
-
this.withExposedPorts(SELENIUM_PORT, VNC_PORT)
|
|
37
|
-
.withSharedMemorySize(2 * 1024 * 1024 * 1024)
|
|
38
|
-
.withWaitStrategy(wait_1.Wait.forAll([
|
|
39
|
-
wait_1.Wait.forListeningPorts(),
|
|
40
|
-
wait_1.Wait.forHttp("/wd/hub/status", SELENIUM_PORT).forResponsePredicate((response) => {
|
|
41
|
-
try {
|
|
42
|
-
return JSON.parse(response).value.ready;
|
|
43
|
-
}
|
|
44
|
-
catch (_a) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}),
|
|
48
|
-
]));
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
withRecording() {
|
|
52
|
-
return new SeleniumRecordingContainer(this.image);
|
|
53
|
-
}
|
|
54
|
-
start() {
|
|
55
|
-
const _super = Object.create(null, {
|
|
56
|
-
start: { get: () => super.start }
|
|
57
|
-
});
|
|
58
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
return new StartedSeleniumContainer(yield _super.start.call(this));
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.SeleniumContainer = SeleniumContainer;
|
|
64
|
-
class StartedSeleniumContainer extends abstract_started_container_1.AbstractStartedContainer {
|
|
65
|
-
constructor(startedTestContainer) {
|
|
66
|
-
super(startedTestContainer);
|
|
67
|
-
this.serverUrl = `http://${this.getHost()}:${this.getMappedPort(4444)}/wd/hub`;
|
|
68
|
-
}
|
|
69
|
-
getServerUrl() {
|
|
70
|
-
return this.serverUrl;
|
|
71
|
-
}
|
|
72
|
-
stop(options) {
|
|
73
|
-
const _super = Object.create(null, {
|
|
74
|
-
stop: { get: () => super.stop }
|
|
75
|
-
});
|
|
76
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
-
return new StoppedSeleniumContainer(yield _super.stop.call(this, options));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.StartedSeleniumContainer = StartedSeleniumContainer;
|
|
82
|
-
class StoppedSeleniumContainer extends abstract_stopped_container_1.AbstractStoppedContainer {
|
|
83
|
-
constructor(stoppedSeleniumContainer) {
|
|
84
|
-
super(stoppedSeleniumContainer);
|
|
85
|
-
this.stoppedSeleniumContainer = stoppedSeleniumContainer;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
exports.StoppedSeleniumContainer = StoppedSeleniumContainer;
|
|
89
|
-
class SeleniumRecordingContainer extends SeleniumContainer {
|
|
90
|
-
constructor(image) {
|
|
91
|
-
super(image);
|
|
92
|
-
}
|
|
93
|
-
start() {
|
|
94
|
-
const _super = Object.create(null, {
|
|
95
|
-
start: { get: () => super.start }
|
|
96
|
-
});
|
|
97
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
-
const network = yield new network_1.Network().start();
|
|
99
|
-
this.withNetwork(network);
|
|
100
|
-
this.withNetworkAliases(SELENIUM_NETWORK_ALIAS);
|
|
101
|
-
const startedSeleniumContainer = yield _super.start.call(this);
|
|
102
|
-
const startedFfmpegContainer = yield new generic_container_1.GenericContainer(exports.SELENIUM_VIDEO_IMAGE)
|
|
103
|
-
.withNetwork(network)
|
|
104
|
-
.withEnvironment({ DISPLAY_CONTAINER_NAME: SELENIUM_NETWORK_ALIAS })
|
|
105
|
-
.withWaitStrategy(wait_1.Wait.forLogMessage(/.*video-recording entered RUNNING state.*/))
|
|
106
|
-
.start();
|
|
107
|
-
return new StartedSeleniumRecordingContainer(startedSeleniumContainer, startedFfmpegContainer, network);
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
exports.SeleniumRecordingContainer = SeleniumRecordingContainer;
|
|
112
|
-
class StartedSeleniumRecordingContainer extends StartedSeleniumContainer {
|
|
113
|
-
constructor(startedSeleniumContainer, startedFfmpegContainer, network) {
|
|
114
|
-
super(startedSeleniumContainer);
|
|
115
|
-
this.startedFfmpegContainer = startedFfmpegContainer;
|
|
116
|
-
this.network = network;
|
|
117
|
-
}
|
|
118
|
-
stop(options) {
|
|
119
|
-
const _super = Object.create(null, {
|
|
120
|
-
stop: { get: () => super.stop }
|
|
121
|
-
});
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
const stoppedSeleniumContainer = yield _super.stop.call(this, options);
|
|
124
|
-
const stoppedFfmpegContainer = yield this.startedFfmpegContainer.stop({ remove: false, timeout: 60000 });
|
|
125
|
-
yield this.network.stop();
|
|
126
|
-
return new StoppedSeleniumRecordingContainer(stoppedSeleniumContainer, stoppedFfmpegContainer);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
exports.StartedSeleniumRecordingContainer = StartedSeleniumRecordingContainer;
|
|
131
|
-
class StoppedSeleniumRecordingContainer extends StoppedSeleniumContainer {
|
|
132
|
-
constructor(stoppedSeleniumContainer, stoppedFfmpegContainer) {
|
|
133
|
-
super(stoppedSeleniumContainer);
|
|
134
|
-
this.stoppedFfmpegContainer = stoppedFfmpegContainer;
|
|
135
|
-
}
|
|
136
|
-
saveRecording(target) {
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
const ffmpegContainerId = this.stoppedFfmpegContainer.getId();
|
|
139
|
-
logger_1.log.debug("Extracting archive from container...", { containerId: ffmpegContainerId });
|
|
140
|
-
const archiveStream = yield this.stoppedFfmpegContainer.copyArchiveFromContainer("/videos/video.mp4");
|
|
141
|
-
logger_1.log.debug("Extracted archive from container", { containerId: ffmpegContainerId });
|
|
142
|
-
logger_1.log.debug("Unpacking archive...", { containerId: ffmpegContainerId });
|
|
143
|
-
const destinationDir = tmp_1.default.dirSync({ keep: false });
|
|
144
|
-
yield this.extractTarStreamToDest(archiveStream, destinationDir.name);
|
|
145
|
-
logger_1.log.debug("Unpacked archive", { containerId: ffmpegContainerId });
|
|
146
|
-
const videoFile = path_1.default.resolve(destinationDir.name, "video.mp4");
|
|
147
|
-
yield (0, promises_1.copyFile)(videoFile, target);
|
|
148
|
-
logger_1.log.debug(`Extracted video to "${target}"`, { containerId: ffmpegContainerId });
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
extractTarStreamToDest(tarStream, dest) {
|
|
152
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
-
yield new Promise((resolve) => {
|
|
154
|
-
const destination = tar_fs_1.default.extract(dest);
|
|
155
|
-
tarStream.pipe(destination);
|
|
156
|
-
destination.on("finish", resolve);
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
exports.StoppedSeleniumRecordingContainer = StoppedSeleniumRecordingContainer;
|
package/dist/src/network.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Uuid } from "./uuid";
|
|
2
|
-
import { CreateNetworkOptions } from "./docker/functions/network/create-network";
|
|
3
|
-
export declare class Network {
|
|
4
|
-
private readonly createNetworkOptions;
|
|
5
|
-
private readonly uuid;
|
|
6
|
-
constructor(createNetworkOptions?: Partial<CreateNetworkOptions>, uuid?: Uuid);
|
|
7
|
-
start(): Promise<StartedNetwork>;
|
|
8
|
-
}
|
|
9
|
-
export declare class StartedNetwork {
|
|
10
|
-
private readonly id;
|
|
11
|
-
private readonly options;
|
|
12
|
-
constructor(id: string, options: CreateNetworkOptions);
|
|
13
|
-
getId(): string;
|
|
14
|
-
getName(): string;
|
|
15
|
-
stop(): Promise<StoppedNetwork>;
|
|
16
|
-
}
|
|
17
|
-
export declare class StoppedNetwork {
|
|
18
|
-
}
|
package/dist/src/network.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.StoppedNetwork = exports.StartedNetwork = exports.Network = void 0;
|
|
13
|
-
const uuid_1 = require("./uuid");
|
|
14
|
-
const logger_1 = require("./logger");
|
|
15
|
-
const create_network_1 = require("./docker/functions/network/create-network");
|
|
16
|
-
const remove_network_1 = require("./docker/functions/network/remove-network");
|
|
17
|
-
const docker_client_1 = require("./docker/client/docker-client");
|
|
18
|
-
class Network {
|
|
19
|
-
constructor(createNetworkOptions = {}, uuid = new uuid_1.RandomUuid()) {
|
|
20
|
-
this.createNetworkOptions = createNetworkOptions;
|
|
21
|
-
this.uuid = uuid;
|
|
22
|
-
this.createNetworkOptions = createNetworkOptions;
|
|
23
|
-
}
|
|
24
|
-
start() {
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const name = this.uuid.nextUuid();
|
|
27
|
-
const options = Object.assign({ name, driver: "bridge", checkDuplicate: true, internal: false, attachable: false, ingress: false, enableIPv6: false }, this.createNetworkOptions);
|
|
28
|
-
logger_1.log.info(`Starting network "${name}"...`);
|
|
29
|
-
const { sessionId } = yield (0, docker_client_1.getDockerClient)();
|
|
30
|
-
const id = yield (0, create_network_1.createNetwork)(sessionId, options);
|
|
31
|
-
logger_1.log.info(`Started network "${name}" with ID "${id}"`);
|
|
32
|
-
return new StartedNetwork(id, options);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.Network = Network;
|
|
37
|
-
class StartedNetwork {
|
|
38
|
-
constructor(id, options) {
|
|
39
|
-
this.id = id;
|
|
40
|
-
this.options = options;
|
|
41
|
-
}
|
|
42
|
-
getId() {
|
|
43
|
-
return this.id;
|
|
44
|
-
}
|
|
45
|
-
getName() {
|
|
46
|
-
return this.options.name;
|
|
47
|
-
}
|
|
48
|
-
stop() {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
logger_1.log.info(`Stopping network with ID "${this.id}"...`);
|
|
51
|
-
yield (0, remove_network_1.removeNetwork)(this.id);
|
|
52
|
-
logger_1.log.info(`Stopped network with ID "${this.id}"`);
|
|
53
|
-
return new StoppedNetwork();
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.StartedNetwork = StartedNetwork;
|
|
58
|
-
class StoppedNetwork {
|
|
59
|
-
}
|
|
60
|
-
exports.StoppedNetwork = StoppedNetwork;
|
package/dist/src/port-check.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.InternalPortCheck = exports.HostPortCheck = void 0;
|
|
13
|
-
const net_1 = require("net");
|
|
14
|
-
const exec_container_1 = require("./docker/functions/container/exec-container");
|
|
15
|
-
const logger_1 = require("./logger");
|
|
16
|
-
class HostPortCheck {
|
|
17
|
-
constructor(host) {
|
|
18
|
-
this.host = host;
|
|
19
|
-
}
|
|
20
|
-
isBound(port) {
|
|
21
|
-
return new Promise((resolve) => {
|
|
22
|
-
const socket = new net_1.Socket();
|
|
23
|
-
socket
|
|
24
|
-
.setTimeout(1000)
|
|
25
|
-
.on("error", () => {
|
|
26
|
-
socket.destroy();
|
|
27
|
-
resolve(false);
|
|
28
|
-
})
|
|
29
|
-
.on("timeout", () => {
|
|
30
|
-
socket.destroy();
|
|
31
|
-
resolve(false);
|
|
32
|
-
})
|
|
33
|
-
.connect(port, this.host, () => {
|
|
34
|
-
socket.end();
|
|
35
|
-
resolve(true);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.HostPortCheck = HostPortCheck;
|
|
41
|
-
class InternalPortCheck {
|
|
42
|
-
constructor(dockerode, containerRuntime, container) {
|
|
43
|
-
this.dockerode = dockerode;
|
|
44
|
-
this.containerRuntime = containerRuntime;
|
|
45
|
-
this.container = container;
|
|
46
|
-
this.isDistroless = false;
|
|
47
|
-
this.commandOutputs = new Set();
|
|
48
|
-
}
|
|
49
|
-
isBound(port) {
|
|
50
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
const portHex = port.toString(16).padStart(4, "0");
|
|
52
|
-
const commands = [
|
|
53
|
-
["/bin/sh", "-c", `cat /proc/net/tcp* | awk '{print $2}' | grep -i :${portHex}`],
|
|
54
|
-
["/bin/sh", "-c", `nc -vz -w 1 localhost ${port}`],
|
|
55
|
-
["/bin/bash", "-c", `</dev/tcp/localhost/${port}`],
|
|
56
|
-
];
|
|
57
|
-
const commandResults = yield Promise.all(commands.map((command) => (0, exec_container_1.execContainer)(this.dockerode, this.containerRuntime, this.container, command, false)));
|
|
58
|
-
const isBound = commandResults.some((result) => result.exitCode === 0);
|
|
59
|
-
if (!isBound && logger_1.log.enabled()) {
|
|
60
|
-
const shellExists = commandResults.some((result) => result.exitCode !== 126);
|
|
61
|
-
if (!shellExists) {
|
|
62
|
-
if (!this.isDistroless) {
|
|
63
|
-
this.isDistroless = true;
|
|
64
|
-
logger_1.log.error(`The HostPortWaitStrategy will not work on a distroless image, use an alternate wait strategy`, {
|
|
65
|
-
containerId: this.container.id,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
commandResults
|
|
71
|
-
.map((result) => (Object.assign(Object.assign({}, result), { output: result.output.trim() })))
|
|
72
|
-
.filter((result) => result.exitCode !== 126 && result.output.length > 0)
|
|
73
|
-
.forEach((result) => {
|
|
74
|
-
if (!this.commandOutputs.has(this.commandOutputsKey(result.output))) {
|
|
75
|
-
logger_1.log.trace(`Port check result exit code ${result.exitCode}: ${result.output}`, {
|
|
76
|
-
containerId: this.container.id,
|
|
77
|
-
});
|
|
78
|
-
this.commandOutputs.add(this.commandOutputsKey(result.output));
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return isBound;
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
commandOutputsKey(output) {
|
|
87
|
-
return `${this.container.id}:${output}`;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.InternalPortCheck = InternalPortCheck;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.PortForwarderInstance = exports.PortForwarder = void 0;
|
|
13
|
-
const ssh_remote_port_forward_1 = require("ssh-remote-port-forward");
|
|
14
|
-
const logger_1 = require("./logger");
|
|
15
|
-
const generic_container_1 = require("./generic-container/generic-container");
|
|
16
|
-
const uuid_1 = require("./uuid");
|
|
17
|
-
const docker_client_1 = require("./docker/client/docker-client");
|
|
18
|
-
const images_1 = require("./images");
|
|
19
|
-
class PortForwarder {
|
|
20
|
-
constructor(sshConnection, container) {
|
|
21
|
-
this.sshConnection = sshConnection;
|
|
22
|
-
this.container = container;
|
|
23
|
-
}
|
|
24
|
-
exposeHostPort(port) {
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
logger_1.log.info(`Exposing host port ${port}...`);
|
|
27
|
-
yield this.sshConnection.remoteForward("localhost", port);
|
|
28
|
-
logger_1.log.info(`Exposed host port ${port}`);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
getNetworkId() {
|
|
32
|
-
return this.container.getNetworkId(this.getNetworkName());
|
|
33
|
-
}
|
|
34
|
-
getIpAddress() {
|
|
35
|
-
return this.container.getIpAddress(this.getNetworkName());
|
|
36
|
-
}
|
|
37
|
-
getNetworkName() {
|
|
38
|
-
return this.container.getNetworkNames()[0];
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.PortForwarder = PortForwarder;
|
|
42
|
-
class PortForwarderInstance {
|
|
43
|
-
static isRunning() {
|
|
44
|
-
return this.instance !== undefined;
|
|
45
|
-
}
|
|
46
|
-
static getInstance() {
|
|
47
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
if (!this.instance) {
|
|
49
|
-
this.instance = this.createInstance();
|
|
50
|
-
}
|
|
51
|
-
return this.instance;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
static createInstance() {
|
|
55
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
logger_1.log.debug(`Creating new Port Forwarder...`);
|
|
57
|
-
const username = "root";
|
|
58
|
-
const password = new uuid_1.RandomUuid().nextUuid();
|
|
59
|
-
const containerPort = process.env["TESTCONTAINERS_SSHD_PORT"]
|
|
60
|
-
? { container: 22, host: Number(process.env["TESTCONTAINERS_SSHD_PORT"]) }
|
|
61
|
-
: 22;
|
|
62
|
-
const { sessionId } = yield (0, docker_client_1.getDockerClient)();
|
|
63
|
-
const container = yield new generic_container_1.GenericContainer(images_1.SSHD_IMAGE)
|
|
64
|
-
.withName(`testcontainers-port-forwarder-${sessionId}`)
|
|
65
|
-
.withExposedPorts(containerPort)
|
|
66
|
-
.withEnvironment({ PASSWORD: password })
|
|
67
|
-
.withCommand([
|
|
68
|
-
"sh",
|
|
69
|
-
"-c",
|
|
70
|
-
`echo "${username}:$PASSWORD" | chpasswd && /usr/sbin/sshd -D -o PermitRootLogin=yes -o AddressFamily=inet -o GatewayPorts=yes -o AllowAgentForwarding=yes -o AllowTcpForwarding=yes -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostkeyAlgorithms=+ssh-rsa`,
|
|
71
|
-
])
|
|
72
|
-
.start();
|
|
73
|
-
const host = (yield (0, docker_client_1.getDockerClient)()).host;
|
|
74
|
-
const port = container.getMappedPort(22);
|
|
75
|
-
logger_1.log.debug(`Connecting to Port Forwarder on "${host}:${port}"...`);
|
|
76
|
-
const connection = yield (0, ssh_remote_port_forward_1.createSshConnection)({ host, port, username, password });
|
|
77
|
-
logger_1.log.debug(`Connected to Port Forwarder on "${host}:${port}"`);
|
|
78
|
-
connection.unref();
|
|
79
|
-
return new PortForwarder(connection, container);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.PortForwarderInstance = PortForwarderInstance;
|