Socket
Socket
Sign inDemoInstall

node-datachannel

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-datachannel - npm Package Compare versions

Comparing version 0.3.1 to 0.3.2

.github/workflows/lint.yml

4

CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
cmake_policy(SET CMP0091 NEW)
project(node_datachannel VERSION 0.3.1)
project(node_datachannel VERSION 0.3.2)

@@ -36,3 +36,3 @@ # Workaround for https://github.com/murat-dogan/node-datachannel/issues/65

GIT_REPOSITORY https://github.com/paullouisageneau/libdatachannel.git
GIT_TAG "v0.17.1"
GIT_TAG "v0.17.3"
)

@@ -39,0 +39,0 @@

@@ -1,6 +0,7 @@

const yargs = require('yargs/yargs')
const { hideBin } = require('yargs/helpers')
/* eslint-disable @typescript-eslint/no-var-requires */
const yargs = require('yargs/yargs');
const { hideBin } = require('yargs/helpers');
const nodeDataChannel = require('../../lib/index');
const WebSocket = require('ws');
const readline = require("readline");
const readline = require('readline');

@@ -29,3 +30,3 @@ // Init Logger

description: 'Disable Send',
default: false
default: false,
})

@@ -35,3 +36,3 @@ .option('wsUrl', {

description: 'Web Socket URL',
default: 'ws://localhost:8000'
default: 'ws://localhost:8000',
})

@@ -41,8 +42,7 @@ .option('dataChannelCount', {

description: 'Data Channel Count To Create',
default: 1
})
.argv;
default: 1,
}).argv;
// Disable Send
const disableSend = argv.disableSend
const disableSend = argv.disableSend;
if (disableSend) console.log('Send Disabled!');

@@ -52,3 +52,3 @@

const wsUrl = process.env.WS_URL || argv.wsUrl;
console.log(wsUrl)
console.log(wsUrl);
const dataChannelCount = argv.dataChannelCount;

@@ -59,8 +59,7 @@

input: process.stdin,
output: process.stdout
output: process.stdout,
});
const ws = new WebSocket(wsUrl + '/' + id, {
perMessageDeflate: false
perMessageDeflate: false,
});

@@ -112,3 +111,3 @@

bytesSent: 0,
bytesReceived: 0
bytesReceived: 0,
};

@@ -121,5 +120,5 @@ console.log('Creating DataChannel with label "test-' + i + '"');

while (!disableSend && dcArrItem.dc.bufferedAmount() <= BUFFER_SIZE) {
dcArrItem.dc.sendMessage(msgToSend)
dcArrItem.bytesSent += msgToSend.length;;
};
dcArrItem.dc.sendMessage(msgToSend);
dcArrItem.bytesSent += msgToSend.length;
}
});

@@ -129,5 +128,5 @@

while (!disableSend && dcArrItem.dc.bufferedAmount() <= BUFFER_SIZE) {
dcArrItem.dc.sendMessage(msgToSend)
dcArrItem.bytesSent += msgToSend.length;;
};
dcArrItem.dc.sendMessage(msgToSend);
dcArrItem.bytesSent += msgToSend.length;
}
});

@@ -142,3 +141,2 @@

// Report

@@ -150,3 +148,9 @@ let i = 0;

for (let j = 0; j < dcArr.length; j++) {
console.log(`${j == 0 ? i + '#' : ''} DC-${j + 1} Sent: ${byte2KB(dcArr[j].bytesSent)} KB/s / Received: ${byte2KB(dcArr[j].bytesReceived)} KB/s / SendBufferAmount: ${dcArr[j].dc.bufferedAmount()} / DataChannelOpen: ${dcArr[j].dc.isOpen()}`);
console.log(
`${j == 0 ? i + '#' : ''} DC-${j + 1} Sent: ${byte2KB(
dcArr[j].bytesSent,
)} KB/s / Received: ${byte2KB(dcArr[j].bytesReceived)} KB/s / SendBufferAmount: ${dcArr[
j
].dc.bufferedAmount()} / DataChannelOpen: ${dcArr[j].dc.isOpen()}`,
);
totalBytesSent += dcArr[j].bytesSent;

@@ -157,6 +161,14 @@ totalBytesReceived += dcArr[j].bytesReceived;

}
console.log(`Total Sent: ${byte2KB(totalBytesSent)} KB/s / Total Received: ${byte2KB(totalBytesReceived)} KB/s`);
console.log(
`Total Sent: ${byte2KB(totalBytesSent)} KB/s / Total Received: ${byte2KB(
totalBytesReceived,
)} KB/s`,
);
if (i % 5 == 0) {
console.log(`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(pcMap[peerId].bytesReceived())} MB / rtt: ${pcMap[peerId].rtt()} ms`);
console.log(
`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(
pcMap[peerId].bytesReceived(),
)} MB / rtt: ${pcMap[peerId].rtt()} ms`,
);
console.log(`Selected Candidates# ${JSON.stringify(pcMap[peerId].getSelectedCandidatePair())}`);

@@ -193,12 +205,11 @@ console.log(``);

while (!disableSend && dc.bufferedAmount() <= BUFFER_SIZE) {
dc.sendMessage(msgToSend)
};
dc.sendMessage(msgToSend);
}
dc.onBufferedAmountLow(() => {
while (!disableSend && dc.bufferedAmount() <= BUFFER_SIZE) {
dc.sendMessage(msgToSend)
};
dc.sendMessage(msgToSend);
}
});
dc.onMessage((msg) => {

@@ -223,7 +234,7 @@ // bytesReceived += msg.length;

function byte2KB(bytes) {
return `${Math.round(bytes / 1000)}`
return `${Math.round(bytes / 1000)}`;
}
function byte2MB(bytes) {
return `${Math.round(bytes / (1000 * 1000))}`
}
return `${Math.round(bytes / (1000 * 1000))}`;
}

@@ -0,4 +1,5 @@

/* eslint-disable @typescript-eslint/no-var-requires */
const nodeDataChannel = require('../../lib/index');
const WebSocket = require('ws');
const readline = require("readline");
const readline = require('readline');

@@ -23,9 +24,9 @@ // Init Logger

input: process.stdin,
output: process.stdout
output: process.stdout,
});
// Signaling Server
const WS_URL = process.env.WS_URL || "ws://localhost:8000"
const WS_URL = process.env.WS_URL || 'ws://localhost:8000';
const ws = new WebSocket(WS_URL + '/' + id, {
perMessageDeflate: false
perMessageDeflate: false,
});

@@ -81,3 +82,3 @@

if (dc.bufferedAmount() <= BUFFER_SIZE) {
dc.sendMessage(msgToSend)
dc.sendMessage(msgToSend);
bytesSent += msgToSend.length;

@@ -95,3 +96,7 @@ }

