memoized.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. var helpers = require('./raw')
  2. var lru = require("lru-cache")
  3. var cache = lru(500)
  4. /**
  5. * Meta Programming in JavaScript. Yay!
  6. *
  7. * We iterate over each file we want to memoize.
  8. *
  9. */
  10. var fns = ['buildPriorityList', 'dataTree', 'getCurrent', 'sourceType', 'outputPath', 'outputType', 'shouldIgnore', 'findNearestLayout', 'findDefaultLayout']
  11. fns.forEach(function(fn){
  12. exports[fn] = function(arg){
  13. var key = fn + ':' + JSON.stringify(arguments)
  14. var fresh = cache.get(key)
  15. if(fresh) return fresh
  16. var hot = helpers[fn].apply(this, arguments)
  17. cache.set(key, hot)
  18. return hot
  19. }
  20. })
  21. exports.TerraformError = helpers.TerraformError
  22. exports.processors = helpers.processors
  23. exports.findFirstFile = helpers.findFirstFile
  24. exports.findNearestLayout = helpers.findNearestLayout
  25. exports.findDefaultLayout = helpers.findDefaultLayout
  26. exports.walkData = helpers.walkData
  27. exports.isTemplate = helpers.isTemplate
  28. exports.isStylesheet = helpers.isStylesheet
  29. exports.isJavaScript = helpers.isJavaScript
  30. exports.needsBrowserify = helpers.needsBrowserify