diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index d719a2aa..85861352 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@balena/compose": "^3.2.0", + "@balena/compose": "^3.2.1", "@balena/dockerignore": "^1.0.2", "@balena/env-parsing": "^1.1.8", "@balena/es-version": "^1.0.1", @@ -39,9 +39,9 @@ "columnify": "^1.5.2", "common-tags": "^1.7.2", "denymount": "^2.3.0", - "docker-modem": "3.0.0", + "docker-modem": "^5.0.3", "docker-progress": "^5.1.3", - "dockerode": "3.3.3", + "dockerode": "^4.0.2", "ejs": "^3.1.6", "etcher-sdk": "9.0.8", "event-stream": "3.3.4", @@ -111,7 +111,7 @@ "@types/cli-truncate": "^2.0.0", "@types/common-tags": "^1.8.1", "@types/diff": "^5.0.3", - "@types/dockerode": "^3.3.9", + "@types/dockerode": "3.3.23", "@types/ejs": "^3.1.0", "@types/express": "^4.17.13", "@types/fs-extra": "^9.0.13", @@ -1045,33 +1045,6 @@ "node": ">=16.13.0" } }, - "node_modules/@balena/compose/node_modules/docker-modem": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.3.tgz", - "integrity": "sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==", - "dependencies": { - "debug": "^4.1.1", - "readable-stream": "^3.5.0", - "split-ca": "^1.0.1", - "ssh2": "^1.15.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/@balena/compose/node_modules/dockerode": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.2.tgz", - "integrity": "sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==", - "dependencies": { - "@balena/dockerignore": "^1.0.2", - "docker-modem": "^5.0.3", - "tar-fs": "~2.0.1" - }, - "engines": { - "node": ">= 8.0" - } - }, "node_modules/@balena/compose/node_modules/event-stream": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", @@ -1105,36 +1078,6 @@ "node": ">=14.14.0" } }, - "node_modules/@balena/compose/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@balena/compose/node_modules/ssh2": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", - "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", - "hasInstallScript": true, - "dependencies": { - "asn1": "^0.2.6", - "bcrypt-pbkdf": "^1.0.2" - }, - "engines": { - "node": ">=10.16.0" - }, - "optionalDependencies": { - "cpu-features": "~0.0.9", - "nan": "^2.18.0" - } - }, "node_modules/@balena/compose/node_modules/stream-to-promise": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-3.0.0.tgz", @@ -1148,32 +1091,6 @@ "node": ">= 10" } }, - "node_modules/@balena/compose/node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/@balena/compose/node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@balena/compose/node_modules/tar-stream": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", @@ -3795,9 +3712,9 @@ } }, "node_modules/@types/dockerode": { - "version": "3.3.19", - "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.19.tgz", - "integrity": "sha512-7CC5yIpQi+bHXwDK43b/deYXteP3Lem9gdocVVHJPSRJJLMfbiOchQV3rDmAPkMw+n3GIVj7m1six3JW+VcwwA==", + "version": "3.3.23", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.23.tgz", + "integrity": "sha512-Lz5J+NFgZS4cEVhquwjIGH4oQwlVn2h7LXD3boitujBnzOE5o7s9H8hchEjoDK2SlRsJTogdKnQeiJgPPKLIEw==", "dependencies": { "@types/docker-modem": "*", "@types/node": "*" @@ -5644,74 +5561,6 @@ "node": ">=18" } }, - "node_modules/balena-preload/node_modules/docker-modem": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.3.tgz", - "integrity": "sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==", - "dependencies": { - "debug": "^4.1.1", - "readable-stream": "^3.5.0", - "split-ca": "^1.0.1", - "ssh2": "^1.15.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/balena-preload/node_modules/dockerode": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.2.tgz", - "integrity": "sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==", - "dependencies": { - "@balena/dockerignore": "^1.0.2", - "docker-modem": "^5.0.3", - "tar-fs": "~2.0.1" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/balena-preload/node_modules/dockerode/node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/balena-preload/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/balena-preload/node_modules/ssh2": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", - "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", - "hasInstallScript": true, - "dependencies": { - "asn1": "^0.2.6", - "bcrypt-pbkdf": "^1.0.2" - }, - "engines": { - "node": ">=10.16.0" - }, - "optionalDependencies": { - "cpu-features": "~0.0.9", - "nan": "^2.18.0" - } - }, "node_modules/balena-register-device": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/balena-register-device/-/balena-register-device-9.0.1.tgz", @@ -8045,14 +7894,14 @@ "integrity": "sha512-6+VnnhZpxwWvvKwjkRnuqlTtlBRJuM+3cCSXmZoYhyXcdgxx6l/3lwYpqmJ9qmhzgWVeATkpVsTua92BsObJjw==" }, "node_modules/docker-modem": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.0.tgz", - "integrity": "sha512-WwFajJ8I5geZ/dDZ5FDMDA6TBkWa76xWwGIGw8uzUjNUGCN0to83wJ8Oi1AxrJTC0JBn+7fvIxUctnawtlwXeg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.3.tgz", + "integrity": "sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==", "dependencies": { "debug": "^4.1.1", "readable-stream": "^3.5.0", "split-ca": "^1.0.1", - "ssh2": "^0.8.7" + "ssh2": "^1.15.0" }, "engines": { "node": ">= 8.0" @@ -8093,11 +7942,12 @@ } }, "node_modules/dockerode": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.3.tgz", - "integrity": "sha512-lvKV6/NGf2/CYLt5V4c0fd6Fl9XZSCo1Z2HBT9ioKrKLMB2o+gA62Uza8RROpzGvYv57KJx2dKu+ZwSpB//OIA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.2.tgz", + "integrity": "sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==", "dependencies": { - "docker-modem": "^3.0.0", + "@balena/dockerignore": "^1.0.2", + "docker-modem": "^5.0.3", "tar-fs": "~2.0.1" }, "engines": { @@ -20211,27 +20061,20 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/ssh2": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.9.tgz", - "integrity": "sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", + "hasInstallScript": true, "dependencies": { - "ssh2-streams": "~0.4.10" + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" }, "engines": { - "node": ">=5.2.0" - } - }, - "node_modules/ssh2-streams": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", - "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", - "dependencies": { - "asn1": "~0.2.0", - "bcrypt-pbkdf": "^1.0.2", - "streamsearch": "~0.1.2" + "node": ">=10.16.0" }, - "engines": { - "node": ">=5.2.0" + "optionalDependencies": { + "cpu-features": "~0.0.9", + "nan": "^2.18.0" } }, "node_modules/sshpk": { @@ -20349,14 +20192,6 @@ "wrappy": "1" } }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/streamx": { "version": "2.15.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", diff --git a/package.json b/package.json index eae8e31b..b8d0c8a4 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "@types/cli-truncate": "^2.0.0", "@types/common-tags": "^1.8.1", "@types/diff": "^5.0.3", - "@types/dockerode": "^3.3.9", + "@types/dockerode": "3.3.23", "@types/ejs": "^3.1.0", "@types/express": "^4.17.13", "@types/fs-extra": "^9.0.13", @@ -198,7 +198,7 @@ "typescript": "^5.3.2" }, "dependencies": { - "@balena/compose": "^3.2.0", + "@balena/compose": "^3.2.1", "@balena/dockerignore": "^1.0.2", "@balena/env-parsing": "^1.1.8", "@balena/es-version": "^1.0.1", @@ -227,9 +227,9 @@ "columnify": "^1.5.2", "common-tags": "^1.7.2", "denymount": "^2.3.0", - "docker-modem": "3.0.0", + "docker-modem": "^5.0.3", "docker-progress": "^5.1.3", - "dockerode": "3.3.3", + "dockerode": "^4.0.2", "ejs": "^3.1.6", "etcher-sdk": "9.0.8", "event-stream": "3.3.4", diff --git a/tests/utils/docker.spec.ts b/tests/utils/docker.spec.ts index a9122924..fd498c3f 100644 --- a/tests/utils/docker.spec.ts +++ b/tests/utils/docker.spec.ts @@ -29,7 +29,7 @@ const defaultSocketPath = : '/var/run/docker.sock'; describe('getDefaultDockerModemOpts() function', function () { - it('should use a Unix socket when --dockerHost is not used', () => { + it('should use a Unix socket when --dockerHost is not used', async () => { const cliFlags: DockerConnectionCliFlags = { dockerPort: 2376, }; @@ -38,8 +38,15 @@ describe('getDefaultDockerModemOpts() function', function () { host: undefined, port: undefined, protocol: 'http', - socketPath: defaultSocketPath, }); + if (typeof defaultOps.socketPath === 'function') { + // Function is always findDefaultUnixSocket(), which returns a promise. + // Must override type since @types/dockerode not updated yet. + const socketPath: () => Promise = defaultOps.socketPath; + expect(await socketPath()).to.equal(defaultSocketPath); + } else { + expect(defaultOps.socketPath).to.equal(defaultSocketPath); + } }); it('should use the HTTP protocol when --dockerPort is 2375', () => { @@ -131,7 +138,14 @@ describe('generateConnectOpts() function', function () { host: undefined, port: undefined, protocol: 'https', - socketPath: defaultSocketPath, }); + if (typeof connectOpts.socketPath === 'function') { + // Function is always findDefaultUnixSocket(), which returns a promise. + // Must override type since @types/dockerode not updated yet. + const socketPath: () => Promise = connectOpts.socketPath; + expect(await socketPath()).to.equal(defaultSocketPath); + } else { + expect(connectOpts.socketPath).to.equal(defaultSocketPath); + } }); });