fix: eliminate circular dependencies in web3.js (#24729)
* chore: enable circular dependency warnings on build * fix: eliminate circular dependencies in web3.js
This commit is contained in:
parent
69725df6b0
commit
442e6c325f
|
@ -37,8 +37,12 @@ function generateConfig(configType, format) {
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
onwarn: function (warning, rollupWarn) {
|
onwarn: function (warning, rollupWarn) {
|
||||||
if (warning.code !== 'CIRCULAR_DEPENDENCY') {
|
|
||||||
rollupWarn(warning);
|
rollupWarn(warning);
|
||||||
|
if (warning.code === 'CIRCULAR_DEPENDENCY') {
|
||||||
|
throw new Error(
|
||||||
|
'Please eliminate the circular dependencies listed ' +
|
||||||
|
'above and retry the build',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
treeshake: {
|
treeshake: {
|
||||||
|
|
|
@ -2,7 +2,7 @@ import {Buffer} from 'buffer';
|
||||||
import * as BufferLayout from '@solana/buffer-layout';
|
import * as BufferLayout from '@solana/buffer-layout';
|
||||||
|
|
||||||
import {PublicKey} from './publickey';
|
import {PublicKey} from './publickey';
|
||||||
import {Transaction, PACKET_DATA_SIZE} from './transaction';
|
import {Transaction} from './transaction';
|
||||||
import {SYSVAR_RENT_PUBKEY} from './sysvar';
|
import {SYSVAR_RENT_PUBKEY} from './sysvar';
|
||||||
import {sendAndConfirmTransaction} from './util/send-and-confirm-transaction';
|
import {sendAndConfirmTransaction} from './util/send-and-confirm-transaction';
|
||||||
import {sleep} from './util/sleep';
|
import {sleep} from './util/sleep';
|
||||||
|
@ -10,6 +10,7 @@ import type {Connection} from './connection';
|
||||||
import type {Signer} from './keypair';
|
import type {Signer} from './keypair';
|
||||||
import {SystemProgram} from './system-program';
|
import {SystemProgram} from './system-program';
|
||||||
import {IInstructionInputData} from './instruction';
|
import {IInstructionInputData} from './instruction';
|
||||||
|
import {PACKET_DATA_SIZE} from './transaction-constants';
|
||||||
|
|
||||||
// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the
|
// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the
|
||||||
// rest of the Transaction fields
|
// rest of the Transaction fields
|
||||||
|
|
|
@ -5,7 +5,7 @@ import * as BufferLayout from '@solana/buffer-layout';
|
||||||
import {PublicKey} from './publickey';
|
import {PublicKey} from './publickey';
|
||||||
import type {Blockhash} from './blockhash';
|
import type {Blockhash} from './blockhash';
|
||||||
import * as Layout from './layout';
|
import * as Layout from './layout';
|
||||||
import {PACKET_DATA_SIZE} from './transaction';
|
import {PACKET_DATA_SIZE} from './transaction-constants';
|
||||||
import * as shortvec from './util/shortvec-encoding';
|
import * as shortvec from './util/shortvec-encoding';
|
||||||
import {toBuffer} from './util/to-buffer';
|
import {toBuffer} from './util/to-buffer';
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
/**
|
||||||
|
* Maximum over-the-wire size of a Transaction
|
||||||
|
*
|
||||||
|
* 1280 is IPv6 minimum MTU
|
||||||
|
* 40 bytes is the size of the IPv6 header
|
||||||
|
* 8 bytes is the size of the fragment header
|
||||||
|
*/
|
||||||
|
export const PACKET_DATA_SIZE = 1280 - 40 - 8;
|
||||||
|
|
||||||
|
export const SIGNATURE_LENGTH_IN_BYTES = 64;
|
|
@ -2,6 +2,10 @@ import nacl from 'tweetnacl';
|
||||||
import bs58 from 'bs58';
|
import bs58 from 'bs58';
|
||||||
import {Buffer} from 'buffer';
|
import {Buffer} from 'buffer';
|
||||||
|
|
||||||
|
import {
|
||||||
|
PACKET_DATA_SIZE,
|
||||||
|
SIGNATURE_LENGTH_IN_BYTES,
|
||||||
|
} from './transaction-constants';
|
||||||
import {Connection} from './connection';
|
import {Connection} from './connection';
|
||||||
import {Message} from './message';
|
import {Message} from './message';
|
||||||
import {PublicKey} from './publickey';
|
import {PublicKey} from './publickey';
|
||||||
|
@ -19,21 +23,8 @@ export type TransactionSignature = string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default (empty) signature
|
* Default (empty) signature
|
||||||
*
|
|
||||||
* Signatures are 64 bytes in length
|
|
||||||
*/
|
*/
|
||||||
const DEFAULT_SIGNATURE = Buffer.alloc(64).fill(0);
|
const DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);
|
||||||
|
|
||||||
/**
|
|
||||||
* Maximum over-the-wire size of a Transaction
|
|
||||||
*
|
|
||||||
* 1280 is IPv6 minimum MTU
|
|
||||||
* 40 bytes is the size of the IPv6 header
|
|
||||||
* 8 bytes is the size of the fragment header
|
|
||||||
*/
|
|
||||||
export const PACKET_DATA_SIZE = 1280 - 40 - 8;
|
|
||||||
|
|
||||||
const SIGNATURE_LENGTH = 64;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account metadata used to define instructions
|
* Account metadata used to define instructions
|
||||||
|
@ -747,8 +738,8 @@ export class Transaction {
|
||||||
const signatureCount = shortvec.decodeLength(byteArray);
|
const signatureCount = shortvec.decodeLength(byteArray);
|
||||||
let signatures = [];
|
let signatures = [];
|
||||||
for (let i = 0; i < signatureCount; i++) {
|
for (let i = 0; i < signatureCount; i++) {
|
||||||
const signature = byteArray.slice(0, SIGNATURE_LENGTH);
|
const signature = byteArray.slice(0, SIGNATURE_LENGTH_IN_BYTES);
|
||||||
byteArray = byteArray.slice(SIGNATURE_LENGTH);
|
byteArray = byteArray.slice(SIGNATURE_LENGTH_IN_BYTES);
|
||||||
signatures.push(bs58.encode(Buffer.from(signature)));
|
signatures.push(bs58.encode(Buffer.from(signature)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue