feat: remove Buffer support and bundle polyfill (#2526)

- Removes need for bundlers to polyfill the `Buffer` class. `UInt8Array` are used instead which are native to the browser and node.
- Reduces bundle size 7.1kb gzipped and eliminates 4 runtime dependencies: `base-x`, `base64-js`, `buffer`, and `ieee754`.

BREAKING CHANGE: All methods that previously took a `Buffer` now accept a `UInt8Array`.

---------

Co-authored-by: Jackson Mills <jmills@ripple.com>
This commit is contained in:
Caleb Kniffen
2023-11-30 09:32:28 -06:00
parent eefb52a9cb
commit 38b385969b
77 changed files with 853 additions and 666 deletions

View File

@@ -1,4 +1,3 @@
/* eslint-disable max-len -- Some large lines necessary */
/* eslint-disable max-statements -- test has a lot of statements */
import net from 'net'
@@ -25,22 +24,6 @@ import {
} from './setupClient'
import { assertRejects, ignoreWebSocketDisconnect } from './testUtils'
type GlobalThis = typeof globalThis
type Global = GlobalThis & {
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Necessary for Jest in browser
TextEncoder: any
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Necessary for Jest in browser
TextDecoder: any
}
declare const global: Global
if (typeof TextDecoder === 'undefined') {
// eslint-disable-next-line node/global-require, @typescript-eslint/no-require-imports, node/prefer-global/text-encoder, global-require, @typescript-eslint/no-var-requires -- Needed for Jest
global.TextEncoder = require('util').TextEncoder
// eslint-disable-next-line node/global-require, @typescript-eslint/no-require-imports, node/prefer-global/text-decoder, global-require, @typescript-eslint/no-var-requires -- Needed for Jest
global.TextDecoder = require('util').TextDecoder
}
// how long before each test case times out
const TIMEOUT = 20000