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,5 +1,4 @@
const { coreTypes } = require('../src/types')
const { Hash128, Hash160, Hash256, AccountID, Currency } = coreTypes
import { Hash128, Hash160, Hash256, AccountID, Currency } from '../src/types'
describe('Hash128', function () {
it('has a static width member', function () {
@@ -110,8 +109,8 @@ describe('Currency', function () {
).toBe(null)
})
it('can be constructed from a Buffer', function () {
const xrp = new Currency(Buffer.alloc(20))
it('can be constructed from a Uint8Array', function () {
const xrp = new Currency(new Uint8Array(20))
expect(xrp.iso()).toBe('XRP')
})
it('Can handle non-standard currency codes', () => {
@@ -125,7 +124,9 @@ describe('Currency', function () {
})
it('throws on invalid reprs', function () {
expect(() => Currency.from(Buffer.alloc(19))).toThrow()
// @ts-expect-error -- invalid type check
expect(() => Currency.from(new Uint8Array(19))).toThrow()
// @ts-expect-error -- invalid type check
expect(() => Currency.from(1)).toThrow()
expect(() =>
Currency.from('00000000000000000000000000000000000000m'),