UNPKG

@resin/pinejs

Version:

Pine.js is a sophisticated rules-driven API engine that enables you to define rules in a structured subset of English. Those rules are used in order for Pine.js to generate a database schema and the associated [OData](http://www.odata.org/) API. This make

49 lines 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cachedCompile = void 0; const _ = require("lodash"); const cacheFile = process.env.PINEJS_CACHE_FILE || '.pinejs-cache.json'; let cache = null; let fs; try { fs = require('fs'); } catch (e) { } const SAVE_DEBOUNCE_TIME = 5000; const saveCache = _.debounce(() => { if (fs != null) { fs.writeFile(cacheFile, JSON.stringify(cache), 'utf8', (err) => { if (err) { console.warn('Error saving pinejs cache:', err); } }); } }, SAVE_DEBOUNCE_TIME); const clearCache = _.debounce(() => { cache = null; }, SAVE_DEBOUNCE_TIME * 2); exports.cachedCompile = (name, version, src, fn) => { if (cache == null) { if (fs != null) { try { cache = JSON.parse(fs.readFileSync(cacheFile, 'utf8')); } catch (e) { } } if (cache == null) { cache = {}; } } const key = [name, version, JSON.stringify(src)]; let result = _.get(cache, key); if (result == null) { result = fn(); _.set(cache, key, result); saveCache(); } clearCache(); return _.cloneDeep(result); }; //# sourceMappingURL=cached-compile.js.map