node-datachannel
Advanced tools
Comparing version 0.3.1 to 0.3.2
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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1320278
20206