setInterval(() => {
console.log(`${i++}# Sent: ${byte2KB(bytesSent)} KB/s / Received: ${byte2KB(bytesReceived)} KB/s / SendBufferAmount: ${dc.bufferedAmount()} / DataChannelOpen: ${dc.isOpen()}`);
console.log(
`${i++}# Sent: ${byte2KB(bytesSent)} KB/s / Received: ${byte2KB(
bytesReceived,
)} KB/s / SendBufferAmount: ${dc.bufferedAmount()} / DataChannelOpen: ${dc.isOpen()}`,
);
bytesSent = 0;

@@ -102,3 +107,7 @@ bytesReceived = 0;

setInterval(() => {
console.log(`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(pcMap[peerId].bytesReceived())} MB / rtt: ${pcMap[peerId].rtt()} ms`);
console.log(
`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(
pcMap[peerId].bytesReceived(),
)} MB / rtt: ${pcMap[peerId].rtt()} ms`,
);
console.log(`Selected Candidates# ${JSON.stringify(pcMap[peerId].getSelectedCandidatePair())}`);

@@ -136,3 +145,3 @@ console.log(``);

if (dc.bufferedAmount() <= BUFFER_SIZE) {
dc.sendMessage(msgToSend)
dc.sendMessage(msgToSend);
bytesSent += msgToSend.length;

@@ -142,3 +151,2 @@ }

dc.onMessage((msg) => {

@@ -151,3 +159,7 @@ bytesReceived += msg.length;

setInterval(() => {
console.log(`${i++}# Sent: ${byte2KB(bytesSent)} KB/s / Received: ${byte2KB(bytesReceived)} KB/s / SendBufferAmount: ${dc.bufferedAmount()} / DataChannelOpen: ${dc.isOpen()}`);
console.log(
`${i++}# Sent: ${byte2KB(bytesSent)} KB/s / Received: ${byte2KB(
bytesReceived,
)} KB/s / SendBufferAmount: ${dc.bufferedAmount()} / DataChannelOpen: ${dc.isOpen()}`,
);
bytesSent = 0;

@@ -158,3 +170,7 @@ bytesReceived = 0;

setInterval(() => {
console.log(`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(pcMap[peerId].bytesReceived())} MB / rtt: ${pcMap[peerId].rtt()} ms`);
console.log(
`Stats# Sent: ${byte2MB(pcMap[peerId].bytesSent())} MB / Received: ${byte2MB(
pcMap[peerId].bytesReceived(),
)} MB / rtt: ${pcMap[peerId].rtt()} ms`,
);
console.log(`Selected Candidates# ${JSON.stringify(pcMap[peerId].getSelectedCandidatePair())}`);

@@ -179,7 +195,7 @@ console.log(``);

function byte2KB(bytes) {
return `${Math.round(bytes / 1024)}`
return `${Math.round(bytes / 1024)}`;
}
function byte2MB(bytes) {
return `${Math.round(bytes / (1024 * 1024))}`
}
return `${Math.round(bytes / (1024 * 1024))}`;
}

@@ -0,4 +1,5 @@

/* eslint-disable @typescript-eslint/no-var-requires */
const nodeDataChannel = require('../../lib/index');
const WebSocket = require('ws');
const readline = require("readline");
const readline = require('readline');

@@ -15,5 +16,5 @@ // Init Logger

// Signaling Server
const WS_URL = process.env.WS_URL || "ws://localhost:8000"
const WS_URL = process.env.WS_URL || 'ws://localhost:8000';
const ws = new WebSocket(WS_URL + '/' + id, {
perMessageDeflate: false
perMessageDeflate: false,
});

@@ -56,3 +57,3 @@

input: process.stdin,
output: process.stdout
output: process.stdout,
});

@@ -115,2 +116,2 @@

return result;
}
}
{
"name": "client",
"version": "1.0.0",
"lockfileVersion": 1,
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "client",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"ws": "^7.5.3",
"yargs": "^16.2.0"
}
},
"node_modules/ansi-regex": {
"version": "5.0.0",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/cliui": {
"version": "7.0.4",
"license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^7.0.0"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"license": "MIT"
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"license": "MIT"
},
"node_modules/escalade": {
"version": "3.1.1",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
"license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/require-directory": {
"version": "2.1.1",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/string-width": {
"version": "4.2.2",
"license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": {
"version": "6.0.0",
"license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/ws": {
"version": "7.5.3",
"license": "MIT",
"engines": {
"node": ">=8.3.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/y18n": {
"version": "5.0.8",
"license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/yargs": {
"version": "16.2.0",
"license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/yargs-parser": {
"version": "20.2.7",
"license": "ISC",
"engines": {
"node": ">=10"
}
}
},
"dependencies": {
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
"version": "5.0.0"
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {

@@ -22,4 +190,2 @@ "color-convert": "^2.0.1"

"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"requires": {

@@ -33,4 +199,2 @@ "string-width": "^4.2.0",

"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {

@@ -41,35 +205,21 @@ "color-name": "~1.1.4"

"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"version": "1.1.4"
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
"version": "8.0.0"
},
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
"version": "3.1.1"
},
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
"version": "2.0.5"
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
"version": "3.0.0"
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
"version": "2.1.1"
},
"string-width": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
"integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"requires": {

@@ -83,4 +233,2 @@ "emoji-regex": "^8.0.0",

"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"requires": {

@@ -92,4 +240,2 @@ "ansi-regex": "^5.0.0"

"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"requires": {

@@ -103,14 +249,9 @@ "ansi-styles": "^4.0.0",

"version": "7.5.3",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz",
"integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg=="
"requires": {}
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
"version": "5.0.8"
},
"yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"requires": {

@@ -127,7 +268,5 @@ "cliui": "^7.0.2",

"yargs-parser": {
"version": "20.2.7",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz",
"integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw=="
"version": "20.2.7"
}
}
}

@@ -0,1 +1,2 @@

/* eslint-disable @typescript-eslint/no-var-requires */
const WebSocket = require('ws');

@@ -8,3 +9,3 @@

wss.on('connection', (ws, req) => {
const id = req.url.replace('/', '')
const id = req.url.replace('/', '');
console.log(`New Connection from ${id}`);

@@ -19,8 +20,6 @@

console.log(`Message from ${id} to ${peerId} : ${buffer}`);
if (!peerWs)
return console.error(`Can not find peer with ID ${peerId}`);
if (!peerWs) return console.error(`Can not find peer with ID ${peerId}`);
msg.id = id;
peerWs.send(JSON.stringify(msg));
});

@@ -33,2 +32,1 @@

});

@@ -0,3 +1,4 @@

/* eslint-disable @typescript-eslint/no-var-requires */
const nodeDataChannel = require('../../lib/index');
const readline = require("readline");
const readline = require('readline');
var dgram = require('dgram');

@@ -10,3 +11,3 @@

input: process.stdin,
output: process.stdout
output: process.stdout,
});

@@ -25,3 +26,3 @@

if(state == 'complete'){
if (state == 'complete') {
let desc = peerConnection.localDescription();

@@ -36,5 +37,4 @@ console.log('');

peerConnection.setRemoteDescription(sdpObj.sdp, sdpObj.type);
console.log(track.isOpen())
console.log(track.isOpen());
rl.close();
});

@@ -44,3 +44,3 @@ }

let video = new nodeDataChannel.Video('video','RecvOnly');
let video = new nodeDataChannel.Video('video', 'RecvOnly');
video.addH264Codec(96);

@@ -53,5 +53,5 @@ video.setBitrate(3000);

track.setMediaHandler(session);
track.onMessage((msg)=>{
client.send(msg,5000,'127.0.0.1',(err,n)=>{
if(err) console.log(err,n);
track.onMessage((msg) => {
client.send(msg, 5000, '127.0.0.1', (err, n) => {
if (err) console.log(err, n);
});

@@ -58,0 +58,0 @@ });

@@ -106,4 +106,4 @@ import * as stream from 'stream';

export class RtcpReceivingSession {
requestBitrate: (bitRate: number) => void;
requestKeyframe: () => boolean;
requestBitrate(bitRate: number): void;
requestKeyframe(): boolean;
}

@@ -113,23 +113,23 @@

constructor(mid: string, dir: Direction);
addAudioCodec: (payloadType: number, codec: string, profile?: string) => void;
addOpusCodec: (payloadType: number, profile?: string) => string;
addAudioCodec(payloadType: number, codec: string, profile?: string): void;
addOpusCodec(payloadType: number, profile?: string): string;
direction: () => Direction;
generateSdp: (eol: string, addr: string, port: number) => string;
mid: () => string;
setDirection: (dir: Direction) => void;
description: () => string;
removeFormat: (fmt: string) => void;
addSSRC: (ssrc: number, name?: string, msid?: string, trackID?: string) => void;
removeSSRC: (ssrc: number) => void;
replaceSSRC: (oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string) => void;
hasSSRC: (ssrc: number) => boolean;
getSSRCs: () => number[];
getCNameForSsrc: (ssrc: number) => string;
setBitrate: (bitRate: number) => void;
getBitrate: () => number;
hasPayloadType: (payloadType: number) => boolean;
addRTXCodec: (payloadType: number, originalPayloadType: number, clockRate: number) => void;
addRTPMap: () => void;
parseSdpLine: (line: string) => void;
direction(): Direction;
generateSdp(eol: string, addr: string, port: number): string;
mid(): string;
setDirection(dir: Direction): void;
description(): string;
removeFormat(fmt: string): void;
addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
removeSSRC(ssrc: number): void;
replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
hasSSRC(ssrc: number): boolean;
getSSRCs(): number[];
getCNameForSsrc(ssrc: number): string;
setBitrate(bitRate: number): void;
getBitrate(): number;
hasPayloadType(payloadType: number): boolean;
addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
addRTPMap(): void;
parseSdpLine(line: string): void;
}

@@ -139,63 +139,63 @@

constructor(mid: string, dir: Direction);
addVideoCodec: (payloadType: number, codec: string, profile?: string) => void;
addH264Codec: (payloadType: number, profile?: string) => void;
addVP8Codec: (payloadType: number) => void;
addVP9Codec: (payloadType: number) => void;
addVideoCodec(payloadType: number, codec: string, profile?: string): void;
addH264Codec(payloadType: number, profile?: string): void;
addVP8Codec(payloadType: number): void;
addVP9Codec(payloadType: number): void;
direction: () => Direction;
generateSdp: (eol: string, addr: string, port: number) => string;
mid: () => string;
setDirection: (dir: Direction) => void;
description: () => string;
removeFormat: (fmt: string) => void;
addSSRC: (ssrc: number, name?: string, msid?: string, trackID?: string) => void;
removeSSRC: (ssrc: number) => void;
replaceSSRC: (oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string) => void;
hasSSRC: (ssrc: number) => boolean;
getSSRCs: () => number[];
getCNameForSsrc: (ssrc: number) => string;
setBitrate: (bitRate: number) => void;
getBitrate: () => number;
hasPayloadType: (payloadType: number) => boolean;
addRTXCodec: (payloadType: number, originalPayloadType: number, clockRate: number) => void;
addRTPMap: () => void;
parseSdpLine: (line: string) => void;
direction(): Direction;
generateSdp(eol: string, addr: string, port: number): string;
mid(): string;
setDirection(dir: Direction): void;
description(): string;
removeFormat(fmt: string): void;
addSSRC(ssrc: number, name?: string, msid?: string, trackID?: string): void;
removeSSRC(ssrc: number): void;
replaceSSRC(oldSsrc: number, ssrc: number, name?: string, msid?: string, trackID?: string): void;
hasSSRC(ssrc: number): boolean;
getSSRCs(): number[];
getCNameForSsrc(ssrc: number): string;
setBitrate(bitRate: number): void;
getBitrate(): number;
hasPayloadType(payloadType: number): boolean;
addRTXCodec(payloadType: number, originalPayloadType: number, clockRate: number): void;
addRTPMap(): void;
parseSdpLine(line: string): void;
}
export class Track {
direction: () => Direction;
mid: () => string;
type: () => string;
close: () => void;
sendMessage: (msg: string) => boolean;
sendMessageBinary: (buffer: Buffer) => boolean;
isOpen: () => boolean;
isClosed: () => boolean;
bufferedAmount: () => number;
maxMessageSize: () => number;
setBufferedAmountLowThreshold: (newSize: number) => void;
requestKeyframe: () => boolean;
setMediaHandler: (handler: RtcpReceivingSession) => void;
onOpen: (cb: () => void) => void;
onClosed: (cb: () => void) => void;
onError: (cb: (err: string) => void) => void;
onMessage: (cb: (msg: Buffer) => void) => void;
direction(): Direction;
mid(): string;
type(): string;
close(): void;
sendMessage(msg: string): boolean;
sendMessageBinary(buffer: Buffer): boolean;
isOpen(): boolean;
isClosed(): boolean;
bufferedAmount(): number;
maxMessageSize(): number;
setBufferedAmountLowThreshold(newSize: number): void;
requestKeyframe(): boolean;
setMediaHandler(handler: RtcpReceivingSession): void;
onOpen(cb: () => void): void;
onClosed(cb: () => void): void;
onError(cb: (err: string) => void): void;
onMessage(cb: (msg: Buffer) => void): void;
}
export class DataChannel {
close: () => void;
getLabel: () => string;
getId: () => number;
getProtocol: () => string;
sendMessage: (msg: string) => boolean;
sendMessageBinary: (buffer: Buffer) => boolean;
isOpen: () => boolean;
bufferedAmount: () => number;
maxMessageSize: () => number;
setBufferedAmountLowThreshold: (newSize: number) => void;
onOpen: (cb: () => void) => void;
onClosed: (cb: () => void) => void;
onError: (cb: (err: string) => void) => void;
onBufferedAmountLow: (cb: () => void) => void;
onMessage: (cb: (msg: string | Buffer) => void) => void;
close(): void;
getLabel(): string;
getId(): number;
getProtocol(): string;
sendMessage(msg: string): boolean;
sendMessageBinary(buffer: Buffer): boolean;
isOpen(): boolean;
bufferedAmount(): number;
maxMessageSize(): number;
setBufferedAmountLowThreshold(newSize: number): void;
onOpen(cb: () => void): void;
onClosed(cb: () => void): void;
onError(cb: (err: string) => void): void;
onBufferedAmountLow(cb: () => void): void;
onMessage(cb: (msg: string | Buffer) => void): void;
}

@@ -205,24 +205,24 @@

constructor(peerName: string, config: RtcConfig);
close: () => void;
setLocalDescription: (type?: DescriptionType) => void;
setRemoteDescription: (sdp: string, type: DescriptionType) => void;
localDescription: () => { type: string; sdp: string };
addRemoteCandidate: (candidate: string, mid: string) => void;
createDataChannel: (label: string, config?: DataChannelInitConfig) => DataChannel;
addTrack: (media: Video | Audio) => Track;
hasMedia: () => boolean;
state: () => string;
signalingState: () => string;
gatheringState: () => string;
onLocalDescription: (cb: (sdp: string, type: DescriptionType) => void) => void;
onLocalCandidate: (cb: (candidate: string, mid: string) => void) => void;
onStateChange: (cb: (state: string) => void) => void;
onSignalingStateChange: (state: (sdp: string) => void) => void;
onGatheringStateChange: (state: (sdp: string) => void) => void;
onDataChannel: (cb: (dc: DataChannel) => void) => void;
onTrack: (cb: (track: Track) => void) => void;
bytesSent: () => number;
bytesReceived: () => number;
rtt: () => number;
getSelectedCandidatePair: () => { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;
close(): void;
setLocalDescription(type?: DescriptionType): void;
setRemoteDescription(sdp: string, type: DescriptionType): void;
localDescription(): { type: string; sdp: string } | null;
addRemoteCandidate(candidate: string, mid: string): void;
createDataChannel(label: string, config?: DataChannelInitConfig): DataChannel;
addTrack(media: Video | Audio): Track;
hasMedia(): boolean;
state(): string;
signalingState(): string;
gatheringState(): string;
onLocalDescription(cb: (sdp: string, type: DescriptionType) => void): void;
onLocalCandidate(cb: (candidate: string, mid: string) => void): void;
onStateChange(cb: (state: string) => void): void;
onSignalingStateChange(cb: (state: string) => void): void;
onGatheringStateChange(cb: (state: string) => void): void;
onDataChannel(cb: (dc: DataChannel) => void): void;
onTrack(cb: (track: Track) => void): void;
bytesSent(): number;
bytesReceived(): number;
rtt(): number;
getSelectedCandidatePair(): { local: SelectedCandidateInfo; remote: SelectedCandidateInfo } | null;
}

@@ -229,0 +229,0 @@

@@ -25,6 +25,4 @@ {

"_requiredBy": [
"/@typescript-eslint/eslint-plugin/semver",
"/@typescript-eslint/typescript-estree/semver",
"/jest-snapshot/semver",
"/node-abi/semver"
"/node-abi/semver",
"/semver"
],

@@ -31,0 +29,0 @@ "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",

@@ -25,3 +25,2 @@ {

"_requiredBy": [
"/json5",
"/mkdirp",

@@ -28,0 +27,0 @@ "/prebuild",

@@ -30,6 +30,8 @@ #!/usr/bin/env node

const options = {}
let options = {}
const main = () => {
if (!argv.length) return help()
if (!argv.length) {
return help()
}
while (argv.length) {

@@ -39,4 +41,5 @@ let a = argv.shift()

if (indexOfEqualSign !== -1) {
const value = a.slice(indexOfEqualSign + 1)
a = a.slice(0, indexOfEqualSign)
argv.unshift(a.slice(indexOfEqualSign + 1))
argv.unshift(value)
}

@@ -90,3 +93,3 @@ switch (a) {

const options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }

@@ -98,4 +101,8 @@ versions = versions.map((v) => {

})
if (!versions.length) return fail()
if (inc && (versions.length !== 1 || range.length)) { return failInc() }
if (!versions.length) {
return fail()
}
if (inc && (versions.length !== 1 || range.length)) {
return failInc()
}

@@ -106,3 +113,5 @@ for (let i = 0, l = range.length; i < l; i++) {

})
if (!versions.length) return fail()
if (!versions.length) {
return fail()
}
}

@@ -112,3 +121,2 @@ return success(versions)

const failInc = () => {

@@ -129,3 +137,5 @@ console.error('--inc can only be used on a single version with no range')

return inc ? semver.inc(v, inc, options, identifier) : v
}).forEach((v, i, _) => { console.log(v) })
}).forEach((v, i, _) => {
console.log(v)
})
}

@@ -132,0 +142,0 @@

@@ -7,2 +7,3 @@ const ANY = Symbol('SemVer ANY')

}
constructor (comp, options) {

@@ -84,3 +85,3 @@ options = parseOptions(options)

loose: !!options,
includePrerelease: false
includePrerelease: false,
}

@@ -133,3 +134,3 @@ }

