cacher.go raw
1 //go:build js && wasm
2 // +build js,wasm
3
4 // Package jscache caches expensive JavaScript results, like string encoding
5 package jscache
6
7 import (
8 "github.com/hack-pad/safejs"
9 )
10
11 type cacher struct {
12 cache map[string]safejs.Value
13 }
14
15 func (c *cacher) value(key string, valueFn func() safejs.Value) safejs.Value {
16 if val, ok := c.cache[key]; ok {
17 return val
18 }
19 if c.cache == nil {
20 c.cache = make(map[string]safejs.Value)
21 }
22 val := valueFn()
23 c.cache[key] = val
24 return val
25 }
26