mirror of
				https://github.com/Xahau/xahau.js.git
				synced 2025-11-04 13:05:49 +00:00 
			
		
		
		
	Reduces filesize by 3kb minified and gzipped or 2.8% and reduces bundler
config steps.
- Move `WSWrapper` to `@xrpl/isomorphic` to remove the need to add
mapping of `ws` to `WSWrapper` file in bundler configs
- Switch to `eventemitter3` which is smaller than `events` by almost
1kb and will not require a mapping to node's `events` in `vite`
bundling. `webpack` always automatically maps it.
    - max listeners is not a thing for `eventemitter3` so we do not
need to set it to `Infinity`. `ws` uses the native event emitter which
does still need that to be set.
- Remove `eventemitter2` which was only used in tests and was replaced
with `eventemitter3`
BREAKING CHANGE: Config for frontend bundlers has changed for `ws`.
		
	
		
			
				
	
	
	
		
			2.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.3 KiB
		
	
	
	
	
	
	
	
@xrplf/isomorphic
A collection of isomorphic implementations of crypto and utility functions.
Browser implementations of cryptographic functions use @noble/hashes and crypto for node .
Hashes
All hash functions operate similarly to @noble/hashes and have the following properties:
- They can be called directly by providing a Uint8Array or string which will be converted into a UInt8Array via UTF-8 encoding (not hex).
 - They all return a UInt8Array.
 
function hash(message: Uint8Array | string): Uint8Array;
hash(new Uint8Array([1, 3]));
hash('string') == hash(new TextEncoder().encode('string'));
All hash functions can be constructed via hash.create() method:
- The result is 
Hashsubclass instance, which hasupdate()anddigest()methods. digest()finalizes the hash and makes it no longer usable
hash
  .create()
  .update(new Uint8Array([1, 3]))
  .digest();
@xrplf/isomorphic/ripemd160
import { ripemd160 } from '@xrplf/isomorphic/ripemd160';
const hashA = ripemd160('abc');
const hashB = ripemd160
  .create()
  .update(Uint8Array.from([1, 2, 3]))
  .digest();
@xrplf/isomorphic/sha256
import { sha256 } from '@xrplf/isomorphic/sha256';
const hashA = sha256('abc');
const hashB = sha256
  .create()
  .update(Uint8Array.from([1, 2, 3]))
  .digest();
@xrplf/isomorphic/sha512
import { sha512 } from '@xrplf/isomorphic/sha512';
const hashA = sha512('abc');
const hashB = sha512
  .create()
  .update(Uint8Array.from([1, 2, 3]))
  .digest();
Utilities
@xrplf/isomorphic/utils
randomBytes
Create an UInt8Array of the supplied size
import { randomBytes } from @xrplf/isomorphic/utils
console.log(randomBytes(12)) // Uint8Array(12) [95, 236, 188,  55, 208, 128, 161, 249, 171, 57, 141, 7]
bytesToHex
Convert an UInt8Array to hex.
import { bytesToHex } from @xrplf/isomorphic/utils
console.log(bytesToHex([222, 173, 190, 239])) // "DEADBEEF"
hexToBytes
Convert hex to an UInt8Array.
import { hexToBytes } from @xrplf/isomorphic/utils
console.log(hexToBytes('DEADBEEF')) // [222, 173, 190, 239]
@xrplf/isomorphic/ws
import WebSocket from '@xrplf/isomorphic/ws'
const socket = new WebSocket('wss://localhost:8080')