Skip to content

Commit

Permalink
[pkg] Remove native-duplexpair dev dependency
Browse files Browse the repository at this point in the history
It seems to be no longer maintained.
  • Loading branch information
lpinca committed Sep 6, 2023
1 parent 62521f2 commit 5b577fe
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 6 deletions.
1 change: 0 additions & 1 deletion package.json
Expand Up @@ -58,7 +58,6 @@
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"mocha": "^8.4.0",
"native-duplexpair": "^1.0.0",
"nyc": "^15.0.0",
"prettier": "^3.0.0",
"utf-8-validate": "^6.0.0"
Expand Down
73 changes: 73 additions & 0 deletions test/duplex-pair.js
@@ -0,0 +1,73 @@
//
// This code was copied from
// https://github.com/nodejs/node/blob/c506660f3267/test/common/duplexpair.js
//
// Copyright Node.js contributors. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//
'use strict';

const assert = require('assert');
const { Duplex } = require('stream');

const kCallback = Symbol('Callback');
const kOtherSide = Symbol('Other');

class DuplexSocket extends Duplex {
constructor() {
super();
this[kCallback] = null;
this[kOtherSide] = null;
}

_read() {
const callback = this[kCallback];
if (callback) {
this[kCallback] = null;
callback();
}
}

_write(chunk, encoding, callback) {
assert.notStrictEqual(this[kOtherSide], null);
assert.strictEqual(this[kOtherSide][kCallback], null);
if (chunk.length === 0) {
process.nextTick(callback);
} else {
this[kOtherSide].push(chunk);
this[kOtherSide][kCallback] = callback;
}
}

_final(callback) {
this[kOtherSide].on('end', callback);
this[kOtherSide].push(null);
}
}

function makeDuplexPair() {
const clientSide = new DuplexSocket();
const serverSide = new DuplexSocket();
clientSide[kOtherSide] = serverSide;
serverSide[kOtherSide] = clientSide;
return { clientSide, serverSide };
}

module.exports = makeDuplexPair;
10 changes: 5 additions & 5 deletions test/websocket-server.test.js
Expand Up @@ -10,8 +10,8 @@ const path = require('path');
const net = require('net');
const fs = require('fs');
const os = require('os');
const DuplexPair = require('native-duplexpair');

const makeDuplexPair = require('./duplex-pair');
const Sender = require('../lib/sender');
const WebSocket = require('..');
const { NOOP } = require('../lib/constants');
Expand Down Expand Up @@ -526,15 +526,15 @@ describe('WebSocketServer', () => {
//
// Put a stream between the raw socket and our websocket processing.
//
const { socket1: stream1, socket2: stream2 } = new DuplexPair();
const { clientSide, serverSide } = makeDuplexPair();

socket.pipe(stream1);
stream1.pipe(socket);
socket.pipe(clientSide);
clientSide.pipe(socket);

//
// Pass the other side of the stream as the socket to upgrade.
//
wss.handleUpgrade(req, stream2, head, (ws) => {
wss.handleUpgrade(req, serverSide, head, (ws) => {
ws.send('hello');
ws.close();
});
Expand Down

0 comments on commit 5b577fe

Please sign in to comment.