You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
| import ByteBuffer from 'bytebuffer';
 | |
| 
 | |
| /**
 | |
|  * Converts any object to a valid ts protobuf object.
 | |
|  *
 | |
|  * This is needed because there's a very jarring difference between `protobufjs` and `protobufts`.
 | |
|  * `protobufjs` returns all `bytes` as `ByteBuffer` where as `protobufts` returns all `bytes` as `Uint8Array`.
 | |
|  */
 | |
| export function convertToTS(object: any): any {
 | |
|   // No idea why js `ByteBuffer` and ts `ByteBuffer` differ ...
 | |
|   if (object instanceof Uint8Array) {
 | |
|     return object;
 | |
|   } else if (
 | |
|     object &&
 | |
|     object.constructor &&
 | |
|     object.constructor.name === 'ByteBuffer'
 | |
|   ) {
 | |
|     return new Uint8Array(object.toArrayBuffer());
 | |
|   } else if (
 | |
|     object instanceof ByteBuffer ||
 | |
|     object instanceof Buffer ||
 | |
|     object instanceof ArrayBuffer ||
 | |
|     object instanceof SharedArrayBuffer
 | |
|   ) {
 | |
|     const arrayBuffer = ByteBuffer.wrap(object).toArrayBuffer();
 | |
|     return new Uint8Array(arrayBuffer);
 | |
|   } else if (Array.isArray(object)) {
 | |
|     return object.map(convertToTS);
 | |
|   } else if (object && typeof object === 'object') {
 | |
|     const keys = Object.keys(object);
 | |
|     const values: { [key: string]: any } = {};
 | |
|     for (const key of keys) {
 | |
|       values[key] = convertToTS(object[key]);
 | |
|     }
 | |
|     return values;
 | |
|   }
 | |
| 
 | |
|   return object;
 | |
| }
 |