@fjell/cache 4.7.40 → 4.7.41

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.
@@ -0,0 +1,96 @@
1
+ /**
2
+ * TTL Calculator - Smart TTL calculation with context awareness
3
+ *
4
+ * Calculates appropriate TTLs based on:
5
+ * - Item/query types
6
+ * - Peak hours adjustments
7
+ * - Stale-while-revalidate thresholds
8
+ */
9
+ import { TTLConfig } from './TTLConfig.js';
10
+ export interface TTLCalculationContext {
11
+ /** Item type for item-level TTL calculation */
12
+ itemType?: string;
13
+ /** Query type for query-level TTL calculation */
14
+ queryType?: string;
15
+ /** Whether this is a complete data set */
16
+ isComplete?: boolean;
17
+ /** Override timestamp for calculation (useful for testing) */
18
+ timestamp?: Date;
19
+ }
20
+ export interface TTLResult {
21
+ /** Calculated TTL in seconds */
22
+ ttl: number;
23
+ /** Original base TTL before adjustments */
24
+ baseTTL: number;
25
+ /** Applied adjustments */
26
+ adjustments: {
27
+ peakHours?: {
28
+ applied: boolean;
29
+ multiplier: number;
30
+ };
31
+ };
32
+ /** Stale threshold in seconds (80% of TTL) */
33
+ staleThreshold: number;
34
+ }
35
+ export declare class TTLCalculator {
36
+ private config;
37
+ constructor(config: TTLConfig);
38
+ /**
39
+ * Calculate TTL for an individual item
40
+ */
41
+ calculateItemTTL(itemType: string, context?: TTLCalculationContext): TTLResult;
42
+ /**
43
+ * Calculate TTL for a query result
44
+ */
45
+ calculateQueryTTL(queryType: string, isComplete: boolean, context?: TTLCalculationContext): TTLResult;
46
+ /**
47
+ * Calculate TTL with full context
48
+ */
49
+ calculateContextualTTL(context: TTLCalculationContext): TTLResult;
50
+ /**
51
+ * Check if cached data is stale (but not expired)
52
+ */
53
+ isStale(createdAt: Date, ttl: number, timestamp?: Date): boolean;
54
+ /**
55
+ * Check if cached data is expired
56
+ */
57
+ isExpired(createdAt: Date, ttl: number, timestamp?: Date): boolean;
58
+ /**
59
+ * Calculate when data will become stale
60
+ */
61
+ calculateStaleTime(createdAt: Date, ttl: number): Date;
62
+ /**
63
+ * Calculate when data will expire
64
+ */
65
+ calculateExpirationTime(createdAt: Date, ttl: number): Date;
66
+ /**
67
+ * Apply dynamic adjustments to base TTL
68
+ */
69
+ private applyAdjustments;
70
+ /**
71
+ * Apply peak hours TTL reduction
72
+ */
73
+ private applyPeakHoursAdjustment;
74
+ /**
75
+ * Get recommended TTL for common scenarios
76
+ */
77
+ getRecommendedTTL(scenario: 'realtime' | 'normal' | 'static'): {
78
+ item: number;
79
+ query: {
80
+ complete: number;
81
+ faceted: number;
82
+ };
83
+ };
84
+ /**
85
+ * Calculate optimal TTL based on data volatility
86
+ */
87
+ calculateAdaptiveTTL(baseType: string, recentChangeFrequency: number): number;
88
+ /**
89
+ * Debug information about TTL calculation
90
+ */
91
+ explainTTLCalculation(context: TTLCalculationContext): {
92
+ result: TTLResult;
93
+ explanation: string[];
94
+ };
95
+ }
96
+ //# sourceMappingURL=TTLCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TTLCalculator.d.ts","sourceRoot":"","sources":["../../src/ttl/TTLCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,WAAW,EAAE;QACX,SAAS,CAAC,EAAE;YACV,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IACF,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAErC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS;IAY9E;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,OAAO,EACnB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,SAAS;IAoBZ;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS;IAcjE;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO;IAShE;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,OAAO;IAQlE;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKtD;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI3D;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqChC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG;QAC7D,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9C;IAsBD;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,qBAAqB,EAAE,MAAM,GAC5B,MAAM;IAgBT;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG;QACrD,MAAM,EAAE,SAAS,CAAC;QAClB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;CAsCF"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Enhanced TTL Configuration System
3
+ *
4
+ * Provides sophisticated TTL management with per-type configurations,
5
+ * peak hours adjustments, and stale-while-revalidate patterns.
6
+ */
7
+ export interface TTLConfig {
8
+ /** Item-level TTL configuration */
9
+ item: {
10
+ /** Default TTL for all items (seconds) */
11
+ default: number;
12
+ /** Per-type TTL overrides (seconds) */
13
+ byType?: Record<string, number>;
14
+ };
15
+ /** Query-level TTL configuration */
16
+ query: {
17
+ /** TTL for complete data sets (seconds) */
18
+ complete: number;
19
+ /** TTL for filtered/faceted results (seconds) */
20
+ faceted: number;
21
+ /** Per-facet type TTL overrides (seconds) */
22
+ byFacet?: Record<string, number>;
23
+ };
24
+ /** Dynamic TTL adjustments */
25
+ adjustments?: {
26
+ /** Reduce TTL during peak usage hours */
27
+ peakHours?: {
28
+ /** Start hour (0-23) */
29
+ start: number;
30
+ /** End hour (0-23) */
31
+ end: number;
32
+ /** TTL multiplier during peak hours (e.g., 0.5 for half TTL) */
33
+ multiplier: number;
34
+ };
35
+ /** Enable stale-while-revalidate pattern */
36
+ staleWhileRevalidate?: boolean;
37
+ /** Timezone for peak hours calculation (default: system timezone) */
38
+ timezone?: string;
39
+ };
40
+ /** Cache warming configuration */
41
+ warming?: {
42
+ /** Enable automatic cache warming */
43
+ enabled: boolean;
44
+ /** Interval between warming cycles (milliseconds) */
45
+ interval: number;
46
+ /** Common queries to warm */
47
+ queries: WarmingQuery[];
48
+ };
49
+ }
50
+ /** Configuration for cache warming */
51
+ export interface WarmingQuery {
52
+ /** Query parameters */
53
+ params: any;
54
+ /** Priority (1-10, higher = more important) */
55
+ priority: number;
56
+ /** TTL multiplier for warmed data (optional) */
57
+ ttlMultiplier?: number;
58
+ }
59
+ /**
60
+ * Default TTL configuration optimized for typical usage patterns
61
+ */
62
+ export declare const defaultTTLConfig: TTLConfig;
63
+ /**
64
+ * TTL configuration for high-traffic scenarios
65
+ */
66
+ export declare const highTrafficTTLConfig: TTLConfig;
67
+ /**
68
+ * TTL configuration for development/testing
69
+ */
70
+ export declare const developmentTTLConfig: TTLConfig;
71
+ /**
72
+ * Validates TTL configuration for common issues
73
+ */
74
+ export declare function validateTTLConfig(config: TTLConfig): string[];
75
+ /**
76
+ * Creates a TTL config with sensible defaults merged with user overrides
77
+ */
78
+ export declare function createTTLConfig(overrides?: Partial<TTLConfig>): TTLConfig;
79
+ //# sourceMappingURL=TTLConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TTLConfig.d.ts","sourceRoot":"","sources":["../../src/ttl/TTLConfig.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,IAAI,EAAE;QACJ,0CAA0C;QAC1C,OAAO,EAAE,MAAM,CAAC;QAChB,uCAAuC;QACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAC;IAEF,oCAAoC;IACpC,KAAK,EAAE;QACL,2CAA2C;QAC3C,QAAQ,EAAE,MAAM,CAAC;QACjB,iDAAiD;QACjD,OAAO,EAAE,MAAM,CAAC;QAChB,6CAA6C;QAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC;IAEF,8BAA8B;IAC9B,WAAW,CAAC,EAAE;QACZ,yCAAyC;QACzC,SAAS,CAAC,EAAE;YACV,wBAAwB;YACxB,KAAK,EAAE,MAAM,CAAC;YACd,sBAAsB;YACtB,GAAG,EAAE,MAAM,CAAC;YACZ,gEAAgE;YAChE,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,4CAA4C;QAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,qEAAqE;QACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,kCAAkC;IAClC,OAAO,CAAC,EAAE;QACR,qCAAqC;QACrC,OAAO,EAAE,OAAO,CAAC;QACjB,qDAAqD;QACrD,QAAQ,EAAE,MAAM,CAAC;QACjB,6BAA6B;QAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB,CAAC;CACH;AAED,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAgD9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAoBlC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,SA0BlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAoC7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAiC7E"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fjell/cache",
3
3
  "description": "Cache for Fjell",
4
- "version": "4.7.40",
4
+ "version": "4.7.41",
5
5
  "keywords": [
6
6
  "cache",
7
7
  "fjell"