/src/serenity/Userland/Libraries/LibWeb/Streams/Transformer.cpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2023, Kenneth Myhra <kennethmyhra@serenityos.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #include <LibJS/Runtime/VM.h> |
8 | | #include <LibWeb/Streams/AbstractOperations.h> |
9 | | #include <LibWeb/Streams/Transformer.h> |
10 | | #include <LibWeb/WebIDL/CallbackType.h> |
11 | | |
12 | | namespace Web::Streams { |
13 | | |
14 | | JS::ThrowCompletionOr<Transformer> Transformer::from_value(JS::VM& vm, JS::Value value) |
15 | 0 | { |
16 | 0 | if (!value.is_object()) |
17 | 0 | return Transformer {}; |
18 | | |
19 | 0 | auto& object = value.as_object(); |
20 | |
|
21 | 0 | Transformer transformer { |
22 | 0 | .start = TRY(property_to_callback(vm, value, "start", WebIDL::OperationReturnsPromise::No)), |
23 | 0 | .transform = TRY(property_to_callback(vm, value, "transform", WebIDL::OperationReturnsPromise::Yes)), |
24 | 0 | .flush = TRY(property_to_callback(vm, value, "flush", WebIDL::OperationReturnsPromise::Yes)), |
25 | 0 | .cancel = TRY(property_to_callback(vm, value, "cancel", WebIDL::OperationReturnsPromise::Yes)), |
26 | 0 | .readable_type = {}, |
27 | 0 | .writable_type = {}, |
28 | 0 | }; |
29 | |
|
30 | 0 | if (TRY(object.has_property("readableType"))) |
31 | 0 | transformer.readable_type = TRY(object.get("readableType")); |
32 | |
|
33 | 0 | if (TRY(object.has_property("writableType"))) |
34 | 0 | transformer.writable_type = TRY(object.get("writableType")); |
35 | |
|
36 | 0 | return transformer; |
37 | 0 | } |
38 | | |
39 | | } |