#pragma once #include #include #include namespace workerd::api { class Base64Module final: public jsg::Object { public: Base64Module() = default; Base64Module(jsg::Lock&, const jsg::Url&) {} jsg::JsBufferSource decodeArray(jsg::Lock& js, jsg::JsBufferSource source); jsg::JsBufferSource encodeArray(jsg::Lock& js, jsg::JsBufferSource source); jsg::JsString encodeArrayToString(jsg::Lock&, jsg::JsBufferSource source); JSG_RESOURCE_TYPE(Base64Module) { JSG_METHOD(encodeArray); JSG_METHOD(decodeArray); JSG_METHOD(encodeArrayToString); JSG_TS_OVERRIDE({ decodeArray(source: ArrayBuffer | ArrayBufferView): ArrayBuffer; encodeArray(source: ArrayBuffer | ArrayBufferView): ArrayBuffer; encodeArrayToString(source: ArrayBuffer | ArrayBufferView): string; }); } }; template void registerBase64Module(Registry& registry, auto featureFlags) { registry.template addBuiltinModule( "cloudflare-internal:base64", workerd::jsg::ModuleRegistry::Type::INTERNAL); } template kj::Own getInternalBase64ModuleBundle(auto featureFlags) { jsg::modules::ModuleBundle::BuiltinBuilder builder( jsg::modules::ModuleBundle::BuiltinBuilder::Type::BUILTIN_ONLY); static const auto kSpecifier = "cloudflare-internal:base64"_url; builder.addObject(kSpecifier); return builder.finish(); } #define EW_BASE64_ISOLATE_TYPES api::Base64Module } // namespace workerd::api