// Copyright (c) 2017-2022 Cloudflare, Inc. // Licensed under the Apache 2.0 license found in the LICENSE file or at: // https://opensource.org/licenses/Apache-2.0 #pragma once #include #include #include #include #include namespace workerd::api { class RTTIModule final: public jsg::Object { public: RTTIModule() = default; RTTIModule(jsg::Lock&, const jsg::Url&) {} kj::Array exportTypes(kj::String compatDate, kj::Array compatFlags); kj::Array exportExperimentalTypes(); JSG_RESOURCE_TYPE(RTTIModule) { JSG_METHOD(exportTypes); JSG_METHOD(exportExperimentalTypes); } }; template void registerRTTIModule(Registry& registry) { registry.template addBuiltinModule( "workerd:rtti", workerd::jsg::ModuleRegistry::Type::BUILTIN); } template kj::Own getExternalRttiModuleBundle(auto featureFlags) { jsg::modules::ModuleBundle::BuiltinBuilder builder( jsg::modules::ModuleBundle::BuiltinBuilder::Type::BUILTIN); static const auto kSpecifier = "workerd:rtti"_url; builder.addObject(kSpecifier); return builder.finish(); } #define EW_RTTI_ISOLATE_TYPES api::RTTIModule } // namespace workerd::api