From c32ad336636d3a6cf535320b9bac6f63fb00f172 Mon Sep 17 00:00:00 2001 From: syumai Date: Sun, 25 Jun 2023 18:22:59 +0900 Subject: [PATCH] add GetRuntimeContextValue func --- .../internal/cfruntimecontext/cfruntimecontext.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cloudflare/internal/cfruntimecontext/cfruntimecontext.go b/cloudflare/internal/cfruntimecontext/cfruntimecontext.go index cbc2228..69d076f 100644 --- a/cloudflare/internal/cfruntimecontext/cfruntimecontext.go +++ b/cloudflare/internal/cfruntimecontext/cfruntimecontext.go @@ -2,6 +2,7 @@ package cfruntimecontext import ( "context" + "errors" "syscall/js" "github.com/syumai/workers/internal/runtimecontext" @@ -13,6 +14,7 @@ import ( * type RuntimeContext { * env: Env; * ctx: ExecutionContext; + * ... * } * ``` * This type is based on the type definition of ExportedHandlerFetchHandler. @@ -33,3 +35,16 @@ func GetExecutionContext(ctx context.Context) js.Value { runtimeCtxValue := runtimecontext.MustExtract(ctx) return runtimeCtxValue.Get("ctx") } + +var ErrValueNotFound = errors.New("execution context value for specified key not found") + +// GetRuntimeContextValue gets value for specified key from RuntimeContext. +// - if the value is undefined, return error. +func GetRuntimeContextValue(ctx context.Context, key string) (js.Value, error) { + runtimeCtxValue := runtimecontext.MustExtract(ctx) + v := runtimeCtxValue.Get(key) + if v.IsUndefined() { + return js.Value{}, ErrValueNotFound + } + return v, nil +}