mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:52:45 +00:00 
			
		
		
		
	 12ff48047f
			
		
	
	
		12ff48047f
		
	
	
	
	
		
			
			This adds the Transformer API which the TransformStream() constructor accepts as its first argument.
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2023, Kenneth Myhra <kennethmyhra@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <LibJS/Runtime/VM.h>
 | |
| #include <LibWeb/Streams/AbstractOperations.h>
 | |
| #include <LibWeb/Streams/Transformer.h>
 | |
| #include <LibWeb/WebIDL/CallbackType.h>
 | |
| 
 | |
| namespace Web::Streams {
 | |
| 
 | |
| JS::ThrowCompletionOr<Transformer> Transformer::from_value(JS::VM& vm, JS::Value value)
 | |
| {
 | |
|     if (!value.is_object())
 | |
|         return Transformer {};
 | |
| 
 | |
|     auto& object = value.as_object();
 | |
| 
 | |
|     Transformer transformer {
 | |
|         .start = TRY(property_to_callback(vm, value, "start", WebIDL::OperationReturnsPromise::No)),
 | |
|         .transform = TRY(property_to_callback(vm, value, "transform", WebIDL::OperationReturnsPromise::Yes)),
 | |
|         .flush = TRY(property_to_callback(vm, value, "flush", WebIDL::OperationReturnsPromise::Yes)),
 | |
|         .readable_type = {},
 | |
|         .writable_type = {},
 | |
|     };
 | |
| 
 | |
|     if (TRY(object.has_property("readableType")))
 | |
|         transformer.readable_type = TRY(object.get("readableType"));
 | |
| 
 | |
|     if (TRY(object.has_property("writableType")))
 | |
|         transformer.writable_type = TRY(object.get("writableType"));
 | |
| 
 | |
|     return transformer;
 | |
| }
 | |
| 
 | |
| }
 |