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