@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.
- package/coverage_output.txt +995 -0
- package/dist/Operations.d.ts +99 -16
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Options.d.ts +6 -0
- package/dist/Options.d.ts.map +1 -1
- package/dist/cache/TwoLayerDemo.d.ts +29 -0
- package/dist/cache/TwoLayerDemo.d.ts.map +1 -0
- package/dist/cache/TwoLayerFactory.d.ts +83 -0
- package/dist/cache/TwoLayerFactory.d.ts.map +1 -0
- package/dist/cache/layers/ItemCache.d.ts +41 -0
- package/dist/cache/layers/ItemCache.d.ts.map +1 -0
- package/dist/cache/layers/QueryCache.d.ts +52 -0
- package/dist/cache/layers/QueryCache.d.ts.map +1 -0
- package/dist/cache/layers/TwoLayerCacheMap.d.ts +115 -0
- package/dist/cache/layers/TwoLayerCacheMap.d.ts.map +1 -0
- package/dist/cache/patterns/StaleWhileRevalidateCache.d.ts +101 -0
- package/dist/cache/patterns/StaleWhileRevalidateCache.d.ts.map +1 -0
- package/dist/cache/types/TwoLayerTypes.d.ts +53 -0
- package/dist/cache/types/TwoLayerTypes.d.ts.map +1 -0
- package/dist/cache/warming/CacheWarmer.d.ts +147 -0
- package/dist/cache/warming/CacheWarmer.d.ts.map +1 -0
- package/dist/index.js +951 -425
- package/dist/ttl/TTLCalculator.d.ts +96 -0
- package/dist/ttl/TTLCalculator.d.ts.map +1 -0
- package/dist/ttl/TTLConfig.d.ts +79 -0
- package/dist/ttl/TTLConfig.d.ts.map +1 -0
- package/package.json +1 -1
- package/test_output.txt +965 -0
|
@@ -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"}
|