-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
83 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import { ClientApi, ClientOptions } from '@hapi/catbox'; | ||
|
||
interface Engine<T> extends ClientApi<T> {} | ||
|
||
declare class Engine<T> implements ClientApi<T> { | ||
constructor(options?: Engine.Options); | ||
} | ||
|
||
declare namespace Engine { | ||
interface Options extends ClientOptions { | ||
/** | ||
* Sets an upper limit on the number of bytes that can be stored in the cache. | ||
* Once this limit is reached no additional items will be added to the cache until some expire. | ||
* The utilized memory calculation is a rough approximation and must not be relied on. | ||
* @default 104857600 (100MB). | ||
*/ | ||
maxByteSize?: number; | ||
/** | ||
* The minimum number of milliseconds in between each cache cleanup. | ||
* @default 1000 (1 second) | ||
*/ | ||
minCleanupIntervalMsec?: number; | ||
/** | ||
* by default, buffers stored in the cache with allowMixedContent set to true are copied when they are set but not when they are retrieved. | ||
* This means a change to the buffer returned by a get() will change the value in the cache. To prevent this, | ||
* set cloneBuffersOnGet to true to always return a copy of the cached buffer. | ||
* @default false | ||
*/ | ||
cloneBuffersOnGet?: boolean; | ||
} | ||
} | ||
|
||
export { Engine }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
import { Client } from '@hapi/catbox'; | ||
import { Engine as CatboxMemory } from '..'; | ||
|
||
type MyValue = { | ||
a: string; | ||
b: number; | ||
}; | ||
|
||
const client = new CatboxMemory<boolean>({ | ||
cloneBuffersOnGet: false, | ||
maxByteSize: 1024, | ||
minCleanupIntervalMsec: 1000, | ||
}); | ||
|
||
const client2 = new CatboxMemory<MyValue>(); | ||
|
||
const catboxMemoryOptions: CatboxMemory.Options = { | ||
cloneBuffersOnGet: false, | ||
maxByteSize: 1024, | ||
minCleanupIntervalMsec: 1000, | ||
}; | ||
|
||
const client3 = new Client<string>(CatboxMemory, catboxMemoryOptions); | ||
|
||
(async () => { | ||
|
||
const x = await client.get({ | ||
id: 'x', | ||
segment: 's', | ||
}) | ||
|
||
x?.item === true; | ||
|
||
const y = await client2.get({ | ||
id: 'y', | ||
segment: 's', | ||
}) | ||
|
||
y?.item.a === 'a'; | ||
y?.item.b === 1; | ||
|
||
const z = await client3.get({ | ||
id: 'z', | ||
segment: 's', | ||
}); | ||
|
||
z?.item === 'z'; | ||
})() |