Comparing version
{ | ||
"name": "swiss-ak", | ||
"version": "2.14.0", | ||
"version": "2.14.1", | ||
"author": "Jack Cannon <jackc@annon.co.uk> (http://c.annon.co.uk/)", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -18,3 +18,3 @@ import { safe } from './safe'; | ||
const cachierFactory = <T extends unknown>(defaultExpiresIn: ms = Infinity): Cachier<T> => { | ||
let storedItems: Record<string, { expires: number; value: T }> = {}; | ||
let storedItems: Record<string, { expires: ms; value: T }> = {}; | ||
let defExpiresInVal: ms = defaultExpiresIn; | ||
@@ -43,3 +43,3 @@ | ||
orValue, | ||
expiresIn: safe.num(expiresIn, false, undefined, undefined, getDefaultExpiresIn()) | ||
expiresIn: safe.num(expiresIn, true, undefined, undefined, getDefaultExpiresIn()) | ||
}; | ||
@@ -65,3 +65,3 @@ try { | ||
orFunc: safe.func(orFunc), | ||
expiresIn: safe.num(expiresIn, false, undefined, undefined, getDefaultExpiresIn()) | ||
expiresIn: safe.num(expiresIn, true, undefined, undefined, getDefaultExpiresIn()) | ||
}; | ||
@@ -88,3 +88,3 @@ try { | ||
item, | ||
expiresIn: safe.num(expiresIn, false, undefined, undefined, getDefaultExpiresIn()) | ||
expiresIn: safe.num(expiresIn, true, undefined, undefined, getDefaultExpiresIn()) | ||
}; | ||
@@ -100,3 +100,3 @@ storedItems[args.id] = { | ||
const args = { | ||
id: safe.str(id, false, 'NO-ID') | ||
id: safe.str(id, false, 'NO-ID-REMOVE') | ||
}; | ||
@@ -120,5 +120,5 @@ delete storedItems[args.id]; | ||
const getDefaultExpiresIn = () => defExpiresInVal; | ||
const setDefaultExpiresIn = (newValue: number = Infinity) => { | ||
const setDefaultExpiresIn = (newValue: ms = Infinity) => { | ||
const args = { | ||
newValue: safe.num(newValue, false, undefined, undefined, Infinity) | ||
newValue: safe.num(newValue, true, undefined, undefined, Infinity) | ||
}; | ||
@@ -129,3 +129,8 @@ defExpiresInVal = args.newValue; | ||
const create = <U>(defaultExpiresIn: ms = Infinity): Cachier<U> => cachierFactory<U>(defaultExpiresIn); | ||
const create = <U>(defaultExpiresIn: ms = Infinity): Cachier<U> => { | ||
const args = { | ||
defaultExpiresIn: safe.num(defaultExpiresIn, true, undefined, undefined, Infinity) | ||
}; | ||
return cachierFactory<U>(args.defaultExpiresIn); | ||
}; | ||
@@ -132,0 +137,0 @@ return { |
//<!-- DOCS: 620 --> | ||
import { Prettify } from './types'; | ||
import { safe } from './safe'; | ||
@@ -5,0 +4,0 @@ |
@@ -122,3 +122,3 @@ import * as swissak from '../dist'; | ||
}, | ||
kitchenSink.safe.num(undefined, false, undefined, undefined, Infinity), | ||
kitchenSink.safe.num(undefined, true, undefined, undefined, Infinity), | ||
kitchenSink.samples.num | ||
@@ -205,3 +205,3 @@ ); | ||
}, | ||
kitchenSink.safe.num(undefined, false, undefined, undefined, Infinity), | ||
kitchenSink.safe.num(undefined, true, undefined, undefined, Infinity), | ||
kitchenSink.samples.num | ||
@@ -278,3 +278,3 @@ ); | ||
}, | ||
kitchenSink.safe.num(undefined, false, undefined, undefined, Infinity), | ||
kitchenSink.safe.num(undefined, true, undefined, undefined, Infinity), | ||
kitchenSink.samples.num | ||
@@ -381,3 +381,3 @@ ); | ||
it(should` have seperate entries`, () => { | ||
it(should` have separate entries`, () => { | ||
const cache = cachier.create(); | ||
@@ -392,2 +392,44 @@ cache.save('foo', { name: 'foo' }); | ||
}); | ||
it(should` respect the defaultExpiresIn parameter`, async () => { | ||
const cache = cachier.create(100); // Create with 100ms default expiry | ||
// Save without explicit expiry - should use default | ||
cache.save('temp', 'value'); | ||
// Should exist initially | ||
expect(cache.get('temp')).toBe('value'); | ||
// Wait 200ms (longer than expiry) | ||
await new Promise((resolve) => setTimeout(resolve, 200)); | ||
// Should be gone | ||
expect(cache.get('temp')).toBeUndefined(); | ||
}); | ||
it(should` always default to Infinity for nested creates`, () => { | ||
const cache = cachier.create(1000); | ||
expect(cache.getDefaultExpiresIn()).toBe(1000); | ||
const nestedCache = cache.create(); | ||
expect(nestedCache.getDefaultExpiresIn()).toBe(Infinity); | ||
}); | ||
it(should` respect new defaultExpiresIn when specified in nested creates`, () => { | ||
const cache = cachier.create(1000); | ||
expect(cache.getDefaultExpiresIn()).toBe(1000); | ||
const nestedCache = cache.create(2000); | ||
expect(nestedCache.getDefaultExpiresIn()).toBe(2000); | ||
}); | ||
kitchenSink.toEqual( | ||
'defaultExpiresIn', | ||
(v: any) => { | ||
const cache = cachier.create(v); | ||
return cache.getDefaultExpiresIn(); | ||
}, | ||
kitchenSink.safe.num(undefined, true, undefined, undefined, Infinity), | ||
kitchenSink.samples.num | ||
); | ||
} | ||
@@ -468,3 +510,3 @@ ); | ||
}, | ||
kitchenSink.safe.num(undefined, false, undefined, undefined, Infinity), | ||
kitchenSink.safe.num(undefined, true, undefined, undefined, Infinity), | ||
kitchenSink.samples.num | ||
@@ -471,0 +513,0 @@ ); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
1509903
0.12%35615
0.13%