@breadstone/archipel-mcp 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/packages/index.md +13 -6
- package/data/packages/platform-authentication/api/Class.AppleStrategy.md +1 -1
- package/data/packages/platform-authentication/api/Class.AuthModule.md +3 -3
- package/data/packages/platform-authentication/api/Class.GithubStrategy.md +1 -1
- package/data/packages/platform-authentication/api/Class.GoogleStrategy.md +1 -1
- package/data/packages/platform-authentication/api/Class.MicrosoftStrategy.md +1 -1
- package/data/packages/platform-authentication/api/Interface.IAuthModuleOptions.md +9 -9
- package/data/packages/{platform-core → platform-caching}/api/Class.MemoryLayeredCache.md +41 -33
- package/data/packages/platform-caching/api/Class.NoopCacheMetricsRecorder.md +158 -0
- package/data/packages/platform-caching/api/Class.RedisLayeredCache.md +296 -0
- package/data/packages/platform-caching/api/Interface.ICacheMetricsRecorder.md +122 -0
- package/data/packages/platform-caching/api/Interface.ICacheStats.md +71 -0
- package/data/packages/platform-caching/api/Interface.ILayeredCache.md +199 -0
- package/data/packages/platform-caching/api/Interface.ILayeredCacheOptions.md +76 -0
- package/data/packages/platform-caching/api/Interface.IRedisLayeredCacheOptions.md +122 -0
- package/data/packages/platform-caching/api/index.md +25 -0
- package/data/packages/platform-caching/index.md +116 -0
- package/data/packages/platform-core/api/index.md +104 -150
- package/data/packages/platform-core/index.md +5 -3
- package/data/packages/platform-cryptography/api/Class.BcryptService.md +73 -0
- package/data/packages/platform-cryptography/api/Class.CryptoService.md +52 -0
- package/data/packages/{platform-core → platform-cryptography}/api/Class.OtpService.md +8 -4
- package/data/packages/{platform-core → platform-cryptography}/api/Interface.IOtpService.md +8 -4
- package/data/packages/platform-cryptography/api/Interface.IOtpUriOptions.md +47 -0
- package/data/packages/{platform-core → platform-cryptography}/api/Variable.OTP_SERVICE_TOKEN.md +1 -1
- package/data/packages/{platform-core → platform-cryptography}/api/Variable.TOTP_EPOCH_TOLERANCE.md +1 -1
- package/data/packages/platform-cryptography/api/index.md +29 -0
- package/data/packages/platform-cryptography/index.md +132 -0
- package/data/packages/{platform-core → platform-intelligence}/api/Class.IntelligenceCapabilityRegistrarBase.md +7 -5
- package/data/packages/{platform-core → platform-intelligence}/api/Class.IntelligenceCapabilityRegistry.md +19 -15
- package/data/packages/{platform-core → platform-intelligence}/api/Class.IntelligenceModule.md +1 -1
- package/data/packages/{platform-core → platform-intelligence}/api/Class.IntelligenceTextGenerator.md +7 -7
- package/data/packages/platform-intelligence/api/Function.createProviderOptions.md +27 -0
- package/data/packages/platform-intelligence/api/Function.loadAnthropicLanguageModel.md +27 -0
- package/data/packages/platform-intelligence/api/Function.loadGoogleLanguageModel.md +27 -0
- package/data/packages/platform-intelligence/api/Function.loadGrokLanguageModel.md +27 -0
- package/data/packages/platform-intelligence/api/Function.loadOpenAILanguageModel.md +27 -0
- package/data/packages/platform-intelligence/api/Function.loadProviderFactory.md +32 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceArtifact.md +35 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapability.md +72 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityMetadata.md +71 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityPayload.md +47 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityRegistry.md +79 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityResult.md +47 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceCompletionUsage.md +47 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceContext.md +73 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceContextBuilder.md +36 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceConversationMessageSnapshot.md +71 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceConversationSnapshot.md +59 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceFollowUpQuestion.md +47 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceIntent.md +47 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceIntentEntity.md +35 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceMessageModel.md +71 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceMessagePayload.md +35 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePrompt.md +35 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptMessage.md +35 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceProviderConfiguration.md +95 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceResponseMessage.md +35 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextCompletion.md +61 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerationOptions.md +47 -0
- package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerator.md +54 -0
- package/data/packages/{platform-core → platform-intelligence}/api/TypeAlias.IntelligenceConversationMessageRole.md +1 -1
- package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceLanguageModelLoader.md +25 -0
- package/data/packages/{platform-core → platform-intelligence}/api/TypeAlias.IntelligenceProviderName.md +1 -1
- package/data/packages/{platform-core → platform-intelligence}/api/Variable.IntelligenceConversationMessageRoles.md +6 -6
- package/data/packages/platform-intelligence/api/Variable.IntelligenceProviderNames.md +29 -0
- package/data/packages/platform-intelligence/api/index.md +70 -0
- package/data/packages/platform-intelligence/index.md +131 -0
- package/data/packages/platform-telemetry/api/Class.TelemetryCacheMetricsRecorder.md +15 -15
- package/package.json +1 -1
- package/data/packages/platform-core/api/Class.BcryptService.md +0 -69
- package/data/packages/platform-core/api/Class.CryptoService.md +0 -50
- package/data/packages/platform-core/api/Class.NoopCacheMetricsRecorder.md +0 -157
- package/data/packages/platform-core/api/Class.RedisLayeredCache.md +0 -275
- package/data/packages/platform-core/api/Interface.ICacheMetricsRecorder.md +0 -121
- package/data/packages/platform-core/api/Interface.ICacheStats.md +0 -71
- package/data/packages/platform-core/api/Interface.IIntelligenceArtifact.md +0 -31
- package/data/packages/platform-core/api/Interface.IIntelligenceCapability.md +0 -62
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityMetadata.md +0 -61
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityPayload.md +0 -41
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityRegistry.md +0 -69
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityResult.md +0 -41
- package/data/packages/platform-core/api/Interface.IIntelligenceCompletionUsage.md +0 -41
- package/data/packages/platform-core/api/Interface.IIntelligenceContext.md +0 -63
- package/data/packages/platform-core/api/Interface.IIntelligenceContextBuilder.md +0 -32
- package/data/packages/platform-core/api/Interface.IIntelligenceConversationMessageSnapshot.md +0 -61
- package/data/packages/platform-core/api/Interface.IIntelligenceConversationSnapshot.md +0 -51
- package/data/packages/platform-core/api/Interface.IIntelligenceFollowUpQuestion.md +0 -41
- package/data/packages/platform-core/api/Interface.IIntelligenceIntent.md +0 -41
- package/data/packages/platform-core/api/Interface.IIntelligenceIntentEntity.md +0 -31
- package/data/packages/platform-core/api/Interface.IIntelligenceMessageModel.md +0 -61
- package/data/packages/platform-core/api/Interface.IIntelligenceMessagePayload.md +0 -31
- package/data/packages/platform-core/api/Interface.IIntelligencePrompt.md +0 -31
- package/data/packages/platform-core/api/Interface.IIntelligencePromptMessage.md +0 -31
- package/data/packages/platform-core/api/Interface.IIntelligenceProviderConfiguration.md +0 -81
- package/data/packages/platform-core/api/Interface.IIntelligenceResponseMessage.md +0 -31
- package/data/packages/platform-core/api/Interface.IIntelligenceTextCompletion.md +0 -53
- package/data/packages/platform-core/api/Interface.IIntelligenceTextGenerationOptions.md +0 -41
- package/data/packages/platform-core/api/Interface.IIntelligenceTextGenerator.md +0 -46
- package/data/packages/platform-core/api/Interface.ILayeredCache.md +0 -194
- package/data/packages/platform-core/api/Interface.ILayeredCacheOptions.md +0 -71
- package/data/packages/platform-core/api/Interface.IOtpUriOptions.md +0 -47
- package/data/packages/platform-core/api/Interface.IRedisLayeredCacheOptions.md +0 -108
- package/data/packages/platform-core/api/Variable.IntelligenceProviderNames.md +0 -29
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Interface: ILayeredCacheOptions'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Interface: ILayeredCacheOptions
|
|
8
|
+
|
|
9
|
+
Defined in: [MemoryLayeredCache.ts:16](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/MemoryLayeredCache.ts#L16)
|
|
10
|
+
|
|
11
|
+
Configuration options for [MemoryLayeredCache](Class.MemoryLayeredCache).
|
|
12
|
+
|
|
13
|
+
## Properties
|
|
14
|
+
|
|
15
|
+
### cacheName?
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
optional cacheName?: string;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Defined in: [MemoryLayeredCache.ts:58](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/MemoryLayeredCache.ts#L58)
|
|
22
|
+
|
|
23
|
+
An optional name / label for the cache instance, used in metrics.
|
|
24
|
+
Defaults to `'memory'`.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
### maxEntries?
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
optional maxEntries?: number;
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Defined in: [MemoryLayeredCache.ts:42](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/MemoryLayeredCache.ts#L42)
|
|
35
|
+
|
|
36
|
+
Maximum number of entries retained in the cache. Oldest entries are
|
|
37
|
+
evicted first (LRU). Defaults to infinite.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
### metricsRecorder?
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
optional metricsRecorder?: ICacheMetricsRecorder;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Defined in: [MemoryLayeredCache.ts:50](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/MemoryLayeredCache.ts#L50)
|
|
48
|
+
|
|
49
|
+
Optional metrics recorder forwarded cache operation statistics.
|
|
50
|
+
Falls back to [NoopCacheMetricsRecorder](Class.NoopCacheMetricsRecorder) when omitted.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### staleWhileRevalidate?
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
optional staleWhileRevalidate?: boolean;
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Defined in: [MemoryLayeredCache.ts:34](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/MemoryLayeredCache.ts#L34)
|
|
61
|
+
|
|
62
|
+
When `true`, expired entries are served immediately while a background
|
|
63
|
+
refresh is triggered. Defaults to `false`.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### ttlMs?
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
optional ttlMs?: number;
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Defined in: [MemoryLayeredCache.ts:26](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/MemoryLayeredCache.ts#L26)
|
|
74
|
+
|
|
75
|
+
Time to live in milliseconds. Entries older than this are considered expired.
|
|
76
|
+
Defaults to infinite (no expiration).
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Interface: IRedisLayeredCacheOptions\<TValue\>'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Interface: IRedisLayeredCacheOptions\<TValue\>
|
|
8
|
+
|
|
9
|
+
Defined in: [redis/RedisLayeredCache.ts:18](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L18)
|
|
10
|
+
|
|
11
|
+
Configuration options for [RedisLayeredCache](Class.RedisLayeredCache).
|
|
12
|
+
|
|
13
|
+
## Type Parameters
|
|
14
|
+
|
|
15
|
+
| Type Parameter | Description |
|
|
16
|
+
| -------------- | ---------------------------------------- |
|
|
17
|
+
| `TValue` | The type of values stored in this cache. |
|
|
18
|
+
|
|
19
|
+
## Properties
|
|
20
|
+
|
|
21
|
+
### cacheName?
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
optional cacheName?: string;
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Defined in: [redis/RedisLayeredCache.ts:68](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L68)
|
|
28
|
+
|
|
29
|
+
An optional name / label for the cache instance, used in metrics.
|
|
30
|
+
Defaults to `'redis'`.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
### deserialize?
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
optional deserialize?: (raw) => TValue;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Defined in: [redis/RedisLayeredCache.ts:53](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L53)
|
|
41
|
+
|
|
42
|
+
Custom deserialization function. Defaults to `JSON.parse`.
|
|
43
|
+
|
|
44
|
+
#### Parameters
|
|
45
|
+
|
|
46
|
+
| Parameter | Type |
|
|
47
|
+
| --------- | -------- |
|
|
48
|
+
| `raw` | `string` |
|
|
49
|
+
|
|
50
|
+
#### Returns
|
|
51
|
+
|
|
52
|
+
`TValue`
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### keyPrefix
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
keyPrefix: string;
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Defined in: [redis/RedisLayeredCache.ts:32](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L32)
|
|
63
|
+
|
|
64
|
+
Key prefix applied to all Redis keys managed by this cache instance.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### metricsRecorder?
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
optional metricsRecorder?: ICacheMetricsRecorder;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Defined in: [redis/RedisLayeredCache.ts:60](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L60)
|
|
75
|
+
|
|
76
|
+
Optional metrics recorder forwarded cache operation statistics.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### serialize?
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
optional serialize?: (value) => string;
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Defined in: [redis/RedisLayeredCache.ts:46](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L46)
|
|
87
|
+
|
|
88
|
+
Custom serialization function. Defaults to `JSON.stringify`.
|
|
89
|
+
|
|
90
|
+
#### Parameters
|
|
91
|
+
|
|
92
|
+
| Parameter | Type |
|
|
93
|
+
| --------- | -------- |
|
|
94
|
+
| `value` | `TValue` |
|
|
95
|
+
|
|
96
|
+
#### Returns
|
|
97
|
+
|
|
98
|
+
`string`
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### ttlSeconds?
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
optional ttlSeconds?: number;
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Defined in: [redis/RedisLayeredCache.ts:39](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L39)
|
|
109
|
+
|
|
110
|
+
Optional TTL in seconds applied to every stored entry.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### url
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
url: string;
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Defined in: [redis/RedisLayeredCache.ts:25](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-caching/src/redis/RedisLayeredCache.ts#L25)
|
|
121
|
+
|
|
122
|
+
Redis connection URL (e.g. `redis://localhost:6379`).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: '@breadstone/archipel-platform-caching'
|
|
3
|
+
generated: true
|
|
4
|
+
editUrl: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# @breadstone/archipel-platform-caching
|
|
8
|
+
|
|
9
|
+
## Classes
|
|
10
|
+
|
|
11
|
+
| Class | Description |
|
|
12
|
+
| ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
13
|
+
| [MemoryLayeredCache](Class.MemoryLayeredCache) | In-memory layered cache with LRU eviction, TTL expiration and optional stale-while-revalidate support. Falls back to an asynchronous loader function on cache misses. |
|
|
14
|
+
| [NoopCacheMetricsRecorder](Class.NoopCacheMetricsRecorder) | No-op implementation of [ICacheMetricsRecorder](Interface.ICacheMetricsRecorder) used as the default when no external metrics backend is configured. |
|
|
15
|
+
| [RedisLayeredCache](Class.RedisLayeredCache) | Redis-backed layered cache implementation. Falls back to an asynchronous loader function when the requested key is not present in Redis. |
|
|
16
|
+
|
|
17
|
+
## Interfaces
|
|
18
|
+
|
|
19
|
+
| Interface | Description |
|
|
20
|
+
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
21
|
+
| [ICacheMetricsRecorder](Interface.ICacheMetricsRecorder) | Metrics recorder for cache operations. Implementations can forward measurements to Prometheus, OpenTelemetry, or any other backend. |
|
|
22
|
+
| [ICacheStats](Interface.ICacheStats) | Cache statistics snapshot returned by cache implementations. |
|
|
23
|
+
| [ILayeredCache](Interface.ILayeredCache) | Generic layered cache contract supporting synchronous and asynchronous access patterns with optional warm-up and statistics. |
|
|
24
|
+
| [ILayeredCacheOptions](Interface.ILayeredCacheOptions) | Configuration options for [MemoryLayeredCache](Class.MemoryLayeredCache). |
|
|
25
|
+
| [IRedisLayeredCacheOptions](Interface.IRedisLayeredCacheOptions) | Configuration options for [RedisLayeredCache](Class.RedisLayeredCache). |
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: platform-caching
|
|
3
|
+
description: Layered caching with in-memory LRU and Redis-backed implementations, TTL, stale-while-revalidate, and metrics.
|
|
4
|
+
order: 15
|
|
5
|
+
tags: [caching, lru, redis, ttl, stale-while-revalidate, metrics]
|
|
6
|
+
package: '@breadstone/archipel-platform-caching'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# platform-caching
|
|
10
|
+
|
|
11
|
+
Layered caching library providing both an in-memory LRU cache and a Redis-backed distributed cache. Both implementations share the `ILayeredCache` contract and support TTL expiration, stale-while-revalidate, warm-up, and pluggable metrics recording.
|
|
12
|
+
|
|
13
|
+
**Package:** `@breadstone/archipel-platform-caching`
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { MemoryLayeredCache } from '@breadstone/archipel-platform-caching';
|
|
19
|
+
|
|
20
|
+
const cache = new MemoryLayeredCache<string, IProduct>(async (key) => productRepository.findById(key), {
|
|
21
|
+
ttlMs: 60_000,
|
|
22
|
+
maxEntries: 500,
|
|
23
|
+
staleWhileRevalidate: true,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const product = await cache.getAsync('prod-123');
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For Redis-backed caching:
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { RedisLayeredCache } from '@breadstone/archipel-platform-caching/redis';
|
|
33
|
+
|
|
34
|
+
const cache = new RedisLayeredCache<string, IProduct>(redisClient, async (key) => productRepository.findById(key), {
|
|
35
|
+
ttlMs: 300_000,
|
|
36
|
+
cacheName: 'products',
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ILayeredCache Interface
|
|
43
|
+
|
|
44
|
+
Both implementations share this contract:
|
|
45
|
+
|
|
46
|
+
| Method | Description |
|
|
47
|
+
| ---------------------- | ----------------------------------------------------------------- |
|
|
48
|
+
| `get(key)` | Synchronous cache lookup. |
|
|
49
|
+
| `getAsync(key)` | Asynchronous cache lookup — triggers the load function on a miss. |
|
|
50
|
+
| `set(key, value)` | Synchronous write. |
|
|
51
|
+
| `setAsync(key, value)` | Asynchronous write. |
|
|
52
|
+
| `invalidate(key)` | Synchronous eviction. |
|
|
53
|
+
| `invalidateAsync(key)` | Asynchronous eviction. |
|
|
54
|
+
| `warm(key)` | Proactively loads and caches a value. |
|
|
55
|
+
| `stats()` | Returns hit/miss/eviction counters as `ICacheStats`. |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Configuration Options
|
|
60
|
+
|
|
61
|
+
### ILayeredCacheOptions (In-Memory)
|
|
62
|
+
|
|
63
|
+
| Property | Type | Default | Description |
|
|
64
|
+
| ---------------------- | ----------------------- | ---------- | ------------------------------------------------------- |
|
|
65
|
+
| `ttlMs` | `number` | ∞ | Time-to-live in milliseconds. |
|
|
66
|
+
| `staleWhileRevalidate` | `boolean` | `false` | Serve stale entries while refreshing in the background. |
|
|
67
|
+
| `maxEntries` | `number` | ∞ | LRU eviction threshold. |
|
|
68
|
+
| `metricsRecorder` | `ICacheMetricsRecorder` | Noop | Pluggable metrics hook. |
|
|
69
|
+
| `cacheName` | `string` | `'memory'` | Label used in metrics and logging. |
|
|
70
|
+
|
|
71
|
+
### IRedisLayeredCacheOptions
|
|
72
|
+
|
|
73
|
+
| Property | Type | Default | Description |
|
|
74
|
+
| ---------------------- | ----------------------- | ---------------- | ------------------------------------------------------- |
|
|
75
|
+
| `ttlMs` | `number` | ∞ | Time-to-live in milliseconds. |
|
|
76
|
+
| `staleWhileRevalidate` | `boolean` | `false` | Serve stale entries while refreshing in the background. |
|
|
77
|
+
| `metricsRecorder` | `ICacheMetricsRecorder` | Noop | Pluggable metrics hook. |
|
|
78
|
+
| `cacheName` | `string` | `'redis'` | Label used in metrics and logging. |
|
|
79
|
+
| `serialize` | `(value) => string` | `JSON.stringify` | Custom serializer for cache values. |
|
|
80
|
+
| `deserialize` | `(raw) => value` | `JSON.parse` | Custom deserializer for cache entries. |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Metrics
|
|
85
|
+
|
|
86
|
+
Implement `ICacheMetricsRecorder` to forward cache statistics to your telemetry system:
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
import { ICacheMetricsRecorder } from '@breadstone/archipel-platform-caching';
|
|
90
|
+
|
|
91
|
+
class TelemetryCacheRecorder implements ICacheMetricsRecorder {
|
|
92
|
+
recordHit(cacheName: string): void {
|
|
93
|
+
/* increment counter */
|
|
94
|
+
}
|
|
95
|
+
recordMiss(cacheName: string): void {
|
|
96
|
+
/* increment counter */
|
|
97
|
+
}
|
|
98
|
+
recordLoadSuccess(cacheName: string, durationMs: number): void {
|
|
99
|
+
/* histogram */
|
|
100
|
+
}
|
|
101
|
+
recordLoadError(cacheName: string): void {
|
|
102
|
+
/* increment counter */
|
|
103
|
+
}
|
|
104
|
+
recordEviction(cacheName: string): void {
|
|
105
|
+
/* increment counter */
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
When no recorder is provided, `NoopCacheMetricsRecorder` is used as a silent fallback.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## API Reference
|
|
115
|
+
|
|
116
|
+
See the full [API documentation](./api/) for all exported types and classes.
|