/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include namespace facebook::react { class Error { public: // TODO (T114055466): Retain stack trace (at least caller location) Error(std::string message) : message_(std::move(message)) {} Error(const char* message) : Error(std::string(message)) {} const std::string& message() const { return message_; } private: std::string message_; }; template <> struct Bridging { static jsi::JSError fromJs(jsi::Runtime& rt, const jsi::Value& value) { return jsi::JSError(rt, jsi::Value(rt, value)); } static jsi::JSError fromJs(jsi::Runtime& rt, jsi::Value&& value) { return jsi::JSError(rt, std::move(value)); } static jsi::Value toJs(jsi::Runtime& rt, std::string message) { return jsi::Value(rt, jsi::JSError(rt, std::move(message)).value()); } }; template <> struct Bridging { static jsi::Value toJs(jsi::Runtime& rt, const Error& error) { return jsi::Value(rt, jsi::JSError(rt, error.message()).value()); } }; } // namespace facebook::react