UNPKG

1.16 kBJavaScriptView Raw
1'use strict'
2
3const mm = require('micromatch')
4const cache = new Map()
5
6/**
7 * Gets an object from the cache.
8 * @public
9 * @param {String} key - Identifier of the cached object.
10 * @returns {?Object} obj - Cached object.
11 */
12const _get = function(key) {
13
14 return cache.get(key)
15
16}
17
18/**
19 * Saves an object in the cache.
20 * @public
21 * @param {String} key - Identifier for the cached object.
22 * @param {Object} obj - Object which should be cached.
23 */
24const _set = function(key, obj) {
25
26 obj = Object.assign({}, obj)
27
28 cache.set(key, obj)
29
30}
31
32/**
33 * Deletes matching data when a file path is given or all data when no caching information given.
34 * @public
35 * @param {String} filePath - File that triggers a cache flush (relative).
36 */
37const _flush = function(filePath) {
38
39 cache.forEach((value, key) => {
40
41 // Delete entry directly when no caching information available
42 if (value.cache==null) return cache.delete(key)
43
44 // Look if the current entry is affected by the file path
45 const isAffected = mm.any(filePath, value.cache)
46
47 if (isAffected===true) cache.delete(key)
48
49 })
50
51}
52
53/**
54 * @public
55 */
56module.exports = {
57 get: _get,
58 set: _set,
59 flush: _flush
60}
\No newline at end of file