#ifndef SRC_NODE_WASM_WEB_API_H_ #define SRC_NODE_WASM_WEB_API_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include "base_object-inl.h" #include "v8.h" namespace node { namespace wasm_web_api { // Wrapper for interacting with a v8::WasmStreaming instance from JavaScript. class WasmStreamingObject final : public BaseObject { public: static v8::Local Initialize(Environment* env); static void RegisterExternalReferences(ExternalReferenceRegistry* registry); void MemoryInfo(MemoryTracker* tracker) const override; SET_MEMORY_INFO_NAME(WasmStreamingObject) SET_SELF_SIZE(WasmStreamingObject) static v8::MaybeLocal Create( Environment* env, std::shared_ptr streaming); private: WasmStreamingObject(Environment* env, v8::Local object) : BaseObject(env, object) { MakeWeak(); } ~WasmStreamingObject() override {} private: static void New(const v8::FunctionCallbackInfo& args); static void SetURL(const v8::FunctionCallbackInfo& args); static void Push(const v8::FunctionCallbackInfo& args); static void Finish(const v8::FunctionCallbackInfo& args); static void Abort(const v8::FunctionCallbackInfo& args); std::shared_ptr streaming_; size_t wasm_size_; }; // This is a v8::WasmStreamingCallback implementation that must be passed to // v8::Isolate::SetWasmStreamingCallback when setting up the isolate in order to // enable the WebAssembly.(compile|instantiate)Streaming APIs. void StartStreamingCompilation(const v8::FunctionCallbackInfo& args); } // namespace wasm_web_api } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_WASM_WEB_API_H_