diff --git a/src/workerd/api/global-scope.h b/src/workerd/api/global-scope.h index edc091146cc..ccd66c8639b 100644 --- a/src/workerd/api/global-scope.h +++ b/src/workerd/api/global-scope.h @@ -133,12 +133,14 @@ class WorkerGlobalScope: public EventTarget, public jsg::ContextGlobal { public: jsg::Unimplemented importScripts(kj::String s) { return {}; }; - JSG_RESOURCE_TYPE(WorkerGlobalScope) { + JSG_RESOURCE_TYPE(WorkerGlobalScope, CompatibilityFlags::Reader flags) { JSG_INHERIT(EventTarget); JSG_NESTED_TYPE(EventTarget); - JSG_METHOD(importScripts); + if (!flags.getNoImportScripts()) { + JSG_METHOD(importScripts); + } JSG_TS_DEFINE(type WorkerGlobalScopeEventMap = { fetch: FetchEvent; diff --git a/src/workerd/io/compatibility-date.capnp b/src/workerd/io/compatibility-date.capnp index be52f93fe88..b535bd71ddf 100644 --- a/src/workerd/io/compatibility-date.capnp +++ b/src/workerd/io/compatibility-date.capnp @@ -361,4 +361,10 @@ struct CompatibilityFlags @0x8f8c1b68151b6cef { # The client stub is currently guarded by the experimental flag, however, we don't want to let # experimental clients call JS methods over RPC if the Worker receiving the request hasn't # explicitly exposed its methods to RPC. + + noImportScripts @40 :Bool + $compatEnableFlag("no_global_importscripts") + $compatDisableFlag("global_importscripts") + $compatEnableDate("2024-03-04"); + # Removes the non-implemented importScripts() function from the global scope. }