const parseOptions = require('../internal/parse-options')
const {re, t} = require('../internal/re')
const { re, t } = require('../internal/re')
const cmp = require('../functions/cmp')

@@ -136,0 +137,0 @@ const debug = require('../internal/debug')

module.exports = {
SemVer: require('./semver.js'),
Range: require('./range.js'),
Comparator: require('./comparator.js')
Comparator: require('./comparator.js'),
}

@@ -32,5 +32,5 @@ // hoisted class for cyclic dependency

this.set = range
.split(/\s*\|\|\s*/)
.split('||')
// map the range to a 2d array of comparators
.map(range => this.parseRange(range.trim()))
.map(r => this.parseRange(r.trim()))
// throw out any comparator lists that are empty

@@ -50,5 +50,5 @@ // this generally means that it was not a valid range, which is allowed

this.set = this.set.filter(c => !isNullSet(c[0]))
if (this.set.length === 0)
if (this.set.length === 0) {
this.set = [first]
else if (this.set.length > 1) {
} else if (this.set.length > 1) {
// if we have any that are *, then the range is just *

@@ -89,4 +89,5 @@ for (const c of this.set) {

const cached = cache.get(memoKey)
if (cached)
if (cached) {
return cached
}

@@ -100,3 +101,3 @@ const loose = this.options.loose

range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
debug('comparator trim', range, re[t.COMPARATORTRIM])
debug('comparator trim', range)

@@ -115,4 +116,3 @@ // `~ 1.2.3` => `~1.2.3`

const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
const rangeList = range
let rangeList = range
.split(' ')

@@ -124,5 +124,11 @@ .map(comp => parseComparator(comp, this.options))

.map(comp => replaceGTE0(comp, this.options))
if (loose) {
// in loose mode, throw out any that are not valid comparators
.filter(this.options.loose ? comp => !!comp.match(compRe) : () => true)
.map(comp => new Comparator(comp, this.options))
rangeList = rangeList.filter(comp => {
debug('loose invalid filter', comp, this.options)
return !!comp.match(re[t.COMPARATORLOOSE])
})
}
debug('range list', rangeList)

@@ -132,11 +138,13 @@ // if any comparators are the null set, then replace with JUST null set

// also, don't include the same comparator more than once
const l = rangeList.length
const rangeMap = new Map()
for (const comp of rangeList) {
if (isNullSet(comp))
const comparators = rangeList.map(comp => new Comparator(comp, this.options))
for (const comp of comparators) {
if (isNullSet(comp)) {
return [comp]
}
rangeMap.set(comp.value, comp)
}
if (rangeMap.size > 1 && rangeMap.has(''))
if (rangeMap.size > 1 && rangeMap.has('')) {
rangeMap.delete('')
}

@@ -206,3 +214,3 @@ const result = [...rangeMap.values()]

tildeTrimReplace,
caretTrimReplace
caretTrimReplace,
} = require('../internal/re')

@@ -256,4 +264,4 @@

const replaceTildes = (comp, options) =>
comp.trim().split(/\s+/).map((comp) => {
return replaceTilde(comp, options)
comp.trim().split(/\s+/).map((c) => {
return replaceTilde(c, options)
}).join(' ')

@@ -296,4 +304,4 @@

const replaceCarets = (comp, options) =>
comp.trim().split(/\s+/).map((comp) => {
return replaceCaret(comp, options)
comp.trim().split(/\s+/).map((c) => {
return replaceCaret(c, options)
}).join(' ')

@@ -356,4 +364,4 @@

debug('replaceXRanges', comp, options)
return comp.split(/\s+/).map((comp) => {
return replaceXRange(comp, options)
return comp.split(/\s+/).map((c) => {
return replaceXRange(c, options)
}).join(' ')

@@ -419,4 +427,5 @@ }

if (gtlt === '<')
if (gtlt === '<') {
pr = '-0'
}

@@ -423,0 +432,0 @@ ret = `${gtlt + M}.${m}.${p}${pr}`

@@ -268,3 +268,3 @@ const debug = require('../internal/debug')

// 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
if (this.prerelease[0] === identifier) {
if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
if (isNaN(this.prerelease[1])) {

@@ -271,0 +271,0 @@ this.prerelease = [identifier, 0]

@@ -11,13 +11,17 @@ const eq = require('./eq')

case '===':
if (typeof a === 'object')
if (typeof a === 'object') {
a = a.version
if (typeof b === 'object')
}
if (typeof b === 'object') {
b = b.version
}
return a === b
case '!==':
if (typeof a === 'object')
if (typeof a === 'object') {
a = a.version
if (typeof b === 'object')
}
if (typeof b === 'object') {
b = b.version
}
return a !== b

@@ -24,0 +28,0 @@

const SemVer = require('../classes/semver')
const parse = require('./parse')
const {re, t} = require('../internal/re')
const { re, t } = require('../internal/re')

@@ -46,4 +46,5 @@ const coerce = (version, options) => {

if (match === null)
if (match === null) {
return null
}

@@ -50,0 +51,0 @@ return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)

@@ -10,3 +10,6 @@ const SemVer = require('../classes/semver')

try {
return new SemVer(version, options).inc(release, identifier).version
return new SemVer(
version instanceof SemVer ? version.version : version,
options
).inc(release, identifier).version
} catch (er) {

@@ -13,0 +16,0 @@ return null

@@ -1,2 +0,2 @@

const {MAX_LENGTH} = require('../internal/constants')
const { MAX_LENGTH } = require('../internal/constants')
const { re, t } = require('../internal/re')

@@ -3,0 +3,0 @@ const SemVer = require('../classes/semver')

@@ -7,3 +7,3 @@ // Note: this is the semver.org version of the spec that it implements

const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
/* istanbul ignore next */ 9007199254740991
/* istanbul ignore next */ 9007199254740991

@@ -17,3 +17,3 @@ // Max safe segment length for coercion.

MAX_SAFE_INTEGER,
MAX_SAFE_COMPONENT_LENGTH
MAX_SAFE_COMPONENT_LENGTH,
}

@@ -22,3 +22,3 @@ const numeric = /^[0-9]+$/

compareIdentifiers,
rcompareIdentifiers
rcompareIdentifiers,
}

@@ -7,6 +7,6 @@ // parse out just the options we care about so we always get a consistent

: typeof options !== 'object' ? { loose: true }
: opts.filter(k => options[k]).reduce((options, k) => {
options[k] = true
return options
: opts.filter(k => options[k]).reduce((o, k) => {
o[k] = true
return o
}, {})
module.exports = parseOptions

@@ -13,3 +13,3 @@ const { MAX_SAFE_COMPONENT_LENGTH } = require('./constants')

const index = R++
debug(index, value)
debug(name, index, value)
t[name] = index

@@ -182,3 +182,3 @@ src[index] = value

// >=0.0.0 is like a star
createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$')
createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$')
createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
{
"_args": [
[
"semver@7.3.5",
"semver@7.3.7",
"/home/runner/work/node-datachannel/node-datachannel"
]
],
"_from": "semver@7.3.5",
"_id": "semver@7.3.5",
"_from": "semver@7.3.7",
"_id": "semver@7.3.7",
"_inBundle": false,
"_integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
"_integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"_location": "/node-abi/semver",

@@ -17,8 +17,8 @@ "_phantomChildren": {},

"registry": true,
"raw": "semver@7.3.5",
"raw": "semver@7.3.7",
"name": "semver",
"escapedName": "semver",
"rawSpec": "7.3.5",
"rawSpec": "7.3.7",
"saveSpec": null,
"fetchSpec": "7.3.5"
"fetchSpec": "7.3.7"
},

@@ -28,5 +28,8 @@ "_requiredBy": [

],
"_resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
"_spec": "7.3.5",
"_resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
"_spec": "7.3.7",
"_where": "/home/runner/work/node-datachannel/node-datachannel",
"author": {
"name": "GitHub Inc."
},
"bin": {

@@ -43,3 +46,5 @@ "semver": "bin/semver.js"

"devDependencies": {
"tap": "^14.10.7"
"@npmcli/eslint-config": "^3.0.1",
"@npmcli/template-oss": "3.3.2",
"tap": "^16.0.0"
},

@@ -50,10 +55,10 @@ "engines": {

"files": [
"bin/**/*.js",
"range.bnf",
"classes/**/*.js",
"functions/**/*.js",
"internal/**/*.js",
"ranges/**/*.js",
"bin/",
"classes/",
"functions/",
"internal/",
"ranges/",
"index.js",
"preload.js"
"preload.js",
"range.bnf"
],

@@ -69,6 +74,12 @@ "homepage": "https://github.com/npm/node-semver#readme",

"scripts": {
"lint": "eslint \"**/*.js\"",
"lintfix": "npm run lint -- --fix",
"postlint": "template-oss-check",
"postpublish": "git push origin --follow-tags",
"posttest": "npm run lint",
"postversion": "npm publish",
"prepublishOnly": "git push origin --follow-tags",
"preversion": "npm test",
"snap": "tap",
"template-oss-apply": "template-oss-apply --force",
"test": "tap"

@@ -80,3 +91,25 @@ },

},
"version": "7.3.5"
"templateOSS": {
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
"version": "3.3.2",
"engines": ">=10",
"ciVersions": [
"10.0.0",
"10.x",
"12.x",
"14.x",
"16.x"
],
"distPaths": [
"bin/",
"classes/",
"functions/",
"internal/",
"ranges/",
"index.js",
"preload.js",
"range.bnf"
]
},
"version": "7.3.7"
}

@@ -50,4 +50,5 @@ const SemVer = require('../classes/semver')

})
if (setMin && (!minver || gt(minver, setMin)))
if (setMin && (!minver || gt(minver, setMin))) {
minver = setMin
}
}

@@ -54,0 +55,0 @@

const SemVer = require('../classes/semver')
const Comparator = require('../classes/comparator')
const {ANY} = Comparator
const { ANY } = Comparator
const Range = require('../classes/range')

@@ -5,0 +5,0 @@ const satisfies = require('../functions/satisfies')

@@ -8,3 +8,3 @@ // given a set of versions and a range, create a "simplified" range

const set = []
let min = null
let first = null
let prev = null

@@ -16,27 +16,30 @@ const v = versions.sort((a, b) => compare(a, b, options))

prev = version
if (!min)
min = version
if (!first) {
first = version
}
} else {
if (prev) {
set.push([min, prev])
set.push([first, prev])
}
prev = null
min = null
first = null
}
}
if (min)
set.push([min, null])
if (first) {
set.push([first, null])
}
const ranges = []
for (const [min, max] of set) {
if (min === max)
if (min === max) {
ranges.push(min)
else if (!max && min === v[0])
} else if (!max && min === v[0]) {
ranges.push('*')
else if (!max)
} else if (!max) {
ranges.push(`>=${min}`)
else if (min === v[0])
} else if (min === v[0]) {
ranges.push(`<=${max}`)
else
} else {
ranges.push(`${min} - ${max}`)
}
}

@@ -43,0 +46,0 @@ const simplified = ranges.join(' || ')

@@ -44,4 +44,5 @@ const Range = require('../classes/range.js')

const subset = (sub, dom, options = {}) => {
if (sub === dom)
if (sub === dom) {
return true
}

@@ -56,4 +57,5 @@ sub = new Range(sub, options)

sawNonNull = sawNonNull || isSub !== null
if (isSub)
if (isSub) {
continue OUTER
}
}

@@ -64,4 +66,5 @@ // the null set is a subset of everything, but null simple ranges in

// then it is a subset.
if (sawNonNull)
if (sawNonNull) {
return false
}
}

@@ -72,19 +75,22 @@ return true

const simpleSubset = (sub, dom, options) => {
if (sub === dom)
if (sub === dom) {
return true
}
if (sub.length === 1 && sub[0].semver === ANY) {
if (dom.length === 1 && dom[0].semver === ANY)
if (dom.length === 1 && dom[0].semver === ANY) {
return true
else if (options.includePrerelease)
sub = [ new Comparator('>=0.0.0-0') ]
else
sub = [ new Comparator('>=0.0.0') ]
} else if (options.includePrerelease) {
sub = [new Comparator('>=0.0.0-0')]
} else {
sub = [new Comparator('>=0.0.0')]
}
}
if (dom.length === 1 && dom[0].semver === ANY) {
if (options.includePrerelease)
if (options.includePrerelease) {
return true
else
dom = [ new Comparator('>=0.0.0') ]
} else {
dom = [new Comparator('>=0.0.0')]
}
}

@@ -95,12 +101,14 @@

for (const c of sub) {
if (c.operator === '>' || c.operator === '>=')
if (c.operator === '>' || c.operator === '>=') {
gt = higherGT(gt, c, options)
else if (c.operator === '<' || c.operator === '<=')
} else if (c.operator === '<' || c.operator === '<=') {
lt = lowerLT(lt, c, options)
else
} else {
eqSet.add(c.semver)
}
}
if (eqSet.size > 1)
if (eqSet.size > 1) {
return null
}

@@ -110,6 +118,7 @@ let gtltComp

gtltComp = compare(gt.semver, lt.semver, options)
if (gtltComp > 0)
if (gtltComp > 0) {
return null
else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<='))
} else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
return null
}
}

@@ -119,11 +128,14 @@

for (const eq of eqSet) {
if (gt && !satisfies(eq, String(gt), options))
if (gt && !satisfies(eq, String(gt), options)) {
return null
}
if (lt && !satisfies(eq, String(lt), options))
if (lt && !satisfies(eq, String(lt), options)) {
return null
}
for (const c of dom) {
if (!satisfies(eq, String(c), options))
if (!satisfies(eq, String(c), options)) {
return false
}
}

@@ -164,6 +176,8 @@

higher = higherGT(gt, c, options)
if (higher === c && higher !== gt)
if (higher === c && higher !== gt) {
return false
} else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options))
}
} else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
return false
}
}

