@@ -148,34 +148,34 @@ kj::Promise<DeferredProxy<void>> ServiceWorkerGlobalScope::request(
148
148
// TODO(cleanup): Should KJ HTTP interfaces explicitly communicate the difference between a
149
149
// missing body and an empty one?
150
150
kj::Maybe<Body::ExtractedBody> body;
151
- if (headers.get (kj::HttpHeaderId::CONTENT_LENGTH) != nullptr ||
152
- headers.get (kj::HttpHeaderId::TRANSFER_ENCODING) != nullptr ||
151
+ if (headers.get (kj::HttpHeaderId::CONTENT_LENGTH) != kj::none ||
152
+ headers.get (kj::HttpHeaderId::TRANSFER_ENCODING) != kj::none ||
153
153
requestBody.tryGetLength ().orDefault (1 ) > 0 ) {
154
154
body = Body::ExtractedBody (jsStream.addRef ());
155
155
}
156
156
157
157
// If the request doesn't specify "Content-Length" or "Transfer-Encoding", set "Content-Length"
158
158
// to the body length if it's known. This ensures handlers for worker-to-worker requests can
159
159
// access known body lengths if they're set, without buffering bodies.
160
- if (body != nullptr &&
161
- headers.get (kj::HttpHeaderId::CONTENT_LENGTH) == nullptr &&
162
- headers.get (kj::HttpHeaderId::TRANSFER_ENCODING) == nullptr ) {
160
+ if (body != kj::none &&
161
+ headers.get (kj::HttpHeaderId::CONTENT_LENGTH) == kj::none &&
162
+ headers.get (kj::HttpHeaderId::TRANSFER_ENCODING) == kj::none ) {
163
163
// We can't use headers.set() here as headers is marked const. Instead, we call set() on the
164
164
// JavaScript headers object, ignoring the REQUEST guard that usually makes them immutable.
165
- KJ_IF_MAYBE (l, requestBody.tryGetLength ()) {
165
+ KJ_IF_SOME (l, requestBody.tryGetLength ()) {
166
166
jsHeaders->setUnguarded (jsg::ByteString (kj::str (" Content-Length" )),
167
- jsg::ByteString (kj::str (* l)));
167
+ jsg::ByteString (kj::str (l)));
168
168
} else {
169
169
jsHeaders->setUnguarded (jsg::ByteString (kj::str (" Transfer-Encoding" )),
170
- jsg::ByteString (kj::str (" chunked" )));
170
+ jsg::ByteString (kj::str (" chunked" )));
171
171
}
172
172
}
173
173
174
174
auto jsRequest = jsg::alloc<Request>(
175
175
method, url, Request::Redirect::MANUAL, kj::mv (jsHeaders),
176
176
jsg::alloc<Fetcher>(IoContext::NEXT_CLIENT_CHANNEL,
177
177
Fetcher::RequiresHostAndProtocol::YES),
178
- nullptr /* * AbortSignal **/ , kj::mv (cf), kj::mv (body));
178
+ kj::none /* * AbortSignal **/ , kj::mv (cf), kj::mv (body));
179
179
// I set the redirect mode to manual here, so that by default scripts that just pass requests
180
180
// through to a fetch() call will behave the same as scripts which don't call .respondWith(): if
181
181
// the request results in a redirect, the visitor will see that redirect.
@@ -185,9 +185,9 @@ kj::Promise<DeferredProxy<void>> ServiceWorkerGlobalScope::request(
185
185
uint tasksBefore = ioContext.taskCount ();
186
186
187
187
bool useDefaultHandling;
188
- KJ_IF_MAYBE (h, exportedHandler) {
189
- KJ_IF_MAYBE (f, h-> fetch ) {
190
- auto promise = (*f) (lock, event->getRequest (), h-> env .addRef (js), h-> getCtx ());
188
+ KJ_IF_SOME (h, exportedHandler) {
189
+ KJ_IF_SOME (f, h. fetch ) {
190
+ auto promise = f (lock, event->getRequest (), h. env .addRef (js), h. getCtx ());
191
191
event->respondWith (lock, kj::mv (promise));
192
192
useDefaultHandling = false ;
193
193
} else {
@@ -231,7 +231,7 @@ kj::Promise<DeferredProxy<void>> ServiceWorkerGlobalScope::request(
231
231
// deferred proxy task.
232
232
return DeferredProxy<void > { promise.attach (kj::mv (adapter), kj::mv (client)) };
233
233
}
234
- } else KJ_IF_MAYBE (promise, event->getResponsePromise (lock)) {
234
+ } else KJ_IF_SOME (promise, event->getResponsePromise (lock)) {
235
235
auto body2 = kj::addRef (*ownRequestBody);
236
236
237
237
// HACK: If the client disconnects, the `response` reference is no longer valid. But our
@@ -244,7 +244,7 @@ kj::Promise<DeferredProxy<void>> ServiceWorkerGlobalScope::request(
244
244
};
245
245
auto canceled = kj::refcounted<RefcountedBool>(false );
246
246
247
- return ioContext.awaitJs (lock ,promise-> then (kj::implicitCast<jsg::Lock&>(lock),
247
+ return ioContext.awaitJs (lock ,promise. then (kj::implicitCast<jsg::Lock&>(lock),
248
248
ioContext.addFunctor (
249
249
[&response, allowWebSocket = headers.isWebSocket (),
250
250
canceled = kj::addRef (*canceled), &headers]
@@ -291,14 +291,14 @@ void ServiceWorkerGlobalScope::sendTraces(kj::ArrayPtr<kj::Own<Trace>> traces,
291
291
Worker::Lock& lock, kj::Maybe<ExportedHandler&> exportedHandler) {
292
292
auto isolate = lock.getIsolate ();
293
293
294
- KJ_IF_MAYBE (h, exportedHandler) {
295
- KJ_IF_MAYBE (f, h-> tail ) {
294
+ KJ_IF_SOME (h, exportedHandler) {
295
+ KJ_IF_SOME (f, h. tail ) {
296
296
auto tailEvent = jsg::alloc<TailEvent>(lock, " tail" _kj, traces);
297
- auto promise = (*f) (lock, tailEvent->getEvents (), h-> env .addRef (isolate), h-> getCtx ());
297
+ auto promise = f (lock, tailEvent->getEvents (), h. env .addRef (isolate), h. getCtx ());
298
298
tailEvent->waitUntil (kj::mv (promise));
299
- } else KJ_IF_MAYBE (f, h-> trace ) {
299
+ } else KJ_IF_SOME (f, h. trace ) {
300
300
auto traceEvent = jsg::alloc<TailEvent>(lock, " trace" _kj, traces);
301
- auto promise = (*f) (lock, traceEvent->getEvents (), h-> env .addRef (isolate), h-> getCtx ());
301
+ auto promise = f (lock, traceEvent->getEvents (), h. env .addRef (isolate), h. getCtx ());
302
302
traceEvent->waitUntil (kj::mv (promise));
303
303
} else {
304
304
lock.logWarningOnce (
@@ -330,10 +330,10 @@ void ServiceWorkerGlobalScope::startScheduled(
330
330
331
331
auto isolate = lock.getIsolate ();
332
332
333
- KJ_IF_MAYBE (h, exportedHandler) {
334
- KJ_IF_MAYBE (f, h-> scheduled ) {
335
- auto promise = (*f) (lock, jsg::alloc<ScheduledController>(event.addRef ()),
336
- h-> env .addRef (isolate), h-> getCtx ());
333
+ KJ_IF_SOME (h, exportedHandler) {
334
+ KJ_IF_SOME (f, h. scheduled ) {
335
+ auto promise = f (lock, jsg::alloc<ScheduledController>(event.addRef ()),
336
+ h. env .addRef (isolate), h. getCtx ());
337
337
event->waitUntil (kj::mv (promise));
338
338
} else {
339
339
lock.logWarningOnce (
@@ -364,9 +364,9 @@ kj::Promise<WorkerInterface::AlarmResult> ServiceWorkerGlobalScope::runAlarm(
364
364
auto & persistent = KJ_ASSERT_NONNULL (actor.getPersistent ());
365
365
auto maybeDeferredDelete = persistent.armAlarmHandler (scheduledTime);
366
366
367
- KJ_IF_MAYBE (deferredDelete, maybeDeferredDelete) {
367
+ KJ_IF_SOME (deferredDelete, maybeDeferredDelete) {
368
368
auto & handler = KJ_REQUIRE_NONNULL (exportedHandler);
369
- if (handler.alarm == nullptr ) {
369
+ if (handler.alarm == kj::none ) {
370
370
371
371
lock.logWarningOnce (
372
372
" Attempted to run a scheduled alarm without a handler, "
@@ -393,7 +393,7 @@ kj::Promise<WorkerInterface::AlarmResult> ServiceWorkerGlobalScope::runAlarm(
393
393
});
394
394
395
395
return alarmResultPromise
396
- .catch_ ([&context, deferredDelete = kj::mv (* deferredDelete)](kj::Exception&& e) mutable {
396
+ .catch_ ([&context, deferredDelete = kj::mv (deferredDelete)](kj::Exception&& e) mutable {
397
397
auto & actor = KJ_ASSERT_NONNULL (context.getActor ());
398
398
auto & persistent = KJ_ASSERT_NONNULL (actor.getPersistent ());
399
399
persistent.cancelDeferredAlarmDeletion ();
@@ -404,8 +404,8 @@ kj::Promise<WorkerInterface::AlarmResult> ServiceWorkerGlobalScope::runAlarm(
404
404
context.logUncaughtExceptionAsync (UncaughtExceptionSource::ALARM_HANDLER, kj::mv (e));
405
405
406
406
EventOutcome outcome = EventOutcome::EXCEPTION;
407
- KJ_IF_MAYBE (status, context.getLimitEnforcer ().getLimitsExceeded ()) {
408
- outcome = * status;
407
+ KJ_IF_SOME (status, context.getLimitEnforcer ().getLimitsExceeded ()) {
408
+ outcome = status;
409
409
}
410
410
return WorkerInterface::AlarmResult {
411
411
.retry = true ,
@@ -460,9 +460,9 @@ void ServiceWorkerGlobalScope::sendHibernatableWebSocketMessage(
460
460
// Even if no handler is exported, we need to claim the websocket so it's removed from the map.
461
461
auto websocket = event->claimWebSocket (lock, websocketId);
462
462
463
- KJ_IF_MAYBE (h, exportedHandler) {
464
- KJ_IF_MAYBE (handler, h-> webSocketMessage ) {
465
- auto promise = (* handler) (lock, kj::mv (websocket), kj::mv (message));
463
+ KJ_IF_SOME (h, exportedHandler) {
464
+ KJ_IF_SOME (handler, h. webSocketMessage ) {
465
+ auto promise = handler (lock, kj::mv (websocket), kj::mv (message));
466
466
event->waitUntil (kj::mv (promise));
467
467
}
468
468
// We want to deliver a message, but if no webSocketMessage handler is exported, we shouldn't fail
@@ -483,9 +483,9 @@ void ServiceWorkerGlobalScope::sendHibernatableWebSocketClose(
483
483
auto websocket = kj::mv (releasePackage.webSocketRef );
484
484
websocket->initiateHibernatableRelease (lock, kj::mv (releasePackage.ownedWebSocket ),
485
485
api::WebSocket::HibernatableReleaseState::CLOSE);
486
- KJ_IF_MAYBE (h, exportedHandler) {
487
- KJ_IF_MAYBE (handler, h-> webSocketClose ) {
488
- auto promise = (* handler) (lock, kj::mv (websocket), close .code , kj::mv (close .reason ),
486
+ KJ_IF_SOME (h, exportedHandler) {
487
+ KJ_IF_SOME (handler, h. webSocketClose ) {
488
+ auto promise = handler (lock, kj::mv (websocket), close .code , kj::mv (close .reason ),
489
489
close .wasClean );
490
490
event->waitUntil (kj::mv (promise));
491
491
}
@@ -510,9 +510,9 @@ void ServiceWorkerGlobalScope::sendHibernatableWebSocketError(
510
510
WebSocket::HibernatableReleaseState::ERROR);
511
511
jsg::Lock& js (lock);
512
512
513
- KJ_IF_MAYBE (h, exportedHandler) {
514
- KJ_IF_MAYBE (handler, h-> webSocketError ) {
515
- auto promise = (* handler) (js, kj::mv (websocket), js.exceptionToJs (kj::mv (e)));
513
+ KJ_IF_SOME (h, exportedHandler) {
514
+ KJ_IF_SOME (handler, h. webSocketError ) {
515
+ auto promise = handler (js, kj::mv (websocket), js.exceptionToJs (kj::mv (e)));
516
516
event->waitUntil (kj::mv (promise));
517
517
}
518
518
// We want to deliver an error, but if no webSocketError handler is exported, we shouldn't fail
@@ -577,8 +577,8 @@ void ServiceWorkerGlobalScope::queueMicrotask(
577
577
// to microtasks scheduled using EnqueueMicrotask, so we have to wrap in order to propagate
578
578
// the context to those. Once V8 is fixed to correctly associate continuation data with
579
579
// microtasks automatically, we can remove this workaround.
580
- KJ_IF_MAYBE (context, jsg::AsyncContextFrame::current (js)) {
581
- task = context-> wrap (js, task);
580
+ KJ_IF_SOME (context, jsg::AsyncContextFrame::current (js)) {
581
+ task = context. wrap (js, task);
582
582
}
583
583
js.v8Isolate ->EnqueueMicrotask (task);
584
584
}
@@ -587,9 +587,9 @@ jsg::JsValue ServiceWorkerGlobalScope::structuredClone(
587
587
jsg::Lock& js,
588
588
jsg::JsValue value,
589
589
jsg::Optional<StructuredCloneOptions> maybeOptions) {
590
- KJ_IF_MAYBE (options, maybeOptions) {
591
- KJ_IF_MAYBE (transfer, options-> transfer ) {
592
- auto transfers = KJ_MAP (i, * transfer) {
590
+ KJ_IF_SOME (options, maybeOptions) {
591
+ KJ_IF_SOME (transfer, options. transfer ) {
592
+ auto transfers = KJ_MAP (i, transfer) {
593
593
return i.getHandle (js);
594
594
};
595
595
return value.structuredClone (js, kj::mv (transfers));
@@ -631,8 +631,8 @@ TimeoutId::NumberType ServiceWorkerGlobalScope::setTimeout(
631
631
}
632
632
633
633
void ServiceWorkerGlobalScope::clearTimeout (kj::Maybe<TimeoutId::NumberType> timeoutId) {
634
- KJ_IF_MAYBE (id, timeoutId) {
635
- IoContext::current ().clearTimeoutImpl (TimeoutId::fromNumber (* id));
634
+ KJ_IF_SOME (id, timeoutId) {
635
+ IoContext::current ().clearTimeoutImpl (TimeoutId::fromNumber (id));
636
636
}
637
637
}
638
638
@@ -671,7 +671,7 @@ jsg::Ref<CacheStorage> ServiceWorkerGlobalScope::getCaches() {
671
671
jsg::Promise<jsg::Ref<Response>> ServiceWorkerGlobalScope::fetch (
672
672
jsg::Lock& js, kj::OneOf<jsg::Ref<Request>, kj::String> requestOrUrl,
673
673
jsg::Optional<Request::Initializer> requestInit) {
674
- return fetchImpl (js, nullptr , kj::mv (requestOrUrl), kj::mv (requestInit));
674
+ return fetchImpl (js, kj::none , kj::mv (requestOrUrl), kj::mv (requestInit));
675
675
}
676
676
677
677
double Performance::now () {
@@ -683,8 +683,8 @@ double Performance::now() {
683
683
#ifdef WORKERD_EXPERIMENTAL_ENABLE_WEBGPU
684
684
jsg::Ref<api::gpu::GPU> Navigator::getGPU (CompatibilityFlags::Reader flags) {
685
685
// is this a durable object?
686
- KJ_IF_MAYBE (actor, IoContext::current ().getActor ()) {
687
- JSG_REQUIRE (actor-> getPersistent () != nullptr , TypeError,
686
+ KJ_IF_SOME (actor, IoContext::current ().getActor ()) {
687
+ JSG_REQUIRE (actor. getPersistent () != kj::none , TypeError,
688
688
" webgpu api is only available in Durable Objects (no storage)" );
689
689
} else {
690
690
JSG_FAIL_REQUIRE (TypeError, " webgpu api is only available in Durable Objects" );
0 commit comments