From 04f97bdd8beb251f065127843d01d2929ab94350 Mon Sep 17 00:00:00 2001 From: Dan Lapid Date: Mon, 24 Mar 2025 15:01:15 +0000 Subject: [PATCH] Change WorkerEntrypoint ctx constructor argument to jsg::JsObject --- src/workerd/api/tests/js-rpc-test.js | 16 ++++++++++++++++ src/workerd/api/worker-rpc.c++ | 4 +--- src/workerd/api/worker-rpc.h | 5 ++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/workerd/api/tests/js-rpc-test.js b/src/workerd/api/tests/js-rpc-test.js index ffbd5dc5f43..edd65f66c20 100644 --- a/src/workerd/api/tests/js-rpc-test.js +++ b/src/workerd/api/tests/js-rpc-test.js @@ -1731,3 +1731,19 @@ export let proxiedRpcTarget = { } }, }; + +// Test that we can construct a WorkerEntrypoint +export class MyEntrypoint extends WorkerEntrypoint { + rpcFunc() { + return 'hello from entrypoint'; + } +} +function constructEntrypoint(cls, env) { + return new cls({ waitUntil: () => {} }, env); +} +export let testConstructEntrypoint = { + async test(controller, env, ctx) { + const constructed = constructEntrypoint(MyEntrypoint, env); + assert.strictEqual(await constructed.rpcFunc(), 'hello from entrypoint'); + }, +}; diff --git a/src/workerd/api/worker-rpc.c++ b/src/workerd/api/worker-rpc.c++ index ac03dc8f55a..3477c6307e7 100644 --- a/src/workerd/api/worker-rpc.c++ +++ b/src/workerd/api/worker-rpc.c++ @@ -1967,9 +1967,7 @@ kj::Promise JsRpcSessionCustomEventImpl::s // ======================================================================================= jsg::Ref WorkerEntrypoint::constructor( - const v8::FunctionCallbackInfo& args, - jsg::Ref ctx, - jsg::JsObject env) { + const v8::FunctionCallbackInfo& args, jsg::JsObject ctx, jsg::JsObject env) { // HACK: We take `FunctionCallbackInfo` mostly so that we can set properties directly on // `This()`. There ought to be a better way to get access to `this` in a constructor. // We *also* declare `ctx` and `env` params more explicitly just for the sake of type checking. diff --git a/src/workerd/api/worker-rpc.h b/src/workerd/api/worker-rpc.h index b73c9b96f39..cde56a70d60 100644 --- a/src/workerd/api/worker-rpc.h +++ b/src/workerd/api/worker-rpc.h @@ -492,9 +492,8 @@ class JsRpcSessionCustomEventImpl final: public WorkerInterface::CustomEvent { // define a constructor. class WorkerEntrypoint: public jsg::Object { public: - static jsg::Ref constructor(const v8::FunctionCallbackInfo& args, - jsg::Ref ctx, - jsg::JsObject env); + static jsg::Ref constructor( + const v8::FunctionCallbackInfo& args, jsg::JsObject ctx, jsg::JsObject env); JSG_RESOURCE_TYPE(WorkerEntrypoint) {} };