@@ -181,9 +195,12 @@ if (lt) {

lower = lowerLT(lt, c, options)
if (lower === c && lower !== lt)
if (lower === c && lower !== lt) {
return false
} else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options))
}
} else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
return false
}
}
if (!c.operator && (lt || gt) && gtltComp !== 0)
if (!c.operator && (lt || gt) && gtltComp !== 0) {
return false
}
}

@@ -194,7 +211,9 @@

// Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
if (gt && hasDomLT && !lt && gtltComp !== 0)
if (gt && hasDomLT && !lt && gtltComp !== 0) {
return false
}
if (lt && hasDomGT && !gt && gtltComp !== 0)
if (lt && hasDomGT && !gt && gtltComp !== 0) {
return false
}

@@ -204,4 +223,5 @@ // we needed a prerelease range in a specific tuple, but didn't get one

// because it includes prereleases in the 1.2.3 tuple
if (needDomGTPre || needDomLTPre)
if (needDomGTPre || needDomLTPre) {
return false
}

@@ -213,4 +233,5 @@ return true

const higherGT = (a, b, options) => {
if (!a)
if (!a) {
return b
}
const comp = compare(a.semver, b.semver, options)

@@ -225,4 +246,5 @@ return comp > 0 ? a

const lowerLT = (a, b, options) => {
if (!a)
if (!a) {
return b
}
const comp = compare(a.semver, b.semver, options)

@@ -229,0 +251,0 @@ return comp < 0 ? a

@@ -267,3 +267,5 @@ semver(1) -- The semantic versioner for npm

* `*` := `>=0.0.0` (Any version satisfies)
* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless
`includePrerelease` is specified, in which case any version at all
satisfies)
* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version)

