From 9967519eb40914c2ff5e03dfd6c46ed45d6e5c73 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Wed, 8 Feb 2023 19:01:53 -0800 Subject: [PATCH 1/3] Add webrtc to JS test --- multidim-interop/js/v0.41/package-lock.json | 268 +++++++++++++++++++- multidim-interop/js/v0.41/package.json | 3 +- multidim-interop/js/v0.41/test/ping.spec.ts | 8 + 3 files changed, 277 insertions(+), 2 deletions(-) diff --git a/multidim-interop/js/v0.41/package-lock.json b/multidim-interop/js/v0.41/package-lock.json index f75a38669..a12b1d6ea 100644 --- a/multidim-interop/js/v0.41/package-lock.json +++ b/multidim-interop/js/v0.41/package-lock.json @@ -13,6 +13,7 @@ "@chainsafe/libp2p-yamux": "^3.0.4", "@libp2p/mplex": "^7.1.1", "@libp2p/tcp": "^6.0.8", + "@libp2p/webrtc": "^1.0.3", "@libp2p/websockets": "^5.0.1", "@libp2p/webtransport": "^1.0.7", "@multiformats/multiaddr": "^11.1.4", @@ -26,7 +27,7 @@ "typescript": "^4.9.4" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@achingbrain/ip-address": { @@ -2904,6 +2905,94 @@ "npm": ">=7.0.0" } }, + "node_modules/@libp2p/webrtc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-1.0.3.tgz", + "integrity": "sha512-54TqJ6nK3dZR6kr6sR0BrkBhufv7adqeH+DiEsOxKGqgEsXJBhuPbH5roNdLiQkC2Rq55Zdvm0kwEULtw9UtzA==", + "dependencies": { + "@chainsafe/libp2p-noise": "^11.0.0", + "@libp2p/interface-connection": "^3.0.2", + "@libp2p/interface-peer-id": "^2.0.0", + "@libp2p/interface-stream-muxer": "^3.0.0", + "@libp2p/interface-transport": "^2.0.0", + "@libp2p/logger": "^2.0.0", + "@libp2p/peer-id": "^2.0.0", + "@multiformats/multiaddr": "^11.0.3", + "@protobuf-ts/runtime": "^2.8.0", + "err-code": "^3.0.1", + "it-length-prefixed": "^8.0.3", + "it-merge": "^2.0.0", + "it-pipe": "^2.0.4", + "it-pushable": "^3.1.0", + "it-stream-types": "^1.0.4", + "multiformats": "^11.0.0", + "multihashes": "^4.0.3", + "p-defer": "^4.0.0", + "uint8arraylist": "^2.3.3", + "uint8arrays": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@libp2p/webrtc/node_modules/@chainsafe/libp2p-noise": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-11.0.0.tgz", + "integrity": "sha512-NEl5aIv6muz9OL+dsa3INEU89JX0NViBxOy7NwwG8eNRPUDHo5E3ZTMSHXQpVx1K/ofoNS4ANO9xwezY6ss5GA==", + "dependencies": { + "@libp2p/crypto": "^1.0.0", + "@libp2p/interface-connection-encrypter": "^3.0.0", + "@libp2p/interface-keys": "^1.0.2", + "@libp2p/interface-metrics": "^4.0.2", + "@libp2p/interface-peer-id": "^2.0.0", + "@libp2p/logger": "^2.0.0", + "@libp2p/peer-id": "^2.0.0", + "@stablelib/chacha20poly1305": "^1.0.1", + "@stablelib/hkdf": "^1.0.1", + "@stablelib/sha256": "^1.0.1", + "@stablelib/x25519": "^1.0.1", + "it-length-prefixed": "^8.0.2", + "it-pair": "^2.0.2", + "it-pb-stream": "^2.0.2", + "it-pipe": "^2.0.3", + "it-stream-types": "^1.0.4", + "protons-runtime": "^4.0.1", + "uint8arraylist": "^2.3.2", + "uint8arrays": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@libp2p/webrtc/node_modules/@libp2p/interface-peer-id": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/interface-peer-id/-/interface-peer-id-2.0.1.tgz", + "integrity": "sha512-k01hKHTAZWMOiBC+yyFsmBguEMvhPkXnQtqLtFqga2fVZu8Zve7zFAtQYLhQjeJ4/apeFtO6ddTS8mCE6hl4OA==", + "dependencies": { + "multiformats": "^11.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@libp2p/webrtc/node_modules/@libp2p/peer-id": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-2.0.1.tgz", + "integrity": "sha512-uGIR4rS+j+IzzIu0kih4MonZEfRmjGNfXaSPMIFOeMxZItZT6TIpxoVNYxHl4YtneSFKzlLnf9yx9EhRcyfy8Q==", + "dependencies": { + "@libp2p/interface-peer-id": "^2.0.0", + "@libp2p/interfaces": "^3.2.0", + "multiformats": "^11.0.0", + "uint8arrays": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, "node_modules/@libp2p/websockets": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-5.0.2.tgz", @@ -3008,6 +3097,11 @@ "npm": ">=7.0.0" } }, + "node_modules/@multiformats/base-x": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", + "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" + }, "node_modules/@multiformats/mafmt": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-11.0.3.tgz", @@ -3330,6 +3424,11 @@ "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", "dev": true }, + "node_modules/@protobuf-ts/runtime": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.8.2.tgz", + "integrity": "sha512-PVxsH81y9kEbHldxxG/8Y3z2mTXWQytRl8zNS0mTPUjkEC+8GUX6gj6LsA8EFp25fAs9V0ruh+aNWmPccEI9MA==" + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -13643,6 +13742,19 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/multibase": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", + "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", + "deprecated": "This module has been superseded by the multiformats module", + "dependencies": { + "@multiformats/base-x": "^4.0.1" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + } + }, "node_modules/multiformats": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.0.tgz", @@ -13652,6 +13764,38 @@ "npm": ">=7.0.0" } }, + "node_modules/multihashes": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", + "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", + "dependencies": { + "multibase": "^4.0.1", + "uint8arrays": "^3.0.0", + "varint": "^5.0.2" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/multihashes/node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + }, + "node_modules/multihashes/node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "dependencies": { + "multiformats": "^9.4.2" + } + }, + "node_modules/multihashes/node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, "node_modules/multimatch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", @@ -25221,6 +25365,80 @@ "uint8arraylist": "^2.3.2" } }, + "@libp2p/webrtc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@libp2p/webrtc/-/webrtc-1.0.3.tgz", + "integrity": "sha512-54TqJ6nK3dZR6kr6sR0BrkBhufv7adqeH+DiEsOxKGqgEsXJBhuPbH5roNdLiQkC2Rq55Zdvm0kwEULtw9UtzA==", + "requires": { + "@chainsafe/libp2p-noise": "^11.0.0", + "@libp2p/interface-connection": "^3.0.2", + "@libp2p/interface-peer-id": "^2.0.0", + "@libp2p/interface-stream-muxer": "^3.0.0", + "@libp2p/interface-transport": "^2.0.0", + "@libp2p/logger": "^2.0.0", + "@libp2p/peer-id": "^2.0.0", + "@multiformats/multiaddr": "^11.0.3", + "@protobuf-ts/runtime": "^2.8.0", + "err-code": "^3.0.1", + "it-length-prefixed": "^8.0.3", + "it-merge": "^2.0.0", + "it-pipe": "^2.0.4", + "it-pushable": "^3.1.0", + "it-stream-types": "^1.0.4", + "multiformats": "^11.0.0", + "multihashes": "^4.0.3", + "p-defer": "^4.0.0", + "uint8arraylist": "^2.3.3", + "uint8arrays": "^4.0.2" + }, + "dependencies": { + "@chainsafe/libp2p-noise": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-11.0.0.tgz", + "integrity": "sha512-NEl5aIv6muz9OL+dsa3INEU89JX0NViBxOy7NwwG8eNRPUDHo5E3ZTMSHXQpVx1K/ofoNS4ANO9xwezY6ss5GA==", + "requires": { + "@libp2p/crypto": "^1.0.0", + "@libp2p/interface-connection-encrypter": "^3.0.0", + "@libp2p/interface-keys": "^1.0.2", + "@libp2p/interface-metrics": "^4.0.2", + "@libp2p/interface-peer-id": "^2.0.0", + "@libp2p/logger": "^2.0.0", + "@libp2p/peer-id": "^2.0.0", + "@stablelib/chacha20poly1305": "^1.0.1", + "@stablelib/hkdf": "^1.0.1", + "@stablelib/sha256": "^1.0.1", + "@stablelib/x25519": "^1.0.1", + "it-length-prefixed": "^8.0.2", + "it-pair": "^2.0.2", + "it-pb-stream": "^2.0.2", + "it-pipe": "^2.0.3", + "it-stream-types": "^1.0.4", + "protons-runtime": "^4.0.1", + "uint8arraylist": "^2.3.2", + "uint8arrays": "^4.0.2" + } + }, + "@libp2p/interface-peer-id": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/interface-peer-id/-/interface-peer-id-2.0.1.tgz", + "integrity": "sha512-k01hKHTAZWMOiBC+yyFsmBguEMvhPkXnQtqLtFqga2fVZu8Zve7zFAtQYLhQjeJ4/apeFtO6ddTS8mCE6hl4OA==", + "requires": { + "multiformats": "^11.0.0" + } + }, + "@libp2p/peer-id": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-2.0.1.tgz", + "integrity": "sha512-uGIR4rS+j+IzzIu0kih4MonZEfRmjGNfXaSPMIFOeMxZItZT6TIpxoVNYxHl4YtneSFKzlLnf9yx9EhRcyfy8Q==", + "requires": { + "@libp2p/interface-peer-id": "^2.0.0", + "@libp2p/interfaces": "^3.2.0", + "multiformats": "^11.0.0", + "uint8arrays": "^4.0.2" + } + } + } + }, "@libp2p/websockets": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-5.0.2.tgz", @@ -25307,6 +25525,11 @@ } } }, + "@multiformats/base-x": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", + "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==" + }, "@multiformats/mafmt": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-11.0.3.tgz", @@ -25567,6 +25790,11 @@ "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", "dev": true }, + "@protobuf-ts/runtime": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.8.2.tgz", + "integrity": "sha512-PVxsH81y9kEbHldxxG/8Y3z2mTXWQytRl8zNS0mTPUjkEC+8GUX6gj6LsA8EFp25fAs9V0ruh+aNWmPccEI9MA==" + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -33047,11 +33275,49 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "multibase": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", + "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", + "requires": { + "@multiformats/base-x": "^4.0.1" + } + }, "multiformats": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.0.tgz", "integrity": "sha512-vqF8bmMtbxw9Zn3eTpk0OZQdBVmAT/+bTGwXb3C2qCNkp45aJMmkCDds3lrtObECWPf+KFjFtTOHkvCaT/c/xQ==" }, + "multihashes": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", + "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", + "requires": { + "multibase": "^4.0.1", + "uint8arrays": "^3.0.0", + "varint": "^5.0.2" + }, + "dependencies": { + "multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" + }, + "uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "requires": { + "multiformats": "^9.4.2" + } + }, + "varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + } + } + }, "multimatch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", diff --git a/multidim-interop/js/v0.41/package.json b/multidim-interop/js/v0.41/package.json index e3c0e67a3..ed42384d3 100644 --- a/multidim-interop/js/v0.41/package.json +++ b/multidim-interop/js/v0.41/package.json @@ -20,6 +20,7 @@ "@chainsafe/libp2p-yamux": "^3.0.4", "@libp2p/mplex": "^7.1.1", "@libp2p/tcp": "^6.0.8", + "@libp2p/webrtc": "^1.0.3", "@libp2p/websockets": "^5.0.1", "@libp2p/webtransport": "^1.0.7", "@multiformats/multiaddr": "^11.1.4", @@ -35,4 +36,4 @@ "standard": "^17.0.0", "typescript": "^4.9.4" } -} \ No newline at end of file +} diff --git a/multidim-interop/js/v0.41/test/ping.spec.ts b/multidim-interop/js/v0.41/test/ping.spec.ts index d611fb729..7f6499673 100644 --- a/multidim-interop/js/v0.41/test/ping.spec.ts +++ b/multidim-interop/js/v0.41/test/ping.spec.ts @@ -10,6 +10,7 @@ import { noise } from '@chainsafe/libp2p-noise' import { mplex } from '@libp2p/mplex' import { yamux } from '@chainsafe/libp2p-yamux' import { multiaddr } from '@multiformats/multiaddr' +import { webRTC } from '@libp2p/webrtc' async function redisProxy(commands: any[]): Promise { const res = await fetch(`http://localhost:${process.env.proxyPort}/`, { body: JSON.stringify(commands), method: "POST" }) @@ -45,6 +46,12 @@ describe('ping test', () => { throw new Error("WebTransport is not supported as a listener") } break + case 'webrtc': + options.transports = [webRTC()] + options.addresses = { + listen: isDialer ? [] : [`/ip4/${IP}/udp/0/webrtc`] + } + break case 'ws': options.transports = [webSockets()] options.addresses = { @@ -59,6 +66,7 @@ describe('ping test', () => { let skipMuxer = false switch (TRANSPORT) { case 'webtransport': + case 'webrtc': skipSecureChannel = true skipMuxer = true } From e313dbeb174d35b619506a44debc56f350d557a7 Mon Sep 17 00:00:00 2001 From: Marco Munizaga Date: Wed, 8 Feb 2023 19:02:34 -0800 Subject: [PATCH 2/3] Add onlyDial to all queries --- multidim-interop/src/generator.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/multidim-interop/src/generator.ts b/multidim-interop/src/generator.ts index deddda05f..7f2c27aa4 100644 --- a/multidim-interop/src/generator.ts +++ b/multidim-interop/src/generator.ts @@ -68,12 +68,14 @@ export async function buildTestSpecs(versions: Array): Promise): Promise Date: Wed, 8 Feb 2023 19:02:43 -0800 Subject: [PATCH 3/3] Update versions.ts --- multidim-interop/versions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multidim-interop/versions.ts b/multidim-interop/versions.ts index 37c9a3d3c..8a084fd4e 100644 --- a/multidim-interop/versions.ts +++ b/multidim-interop/versions.ts @@ -35,7 +35,7 @@ export const versions: Array = [ id: "chromium-js-v0.41.0", timeoutSecs: 30, containerImageID: chromiumJsV041.imageID, - transports: [{ name: "webtransport", onlyDial: true }], + transports: [{ name: "webtransport", onlyDial: true }, { name: "webrtc", onlyDial: true }], secureChannels: [], muxers: [] },