fix: remove buggy node polyfill plugin (#18531)

* fix: remove buggy node polyfill plugin

* fix websocket test

* remove assert dependency
This commit is contained in:
Justin Starry 2021-07-09 00:33:41 -05:00 committed by GitHub
parent f6371cce17
commit 2ef2b6daa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 24 additions and 20 deletions

View File

@ -17562,6 +17562,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
"integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
"deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.",
"dev": true,
"dependencies": {
"estree-walker": "^0.6.1",

View File

@ -2,7 +2,6 @@ import babel from '@rollup/plugin-babel';
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import nodeResolve from '@rollup/plugin-node-resolve';
import nodePolyfills from 'rollup-plugin-node-polyfills';
import replace from '@rollup/plugin-replace';
import {terser} from 'rollup-plugin-terser';
@ -90,7 +89,7 @@ function generateConfig(configType, format) {
'crypto-hash',
'jayson/lib/client/browser',
'js-sha3',
'node-fetch',
// 'node-fetch', will resolve to whatwg-fetch
'rpc-websockets',
'secp256k1',
'superstruct',
@ -125,7 +124,6 @@ function generateConfig(configType, format) {
// TODO: Find a workaround to avoid resolving the following JSON file:
// `node_modules/secp256k1/node_modules/elliptic/package.json`
config.plugins.push(json());
config.plugins.push(nodePolyfills());
break;
case 'node':

View File

@ -1,7 +1,5 @@
import assert from 'assert';
import bs58 from 'bs58';
import {Buffer} from 'buffer';
import {parse as urlParse} from 'url';
import fetch, {Response} from 'node-fetch';
import {
type as pick,
@ -34,6 +32,7 @@ import {Signer} from './keypair';
import {MS_PER_SLOT} from './timing';
import {Transaction} from './transaction';
import {Message} from './message';
import assert from './util/assert';
import {sleep} from './util/sleep';
import {promiseTimeout} from './util/promise-timeout';
import {toBuffer} from './util/to-buffer';
@ -2025,7 +2024,7 @@ export class Connection {
endpoint: string,
commitmentOrConfig?: Commitment | ConnectionConfig,
) {
let url = urlParse(endpoint);
let url = new URL(endpoint);
const useHttps = url.protocol === 'https:';
let wsEndpoint;
@ -2046,7 +2045,7 @@ export class Connection {
this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);
this._rpcClient = createRpcClient(
url.href,
url.toString(),
useHttps,
httpHeaders,
fetchMiddleware,

View File

@ -1,11 +1,11 @@
import {Buffer} from 'buffer';
import * as BufferLayout from '@solana/buffer-layout';
import secp256k1 from 'secp256k1';
import assert from 'assert';
import {keccak_256} from 'js-sha3';
import {PublicKey} from './publickey';
import {TransactionInstruction} from './transaction';
import assert from './util/assert';
import {toBuffer} from './util/to-buffer';
const {publicKeyCreate, ecdsaSign} = secp256k1;

View File

@ -1,4 +1,3 @@
import invariant from 'assert';
import nacl from 'tweetnacl';
import bs58 from 'bs58';
import {Buffer} from 'buffer';
@ -7,6 +6,7 @@ import {Message} from './message';
import {PublicKey} from './publickey';
import * as shortvec from './util/shortvec-encoding';
import {toBuffer} from './util/to-buffer';
import invariant from './util/assert';
import type {Signer} from './keypair';
import type {Blockhash} from './blockhash';
import type {CompiledInstruction} from './message';

View File

@ -0,0 +1,8 @@
export default function (
condition: unknown,
message?: string,
): asserts condition {
if (!condition) {
throw new Error(message || 'Assertion failed');
}
}

View File

@ -1,7 +1,5 @@
import {format as urlFormat, parse as urlParse} from 'url';
export function makeWebsocketUrl(endpoint: string) {
let url = urlParse(endpoint);
let url = new URL(endpoint);
const useHttps = url.protocol === 'https:';
url.protocol = useHttps ? 'wss:' : 'ws:';
@ -13,8 +11,8 @@ export function makeWebsocketUrl(endpoint: string) {
// When the endpoint omits the port, we're connecting to the protocol
// default ports: http(80) or https(443) and it's assumed we're behind a reverse
// proxy which manages WebSocket upgrade and backend port redirection.
if (url.port !== null) {
if (url.port !== '') {
url.port = String(Number(url.port) + 1);
}
return urlFormat(url);
return url.toString();
}

View File

@ -1,5 +1,4 @@
import bs58 from 'bs58';
import invariant from 'assert';
import {Buffer} from 'buffer';
import {Token, u64} from '@solana/spl-token';
import {expect, use} from 'chai';
@ -19,6 +18,7 @@ import {
sendAndConfirmTransaction,
Keypair,
} from '../src';
import invariant from '../src/util/assert';
import {DEFAULT_TICKS_PER_SLOT, NUM_TICKS_PER_SECOND} from '../src/timing';
import {MOCK_PORT, url} from './url';
import {

View File

@ -1,10 +1,10 @@
import bs58 from 'bs58';
import BN from 'bn.js';
import invariant from 'assert';
import * as mockttp from 'mockttp';
import {mockRpcMessage} from './rpc-websockets';
import {Connection, PublicKey, Transaction, Signer} from '../../src';
import invariant from '../../src/util/assert';
import type {Commitment, HttpHeaders, RpcParams} from '../../src/connection';
export const mockServer: mockttp.Mockttp | undefined =
@ -150,7 +150,7 @@ const processTransaction = async ({
transaction.sign(...signers);
const encoded = transaction.serialize().toString('base64');
invariant(transaction.signature !== null);
invariant(transaction.signature);
const signature = bs58.encode(transaction.signature);
await mockRpcResponse({
method: 'sendTransaction',

View File

@ -1,5 +1,4 @@
import base58 from 'bs58';
import invariant from 'assert';
import {expect} from 'chai';
import {
@ -9,6 +8,7 @@ import {
SystemProgram,
LAMPORTS_PER_SOL,
} from '../src';
import invariant from '../src/util/assert';
import {MOCK_PORT, url} from './url';
import {helpers, mockRpcResponse, mockServer} from './mocks/rpc-http';
import {stubRpcWebSocket, restoreRpcWebSocket} from './mocks/rpc-websockets';

View File

@ -1,5 +1,4 @@
import bs58 from 'bs58';
import invariant from 'assert';
import {Buffer} from 'buffer';
import nacl from 'tweetnacl';
import {expect} from 'chai';
@ -10,6 +9,7 @@ import {Transaction} from '../src/transaction';
import {StakeProgram} from '../src/stake-program';
import {SystemProgram} from '../src/system-program';
import {Message} from '../src/message';
import invariant from '../src/util/assert';
import {toBuffer} from '../src/util/to-buffer';
describe('Transaction', () => {

View File

@ -65,7 +65,7 @@ if (process.env.TEST_LIVE) {
});
it('connect by websocket endpoint from options', async () => {
let connection = new Connection('', {
let connection = new Connection('http://localhost', {
wsEndpoint: wsUrl,
});