@@ -270,0 +272,0 @@ * `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions)

{
"_args": [
[
"are-we-there-yet@1.1.5",
"are-we-there-yet@1.1.7",
"/home/runner/work/node-datachannel/node-datachannel"
]
],
"_from": "are-we-there-yet@1.1.5",
"_id": "are-we-there-yet@1.1.5",
"_from": "are-we-there-yet@1.1.7",
"_id": "are-we-there-yet@1.1.7",
"_inBundle": false,
"_integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"_integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
"_location": "/npmlog/are-we-there-yet",

@@ -17,8 +17,8 @@ "_phantomChildren": {},

"registry": true,
"raw": "are-we-there-yet@1.1.5",
"raw": "are-we-there-yet@1.1.7",
"name": "are-we-there-yet",
"escapedName": "are-we-there-yet",
"rawSpec": "1.1.5",
"rawSpec": "1.1.7",
"saveSpec": null,
"fetchSpec": "1.1.5"
"fetchSpec": "1.1.7"
},

@@ -28,4 +28,4 @@ "_requiredBy": [

],
"_resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
"_spec": "1.1.5",
"_resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
"_spec": "1.1.7",
"_where": "/home/runner/work/node-datachannel/node-datachannel",

@@ -67,3 +67,3 @@ "author": {

},
"version": "1.1.5"
"version": "1.1.7"
}

@@ -23,3 +23,3 @@ {

"strip-ansi": "3.0.1",
"wide-align": "1.1.3"
"wide-align": "1.1.5"
},

@@ -26,0 +26,0 @@ "_requested": {

@@ -376,3 +376,3 @@ 'use strict'

} else {
BufferList.prototype[m] = function (offset) {
BufferList.prototype[m] = function (offset = 0) {
return this.slice(offset, offset + methods[m])[m](0)

@@ -379,0 +379,0 @@ }

{
"_args": [
[
"bl@4.0.3",
"bl@4.1.0",
"/home/runner/work/node-datachannel/node-datachannel"
]
],
"_from": "bl@4.0.3",
"_id": "bl@4.0.3",
"_from": "bl@4.1.0",
"_id": "bl@4.1.0",
"_inBundle": false,
"_integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
"_integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"_location": "/tar-stream/bl",

@@ -17,8 +17,8 @@ "_phantomChildren": {},

"registry": true,
"raw": "bl@4.0.3",
"raw": "bl@4.1.0",
"name": "bl",
"escapedName": "bl",
"rawSpec": "4.0.3",
"rawSpec": "4.1.0",
"saveSpec": null,
"fetchSpec": "4.0.3"
"fetchSpec": "4.1.0"
},

@@ -28,4 +28,4 @@ "_requiredBy": [

],
"_resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
"_spec": "4.0.3",
"_resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"_spec": "4.1.0",
"_where": "/home/runner/work/node-datachannel/node-datachannel",

@@ -69,3 +69,3 @@ "authors": [

},
"version": "4.0.3"
"version": "4.1.0"
}

@@ -268,2 +268,3 @@ 'use strict'

buf1[0] = 0x1
buf2[1] = 0x3

@@ -278,2 +279,3 @@ buf2[2] = 0x4

t.equal(bl.readUInt8(), 0x1)
t.equal(bl.readUInt8(2), 0x3)

@@ -297,2 +299,3 @@ t.equal(bl.readInt8(2), 0x3)

buf1[0] = 0x1
buf2[1] = 0x3

@@ -307,2 +310,4 @@ buf2[2] = 0x4

t.equal(bl.readUInt16BE(), 0x0100)
t.equal(bl.readUInt16LE(), 0x0001)
t.equal(bl.readUInt16BE(2), 0x0304)

@@ -330,2 +335,3 @@ t.equal(bl.readUInt16LE(2), 0x0403)

buf1[0] = 0x1
buf2[1] = 0x3

@@ -340,2 +346,4 @@ buf2[2] = 0x4

t.equal(bl.readUInt32BE(), 0x01000304)
t.equal(bl.readUInt32LE(), 0x04030001)
t.equal(bl.readUInt32BE(2), 0x03042342)

@@ -400,2 +408,3 @@ t.equal(bl.readUInt32LE(2), 0x42230403)

buf1[0] = 0x01
buf2[1] = 0x00

@@ -410,3 +419,7 @@ buf2[2] = 0x00

t.equal(bl.readFloatLE(2), 0x01)
const canonical = Buffer.concat([buf1, buf2, buf3])
t.equal(bl.readFloatLE(), canonical.readFloatLE())
t.equal(bl.readFloatBE(), canonical.readFloatBE())
t.equal(bl.readFloatLE(2), canonical.readFloatLE(2))
t.equal(bl.readFloatBE(2), canonical.readFloatBE(2))

@@ -422,2 +435,3 @@ t.end()

buf1[0] = 0x01
buf2[1] = 0x55

@@ -436,3 +450,7 @@ buf2[2] = 0x55

t.equal(bl.readDoubleLE(2), 0.3333333333333333)
const canonical = Buffer.concat([buf1, buf2, buf3])
t.equal(bl.readDoubleBE(), canonical.readDoubleBE())
t.equal(bl.readDoubleLE(), canonical.readDoubleLE())
t.equal(bl.readDoubleBE(2), canonical.readDoubleBE(2))
t.equal(bl.readDoubleLE(2), canonical.readDoubleLE(2))

@@ -439,0 +457,0 @@ t.end()

{
"//": "But not version 5 of string-width, as that's ESM only",
"_args": [
[
"wide-align@1.1.3",
"wide-align@1.1.5",
"/home/runner/work/node-datachannel/node-datachannel"
]
],
"_from": "wide-align@1.1.3",
"_id": "wide-align@1.1.3",
"_from": "wide-align@1.1.5",
"_id": "wide-align@1.1.5",
"_inBundle": false,
"_integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"_integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
"_location": "/wide-align",

@@ -17,8 +18,8 @@ "_phantomChildren": {},

"registry": true,
"raw": "wide-align@1.1.3",
"raw": "wide-align@1.1.5",
"name": "wide-align",
"escapedName": "wide-align",
"rawSpec": "1.1.3",
"rawSpec": "1.1.5",
"saveSpec": null,
"fetchSpec": "1.1.3"
"fetchSpec": "1.1.5"
},

@@ -28,4 +29,4 @@ "_requiredBy": [

],
"_resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
"_spec": "1.1.3",
"_resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
"_spec": "1.1.5",
"_where": "/home/runner/work/node-datachannel/node-datachannel",

@@ -41,7 +42,7 @@ "author": {

"dependencies": {
"string-width": "^1.0.2 || 2"
"string-width": "^1.0.2 || 2 || 3 || 4"
},
"description": "A wide-character aware text alignment function for use on the console or with fixed width fonts.",
"devDependencies": {
"tap": "10 || 11 || 12"
"tap": "*"
},

@@ -68,6 +69,5 @@ "files": [

"scripts": {
"test": "tap --coverage test/*.js",
"version": "perl -pi -e 's/^( \"version\": $ENV{npm_config_node_version}\").*?\",/$1abc\",/' package-lock.json ; git add package-lock.json"
"test": "tap --coverage test/*.js"
},
"version": "1.1.3"
"version": "1.1.5"
}
{
"name": "node-datachannel",
"version": "0.3.1",
"version": "0.3.2",
"description": "libdatachannel node bindings",

@@ -18,3 +18,3 @@ "main": "lib/index.js",

"clean": "cmake-js clean",
"lint": "eslint lib/**/*",
"lint": "eslint lib/**/* test/**/*",
"test": "jest"

@@ -21,0 +21,0 @@ },

@@ -0,4 +1,5 @@

// eslint-disable-next-line @typescript-eslint/no-var-requires
const nodeDataChannel = require('../lib/index');
nodeDataChannel.initLogger("Debug");
nodeDataChannel.initLogger('Debug');
nodeDataChannel.preload();

@@ -27,39 +28,39 @@

let peer1 = new nodeDataChannel.PeerConnection("Peer1", { iceServers: ["stun:stun.l.google.com:19302"] });
let peer1 = new nodeDataChannel.PeerConnection('Peer1', { iceServers: ['stun:stun.l.google.com:19302'] });
// Set Callbacks
peer1.onStateChange((state) => {
console.log("Peer1 State:", state);
console.log('Peer1 State:', state);
});
peer1.onGatheringStateChange((state) => {
console.log("Peer1 GatheringState:", state);
console.log('Peer1 GatheringState:', state);
});
peer1.onLocalDescription((sdp, type) => {
console.log("Peer1 SDP:", sdp, " Type:", type);
console.log('Peer1 SDP:', sdp, ' Type:', type);
peer2.setRemoteDescription(sdp, type);
});
peer1.onLocalCandidate((candidate, mid) => {
console.log("Peer1 Candidate:", candidate);
console.log('Peer1 Candidate:', candidate);
peer2.addRemoteCandidate(candidate, mid);
});
let peer2 = new nodeDataChannel.PeerConnection("Peer2", { iceServers: ["stun:stun.l.google.com:19302"] });
let peer2 = new nodeDataChannel.PeerConnection('Peer2', { iceServers: ['stun:stun.l.google.com:19302'] });
// Set Callbacks
peer2.onStateChange((state) => {
console.log("Peer2 State:", state);
console.log('Peer2 State:', state);
});
peer2.onGatheringStateChange((state) => {
console.log("Peer2 GatheringState:", state);
console.log('Peer2 GatheringState:', state);
});
peer2.onLocalDescription((sdp, type) => {
console.log("Peer2 SDP:", sdp, " Type:", type);
console.log('Peer2 SDP:', sdp, ' Type:', type);
peer1.setRemoteDescription(sdp, type);
});
peer2.onLocalCandidate((candidate, mid) => {
console.log("Peer2 Candidate:", candidate);
console.log('Peer2 Candidate:', candidate);
peer1.addRemoteCandidate(candidate, mid);
});
peer2.onDataChannel((dc) => {
console.log("Peer2 Got DataChannel: ", dc.getLabel());
console.log('Peer2 Got DataChannel: ', dc.getLabel());
dc2 = dc;

@@ -69,6 +70,6 @@ dc2.onMessage((msg) => {

});
dc2.sendMessage("Hello From Peer2");
dc2.sendMessage('Hello From Peer2');
dc2.onClosed(() => {
console.log('dc2 closed');
});
});
});

@@ -85,5 +86,5 @@

// }
dc1 = peer1.createDataChannel("test");
dc1 = peer1.createDataChannel('test');
dc1.onOpen(() => {
dc1.sendMessage("Hello from Peer1");
dc1.sendMessage('Hello from Peer1');
// Binary message: Use sendMessageBinary(Buffer)

@@ -95,3 +96,3 @@ });

dc1.onClosed(() => {
console.log('dc1 closed');
console.log('dc1 closed');
});

@@ -98,0 +99,0 @@

@@ -0,1 +1,2 @@

// eslint-disable-next-line @typescript-eslint/no-var-requires
const nodeDataChannel = require('../lib/index');

@@ -15,5 +16,4 @@

describe('PeerConnection Classes', () => {
test('Create PeerConnection', () => {
let peer = new nodeDataChannel.PeerConnection("Peer", { iceServers: ["stun:stun.l.google.com:19302"] });
let peer = new nodeDataChannel.PeerConnection('Peer', { iceServers: ['stun:stun.l.google.com:19302'] });
expect(peer).toBeDefined();

@@ -27,3 +27,3 @@ expect(peer.onStateChange).toBeDefined();

test('Create Data Channel', () => {
let peer = new nodeDataChannel.PeerConnection("Peer", { iceServers: ["stun:stun.l.google.com:19302"] });
let peer = new nodeDataChannel.PeerConnection('Peer', { iceServers: ['stun:stun.l.google.com:19302'] });
let dc = peer.createDataChannel('test', { protocol: 'test-protocol' });

@@ -42,3 +42,2 @@ expect(dc).toBeDefined();

describe('P2P', () => {

@@ -48,4 +47,4 @@ // Default is 5000 ms but we need more

let peer1 = new nodeDataChannel.PeerConnection("Peer1", { iceServers: ["stun:stun.l.google.com:19302"] });
let peer2 = new nodeDataChannel.PeerConnection("Peer2", { iceServers: ["stun:stun.l.google.com:19302"] });
let peer1 = new nodeDataChannel.PeerConnection('Peer1', { iceServers: ['stun:stun.l.google.com:19302'] });
let peer2 = new nodeDataChannel.PeerConnection('Peer2', { iceServers: ['stun:stun.l.google.com:19302'] });
let dc1 = null;

@@ -98,9 +97,9 @@ let dc2 = null;

});
dc2.sendMessage("Hello From Peer2");
dc2.sendMessage('Hello From Peer2');
});
dc1 = peer1.createDataChannel("test-p2p");
dc1 = peer1.createDataChannel('test-p2p');
dc1.onOpen(() => {
p1DCMock();
dc1.sendMessage("Hello From Peer1");
dc1.sendMessage('Hello From Peer1');
});

@@ -117,11 +116,2 @@ dc1.onMessage((msg) => {

peer2.close();
// Fee memory
dc1 = null;
dc2 = null;
peer1 = null;
peer2 = null;
// Cleanup Threads
nodeDataChannel.cleanup();
}, 10 * 1000);

@@ -147,11 +137,10 @@

expect(p1DCMessageMock.mock.calls.length).toBe(1);
expect(p1DCMessageMock.mock.calls[0][0]).toEqual("Hello From Peer2");
expect(p1DCMessageMock.mock.calls[0][0]).toEqual('Hello From Peer2');
expect(p2DCMock.mock.calls.length).toBe(1);
expect(p2DCMessageMock.mock.calls.length).toBe(1);
expect(p2DCMessageMock.mock.calls[0][0]).toEqual("Hello From Peer1");
expect(p2DCMessageMock.mock.calls[0][0]).toEqual('Hello From Peer1');
done();
}, 12 * 1000);
});

@@ -171,10 +160,7 @@ });

describe('DataChannel streams', () => {
test('can build an echo pipeline', async () => {
let clientPeer = new nodeDataChannel.PeerConnection("Client", { iceServers: [] });
let echoPeer = new nodeDataChannel.PeerConnection("Client", { iceServers: [] });
let clientPeer = new nodeDataChannel.PeerConnection('Client', { iceServers: [] });
let echoPeer = new nodeDataChannel.PeerConnection('Client', { iceServers: [] });
const echoStream = new nodeDataChannel.DataChannelStream(
echoPeer.createDataChannel("echo-channel")
);
const echoStream = new nodeDataChannel.DataChannelStream(echoPeer.createDataChannel('echo-channel'));
echoStream.pipe(echoStream); // Echo all received data back to the client

@@ -194,9 +180,15 @@

const clientResponsePromise = new Promise((resolve) => clientChannel.onMessage(resolve));
clientChannel.sendMessage("test message");
clientChannel.sendMessage('test message');
expect(await clientResponsePromise).toBe("test message");
expect(await clientResponsePromise).toBe('test message');
clientChannel.close();
clientPeer.close();
echoPeer.close();
});
});
});
afterAll(() => {
// Properly cleanup so Jest does not complain about asynchronous operations that weren't stopped.
nodeDataChannel.cleanup();
});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc