@memberjunction/global 3.3.0 → 4.0.0

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.
Files changed (165) hide show
  1. package/dist/BaseSingleton.d.ts +2 -2
  2. package/dist/BaseSingleton.d.ts.map +1 -1
  3. package/dist/BaseSingleton.js +9 -13
  4. package/dist/BaseSingleton.js.map +1 -1
  5. package/dist/ClassFactory.d.ts +6 -6
  6. package/dist/ClassFactory.d.ts.map +1 -1
  7. package/dist/ClassFactory.js +31 -21
  8. package/dist/ClassFactory.js.map +1 -1
  9. package/dist/ClassUtils.js +9 -21
  10. package/dist/ClassUtils.js.map +1 -1
  11. package/dist/Core.d.ts +29 -0
  12. package/dist/Core.d.ts.map +1 -0
  13. package/dist/Core.js +58 -0
  14. package/dist/Core.js.map +1 -0
  15. package/dist/DeepDiff.js +4 -31
  16. package/dist/DeepDiff.js.map +1 -1
  17. package/dist/EncryptionUtils.js +6 -11
  18. package/dist/EncryptionUtils.js.map +1 -1
  19. package/dist/Global.d.ts +4 -4
  20. package/dist/Global.js +11 -15
  21. package/dist/Global.js.map +1 -1
  22. package/dist/JSONValidator.d.ts +1 -1
  23. package/dist/JSONValidator.d.ts.map +1 -1
  24. package/dist/JSONValidator.js +12 -15
  25. package/dist/JSONValidator.js.map +1 -1
  26. package/dist/ObjectCache.js +2 -7
  27. package/dist/ObjectCache.js.map +1 -1
  28. package/dist/RegisterClass.d.ts +1 -1
  29. package/dist/RegisterClass.d.ts.map +1 -1
  30. package/dist/RegisterClass.js +3 -7
  31. package/dist/RegisterClass.js.map +1 -1
  32. package/dist/SQLExpressionValidator.js +9 -13
  33. package/dist/SQLExpressionValidator.js.map +1 -1
  34. package/dist/SafeExpressionEvaluator.js +60 -64
  35. package/dist/SafeExpressionEvaluator.js.map +1 -1
  36. package/dist/ValidationTypes.js +4 -9
  37. package/dist/ValidationTypes.js.map +1 -1
  38. package/dist/generic/QueryCache.d.ts +85 -0
  39. package/dist/generic/QueryCache.d.ts.map +1 -0
  40. package/dist/generic/QueryCache.js +198 -0
  41. package/dist/generic/QueryCache.js.map +1 -0
  42. package/dist/generic/QueryCacheConfig.d.ts +72 -0
  43. package/dist/generic/QueryCacheConfig.d.ts.map +1 -0
  44. package/dist/generic/QueryCacheConfig.js +3 -0
  45. package/dist/generic/QueryCacheConfig.js.map +1 -0
  46. package/dist/generic/applicationInfo.d.ts +138 -0
  47. package/dist/generic/applicationInfo.d.ts.map +1 -0
  48. package/dist/generic/applicationInfo.js +177 -0
  49. package/dist/generic/applicationInfo.js.map +1 -0
  50. package/dist/generic/authEvaluator.d.ts +25 -0
  51. package/dist/generic/authEvaluator.d.ts.map +1 -0
  52. package/dist/generic/authEvaluator.js +49 -0
  53. package/dist/generic/authEvaluator.js.map +1 -0
  54. package/dist/generic/authTypes.d.ts +193 -0
  55. package/dist/generic/authTypes.d.ts.map +1 -0
  56. package/dist/generic/authTypes.js +19 -0
  57. package/dist/generic/authTypes.js.map +1 -0
  58. package/dist/generic/baseEngine.d.ts +260 -0
  59. package/dist/generic/baseEngine.d.ts.map +1 -0
  60. package/dist/generic/baseEngine.js +510 -0
  61. package/dist/generic/baseEngine.js.map +1 -0
  62. package/dist/generic/baseEntity.d.ts +691 -0
  63. package/dist/generic/baseEntity.d.ts.map +1 -0
  64. package/dist/generic/baseEntity.js +1688 -0
  65. package/dist/generic/baseEntity.js.map +1 -0
  66. package/dist/generic/baseInfo.d.ts +24 -0
  67. package/dist/generic/baseInfo.d.ts.map +1 -0
  68. package/dist/generic/baseInfo.js +53 -0
  69. package/dist/generic/baseInfo.js.map +1 -0
  70. package/dist/generic/compositeKey.d.ts +206 -0
  71. package/dist/generic/compositeKey.d.ts.map +1 -0
  72. package/dist/generic/compositeKey.js +412 -0
  73. package/dist/generic/compositeKey.js.map +1 -0
  74. package/dist/generic/databaseProviderBase.d.ts +46 -0
  75. package/dist/generic/databaseProviderBase.d.ts.map +1 -0
  76. package/dist/generic/databaseProviderBase.js +14 -0
  77. package/dist/generic/databaseProviderBase.js.map +1 -0
  78. package/dist/generic/entityInfo.d.ts +983 -0
  79. package/dist/generic/entityInfo.d.ts.map +1 -0
  80. package/dist/generic/entityInfo.js +1401 -0
  81. package/dist/generic/entityInfo.js.map +1 -0
  82. package/dist/generic/explorerNavigationItem.d.ts +20 -0
  83. package/dist/generic/explorerNavigationItem.d.ts.map +1 -0
  84. package/dist/generic/explorerNavigationItem.js +29 -0
  85. package/dist/generic/explorerNavigationItem.js.map +1 -0
  86. package/dist/generic/interfaces.d.ts +610 -0
  87. package/dist/generic/interfaces.d.ts.map +1 -0
  88. package/dist/generic/interfaces.js +211 -0
  89. package/dist/generic/interfaces.js.map +1 -0
  90. package/dist/generic/libraryInfo.d.ts +40 -0
  91. package/dist/generic/libraryInfo.d.ts.map +1 -0
  92. package/dist/generic/libraryInfo.js +56 -0
  93. package/dist/generic/libraryInfo.js.map +1 -0
  94. package/dist/generic/logging.d.ts +179 -0
  95. package/dist/generic/logging.d.ts.map +1 -0
  96. package/dist/generic/logging.js +382 -0
  97. package/dist/generic/logging.js.map +1 -0
  98. package/dist/generic/metadata.d.ts +305 -0
  99. package/dist/generic/metadata.d.ts.map +1 -0
  100. package/dist/generic/metadata.js +454 -0
  101. package/dist/generic/metadata.js.map +1 -0
  102. package/dist/generic/metadataUtil.d.ts +8 -0
  103. package/dist/generic/metadataUtil.d.ts.map +1 -0
  104. package/dist/generic/metadataUtil.js +36 -0
  105. package/dist/generic/metadataUtil.js.map +1 -0
  106. package/dist/generic/providerBase.d.ts +546 -0
  107. package/dist/generic/providerBase.d.ts.map +1 -0
  108. package/dist/generic/providerBase.js +999 -0
  109. package/dist/generic/providerBase.js.map +1 -0
  110. package/dist/generic/queryInfo.d.ts +460 -0
  111. package/dist/generic/queryInfo.d.ts.map +1 -0
  112. package/dist/generic/queryInfo.js +633 -0
  113. package/dist/generic/queryInfo.js.map +1 -0
  114. package/dist/generic/querySQLFilters.d.ts +54 -0
  115. package/dist/generic/querySQLFilters.d.ts.map +1 -0
  116. package/dist/generic/querySQLFilters.js +84 -0
  117. package/dist/generic/querySQLFilters.js.map +1 -0
  118. package/dist/generic/runQuery.d.ts +96 -0
  119. package/dist/generic/runQuery.d.ts.map +1 -0
  120. package/dist/generic/runQuery.js +66 -0
  121. package/dist/generic/runQuery.js.map +1 -0
  122. package/dist/generic/runQuerySQLFilterImplementations.d.ts +51 -0
  123. package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +1 -0
  124. package/dist/generic/runQuerySQLFilterImplementations.js +238 -0
  125. package/dist/generic/runQuerySQLFilterImplementations.js.map +1 -0
  126. package/dist/generic/runReport.d.ts +25 -0
  127. package/dist/generic/runReport.d.ts.map +1 -0
  128. package/dist/generic/runReport.js +42 -0
  129. package/dist/generic/runReport.js.map +1 -0
  130. package/dist/generic/securityInfo.d.ts +355 -0
  131. package/dist/generic/securityInfo.d.ts.map +1 -0
  132. package/dist/generic/securityInfo.js +425 -0
  133. package/dist/generic/securityInfo.js.map +1 -0
  134. package/dist/generic/transactionGroup.d.ts +184 -0
  135. package/dist/generic/transactionGroup.d.ts.map +1 -0
  136. package/dist/generic/transactionGroup.js +357 -0
  137. package/dist/generic/transactionGroup.js.map +1 -0
  138. package/dist/generic/util.d.ts +81 -0
  139. package/dist/generic/util.d.ts.map +1 -0
  140. package/dist/generic/util.js +301 -0
  141. package/dist/generic/util.js.map +1 -0
  142. package/dist/index.d.ts +16 -16
  143. package/dist/index.js +16 -35
  144. package/dist/index.js.map +1 -1
  145. package/dist/interface.d.ts +2 -2
  146. package/dist/interface.d.ts.map +1 -1
  147. package/dist/interface.js +3 -8
  148. package/dist/interface.js.map +1 -1
  149. package/dist/util/PatternUtils.js +6 -15
  150. package/dist/util/PatternUtils.js.map +1 -1
  151. package/dist/util.d.ts +13 -5
  152. package/dist/util.d.ts.map +1 -1
  153. package/dist/util.js +36 -75
  154. package/dist/util.js.map +1 -1
  155. package/dist/views/runView.d.ts +150 -0
  156. package/dist/views/runView.d.ts.map +1 -0
  157. package/dist/views/runView.js +100 -0
  158. package/dist/views/runView.js.map +1 -0
  159. package/dist/views/viewInfo.d.ts +121 -0
  160. package/dist/views/viewInfo.d.ts.map +1 -0
  161. package/dist/views/viewInfo.js +182 -0
  162. package/dist/views/viewInfo.js.map +1 -0
  163. package/dist/warningManager.js +2 -6
  164. package/dist/warningManager.js.map +1 -1
  165. package/package.json +7 -6
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * @fileoverview Safe expression evaluator for conditional logic in MemberJunction.
4
3
  *
@@ -10,8 +9,6 @@
10
9
  * @author MemberJunction.com
11
10
  * @since 2.76.0
12
11
  */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.defaultExpressionEvaluator = exports.SafeExpressionEvaluator = void 0;
15
12
  /**
16
13
  * Safe expression evaluator that prevents arbitrary code execution while
17
14
  * supporting common boolean expressions and property access patterns.
@@ -50,7 +47,65 @@ exports.defaultExpressionEvaluator = exports.SafeExpressionEvaluator = void 0;
50
47
  * );
51
48
  * ```
52
49
  */
53
- class SafeExpressionEvaluator {
50
+ export class SafeExpressionEvaluator {
51
+ /**
52
+ * Patterns that indicate potentially dangerous code
53
+ * @private
54
+ */
55
+ static { this.DANGEROUS_PATTERNS = [
56
+ /\beval\s*\(/i,
57
+ /\bnew\s+Function/i,
58
+ /\bFunction\s*\(/i,
59
+ /\bimport\s+/i,
60
+ /\brequire\s*\(/i,
61
+ /\bprocess\./i,
62
+ /\bglobal\./i,
63
+ /\bwindow\./i,
64
+ /\bdocument\./i,
65
+ /\b__proto__\b/i,
66
+ /\bconstructor\b/i,
67
+ /\bprototype\b/i,
68
+ /\.\s*constructor/i,
69
+ /\bthis\b/,
70
+ /\bawait\b/i,
71
+ /\basync\b/i,
72
+ /\bclass\b/i,
73
+ /\bextends\b/i,
74
+ /\bthrow\b/i,
75
+ /\btry\b/i,
76
+ /\bcatch\b/i,
77
+ /\bfinally\b/i,
78
+ /;/, // No semicolons to prevent multiple statements
79
+ /{/, // No curly braces to prevent code blocks
80
+ /}/, // No curly braces
81
+ /`/, // No template literals
82
+ /\$\{/, // No template expressions
83
+ ]; }
84
+ /**
85
+ * Safe methods that can be called on objects
86
+ * @private
87
+ */
88
+ static { this.SAFE_METHODS = [
89
+ 'length',
90
+ 'includes',
91
+ 'startsWith',
92
+ 'endsWith',
93
+ 'indexOf',
94
+ 'lastIndexOf',
95
+ 'toLowerCase',
96
+ 'toUpperCase',
97
+ 'trim',
98
+ 'trimStart',
99
+ 'trimEnd',
100
+ 'toString',
101
+ 'valueOf',
102
+ 'some',
103
+ 'every',
104
+ 'find',
105
+ 'filter',
106
+ 'map',
107
+ 'reduce'
108
+ ]; }
54
109
  /**
55
110
  * Evaluates a boolean expression against a context object
56
111
  *
@@ -269,67 +324,8 @@ class SafeExpressionEvaluator {
269
324
  return results;
270
325
  }
271
326
  }
272
- exports.SafeExpressionEvaluator = SafeExpressionEvaluator;
273
- /**
274
- * Patterns that indicate potentially dangerous code
275
- * @private
276
- */
277
- SafeExpressionEvaluator.DANGEROUS_PATTERNS = [
278
- /\beval\s*\(/i,
279
- /\bnew\s+Function/i,
280
- /\bFunction\s*\(/i,
281
- /\bimport\s+/i,
282
- /\brequire\s*\(/i,
283
- /\bprocess\./i,
284
- /\bglobal\./i,
285
- /\bwindow\./i,
286
- /\bdocument\./i,
287
- /\b__proto__\b/i,
288
- /\bconstructor\b/i,
289
- /\bprototype\b/i,
290
- /\.\s*constructor/i,
291
- /\bthis\b/,
292
- /\bawait\b/i,
293
- /\basync\b/i,
294
- /\bclass\b/i,
295
- /\bextends\b/i,
296
- /\bthrow\b/i,
297
- /\btry\b/i,
298
- /\bcatch\b/i,
299
- /\bfinally\b/i,
300
- /;/, // No semicolons to prevent multiple statements
301
- /{/, // No curly braces to prevent code blocks
302
- /}/, // No curly braces
303
- /`/, // No template literals
304
- /\$\{/, // No template expressions
305
- ];
306
- /**
307
- * Safe methods that can be called on objects
308
- * @private
309
- */
310
- SafeExpressionEvaluator.SAFE_METHODS = [
311
- 'length',
312
- 'includes',
313
- 'startsWith',
314
- 'endsWith',
315
- 'indexOf',
316
- 'lastIndexOf',
317
- 'toLowerCase',
318
- 'toUpperCase',
319
- 'trim',
320
- 'trimStart',
321
- 'trimEnd',
322
- 'toString',
323
- 'valueOf',
324
- 'some',
325
- 'every',
326
- 'find',
327
- 'filter',
328
- 'map',
329
- 'reduce'
330
- ];
331
327
  /**
332
328
  * Default instance for convenience
333
329
  */
334
- exports.defaultExpressionEvaluator = new SafeExpressionEvaluator();
330
+ export const defaultExpressionEvaluator = new SafeExpressionEvaluator();
335
331
  //# sourceMappingURL=SafeExpressionEvaluator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SafeExpressionEvaluator.js","sourceRoot":"","sources":["../src/SafeExpressionEvaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SafeExpressionEvaluator.js","sourceRoot":"","sources":["../src/SafeExpressionEvaluator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * @fileoverview General-purpose validation types for use across MemberJunction
4
3
  *
@@ -9,35 +8,31 @@
9
8
  * @author MemberJunction.com
10
9
  * @since 2.68.0
11
10
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ValidationResult = exports.ValidationErrorInfo = exports.ValidationErrorType = void 0;
14
11
  /**
15
12
  * Enumeration of validation error types
16
13
  */
17
- exports.ValidationErrorType = {
14
+ export const ValidationErrorType = {
18
15
  Failure: 'Failure',
19
16
  Warning: 'Warning',
20
17
  };
21
18
  /**
22
19
  * Information about a single validation error
23
20
  */
24
- class ValidationErrorInfo {
25
- constructor(Source, Message, Value, Type = exports.ValidationErrorType.Failure) {
21
+ export class ValidationErrorInfo {
22
+ constructor(Source, Message, Value, Type = ValidationErrorType.Failure) {
26
23
  this.Source = Source;
27
24
  this.Message = Message;
28
25
  this.Value = Value;
29
26
  this.Type = Type;
30
27
  }
31
28
  }
32
- exports.ValidationErrorInfo = ValidationErrorInfo;
33
29
  /**
34
30
  * Result of a validation operation
35
31
  */
36
- class ValidationResult {
32
+ export class ValidationResult {
37
33
  constructor() {
38
34
  this.Success = false;
39
35
  this.Errors = [];
40
36
  }
41
37
  }
42
- exports.ValidationResult = ValidationResult;
43
38
  //# sourceMappingURL=ValidationTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationTypes.js","sourceRoot":"","sources":["../src/ValidationTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH;;GAEG;AACU,QAAA,mBAAmB,GAAG;IAC/B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACZ,CAAC;AAIX;;GAEG;AACH,MAAa,mBAAmB;IAM5B,YAAY,MAAc,EAAE,OAAe,EAAE,KAAU,EAAE,OAA4B,2BAAmB,CAAC,OAAO;QAC5G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAZD,kDAYC;AAED;;GAEG;AACH,MAAa,gBAAgB;IAA7B;QACI,YAAO,GAAY,KAAK,CAAC;QACzB,WAAM,GAA0B,EAAE,CAAC;IACvC,CAAC;CAAA;AAHD,4CAGC"}
1
+ {"version":3,"file":"ValidationTypes.js","sourceRoot":"","sources":["../src/ValidationTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACZ,CAAC;AAIX;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAM5B,YAAY,MAAc,EAAE,OAAe,EAAE,KAAU,EAAE,OAA4B,mBAAmB,CAAC,OAAO;QAC5G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAA7B;QACI,YAAO,GAAY,KAAK,CAAC;QACzB,WAAM,GAA0B,EAAE,CAAC;IACvC,CAAC;CAAA"}
@@ -0,0 +1,85 @@
1
+ import { QueryCacheConfig, QueryCacheEntry } from './QueryCacheConfig.js';
2
+ /**
3
+ * LRU (Least Recently Used) cache implementation for query results with TTL support.
4
+ * This cache provides efficient storage and retrieval of query results with automatic
5
+ * expiration based on time-to-live settings and size limits.
6
+ */
7
+ export declare class QueryCache {
8
+ private cache;
9
+ private accessOrder;
10
+ private readonly DEFAULT_MAX_SIZE;
11
+ private readonly DEFAULT_TTL_MINUTES;
12
+ /**
13
+ * Performance statistics for cache monitoring
14
+ */
15
+ private stats;
16
+ /**
17
+ * Generate a deterministic cache key from query ID and parameters.
18
+ * The key is created by sorting parameter keys and creating a stable JSON representation.
19
+ *
20
+ * @param queryId - The unique query identifier
21
+ * @param params - The query parameters
22
+ * @returns A stable cache key string
23
+ */
24
+ private getCacheKey;
25
+ /**
26
+ * Get cached results if available and not expired.
27
+ * Updates access order for LRU tracking and increments hit counter.
28
+ *
29
+ * @param queryId - The query identifier
30
+ * @param params - The query parameters
31
+ * @param config - Cache configuration settings
32
+ * @returns The cached entry if valid, null otherwise
33
+ */
34
+ get(queryId: string, params: Record<string, any>, config: QueryCacheConfig): QueryCacheEntry | null;
35
+ /**
36
+ * Cache query results with TTL and LRU eviction.
37
+ * Evicts least recently used entries when at capacity.
38
+ *
39
+ * @param queryId - The query identifier
40
+ * @param params - The query parameters
41
+ * @param results - The query results to cache
42
+ * @param config - Cache configuration settings
43
+ */
44
+ set(queryId: string, params: Record<string, any>, results: any[], config: QueryCacheConfig): void;
45
+ /**
46
+ * Clear cache for specific query or all queries.
47
+ *
48
+ * @param queryId - Optional query ID to clear specific query cache
49
+ */
50
+ clear(queryId?: string): void;
51
+ /**
52
+ * Update the access order for LRU tracking.
53
+ * Moves the accessed key to the end of the array (most recently used).
54
+ *
55
+ * @param key - The cache key that was accessed
56
+ */
57
+ private updateAccessOrder;
58
+ /**
59
+ * Remove a key from the access order tracking.
60
+ *
61
+ * @param key - The cache key to remove
62
+ */
63
+ private removeFromAccessOrder;
64
+ /**
65
+ * Get cache statistics for monitoring and debugging.
66
+ *
67
+ * @returns Object containing cache performance metrics
68
+ */
69
+ getStats(): {
70
+ size: number;
71
+ hits: number;
72
+ misses: number;
73
+ hitRate: number;
74
+ evictions: number;
75
+ expirations: number;
76
+ };
77
+ /**
78
+ * Clean up expired entries from the cache.
79
+ * This can be called periodically to free up memory.
80
+ *
81
+ * @returns Number of expired entries removed
82
+ */
83
+ cleanupExpired(): number;
84
+ }
85
+ //# sourceMappingURL=QueryCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryCache.d.ts","sourceRoot":"","sources":["../../src/generic/QueryCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGvE;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IAE1C;;OAEG;IACH,OAAO,CAAC,KAAK,CAKX;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;;;OAQG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,eAAe,GAAG,IAAI;IA+BnG;;;;;;;;OAQG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA6BjG;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAmB7B;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;IACH,QAAQ,IAAI;QACR,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACvB;IAcD;;;;;OAKG;IACH,cAAc,IAAI,MAAM;CAmB3B"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryCache = void 0;
4
+ const logging_1 = require("./logging.js");
5
+ /**
6
+ * LRU (Least Recently Used) cache implementation for query results with TTL support.
7
+ * This cache provides efficient storage and retrieval of query results with automatic
8
+ * expiration based on time-to-live settings and size limits.
9
+ */
10
+ class QueryCache {
11
+ constructor() {
12
+ this.cache = new Map();
13
+ this.accessOrder = [];
14
+ this.DEFAULT_MAX_SIZE = 1000;
15
+ this.DEFAULT_TTL_MINUTES = 60;
16
+ /**
17
+ * Performance statistics for cache monitoring
18
+ */
19
+ this.stats = {
20
+ hits: 0,
21
+ misses: 0,
22
+ evictions: 0,
23
+ expirations: 0
24
+ };
25
+ }
26
+ /**
27
+ * Generate a deterministic cache key from query ID and parameters.
28
+ * The key is created by sorting parameter keys and creating a stable JSON representation.
29
+ *
30
+ * @param queryId - The unique query identifier
31
+ * @param params - The query parameters
32
+ * @returns A stable cache key string
33
+ */
34
+ getCacheKey(queryId, params) {
35
+ const sortedParams = Object.keys(params).sort().reduce((acc, key) => {
36
+ acc[key] = params[key];
37
+ return acc;
38
+ }, {});
39
+ return `${queryId}:${JSON.stringify(sortedParams)}`;
40
+ }
41
+ /**
42
+ * Get cached results if available and not expired.
43
+ * Updates access order for LRU tracking and increments hit counter.
44
+ *
45
+ * @param queryId - The query identifier
46
+ * @param params - The query parameters
47
+ * @param config - Cache configuration settings
48
+ * @returns The cached entry if valid, null otherwise
49
+ */
50
+ get(queryId, params, config) {
51
+ if (!config.enabled)
52
+ return null;
53
+ const key = this.getCacheKey(queryId, params);
54
+ const entry = this.cache.get(key);
55
+ if (!entry) {
56
+ this.stats.misses++;
57
+ return null;
58
+ }
59
+ const now = Date.now();
60
+ const expiryTime = entry.timestamp + (entry.ttlMinutes * 60 * 1000);
61
+ if (now > expiryTime) {
62
+ // Entry has expired
63
+ this.cache.delete(key);
64
+ this.removeFromAccessOrder(key);
65
+ this.stats.expirations++;
66
+ this.stats.misses++;
67
+ return null;
68
+ }
69
+ // Update access order for LRU
70
+ this.updateAccessOrder(key);
71
+ entry.hitCount++;
72
+ this.stats.hits++;
73
+ return entry;
74
+ }
75
+ /**
76
+ * Cache query results with TTL and LRU eviction.
77
+ * Evicts least recently used entries when at capacity.
78
+ *
79
+ * @param queryId - The query identifier
80
+ * @param params - The query parameters
81
+ * @param results - The query results to cache
82
+ * @param config - Cache configuration settings
83
+ */
84
+ set(queryId, params, results, config) {
85
+ if (!config.enabled)
86
+ return;
87
+ const key = this.getCacheKey(queryId, params);
88
+ const maxSize = config.maxCacheSize || this.DEFAULT_MAX_SIZE;
89
+ // Evict LRU entries if at capacity
90
+ if (this.cache.size >= maxSize && !this.cache.has(key)) {
91
+ const lruKey = this.accessOrder.shift();
92
+ if (lruKey) {
93
+ this.cache.delete(lruKey);
94
+ this.stats.evictions++;
95
+ (0, logging_1.LogStatus)(`Cache eviction: Removed LRU entry for key ${lruKey}`);
96
+ }
97
+ }
98
+ const entry = {
99
+ queryId,
100
+ parameters: params,
101
+ results,
102
+ timestamp: Date.now(),
103
+ ttlMinutes: config.ttlMinutes || this.DEFAULT_TTL_MINUTES,
104
+ hitCount: 0
105
+ };
106
+ this.cache.set(key, entry);
107
+ this.updateAccessOrder(key);
108
+ }
109
+ /**
110
+ * Clear cache for specific query or all queries.
111
+ *
112
+ * @param queryId - Optional query ID to clear specific query cache
113
+ */
114
+ clear(queryId) {
115
+ if (queryId) {
116
+ // Clear all entries for specific query
117
+ const keysToDelete = Array.from(this.cache.keys())
118
+ .filter(key => key.startsWith(`${queryId}:`));
119
+ keysToDelete.forEach(key => {
120
+ this.cache.delete(key);
121
+ this.removeFromAccessOrder(key);
122
+ });
123
+ (0, logging_1.LogStatus)(`Cleared ${keysToDelete.length} cache entries for query ${queryId}`);
124
+ }
125
+ else {
126
+ // Clear entire cache
127
+ const size = this.cache.size;
128
+ this.cache.clear();
129
+ this.accessOrder = [];
130
+ (0, logging_1.LogStatus)(`Cleared entire query cache (${size} entries)`);
131
+ }
132
+ }
133
+ /**
134
+ * Update the access order for LRU tracking.
135
+ * Moves the accessed key to the end of the array (most recently used).
136
+ *
137
+ * @param key - The cache key that was accessed
138
+ */
139
+ updateAccessOrder(key) {
140
+ const index = this.accessOrder.indexOf(key);
141
+ if (index > -1) {
142
+ this.accessOrder.splice(index, 1);
143
+ }
144
+ this.accessOrder.push(key);
145
+ }
146
+ /**
147
+ * Remove a key from the access order tracking.
148
+ *
149
+ * @param key - The cache key to remove
150
+ */
151
+ removeFromAccessOrder(key) {
152
+ const index = this.accessOrder.indexOf(key);
153
+ if (index > -1) {
154
+ this.accessOrder.splice(index, 1);
155
+ }
156
+ }
157
+ /**
158
+ * Get cache statistics for monitoring and debugging.
159
+ *
160
+ * @returns Object containing cache performance metrics
161
+ */
162
+ getStats() {
163
+ const total = this.stats.hits + this.stats.misses;
164
+ const hitRate = total > 0 ? this.stats.hits / total : 0;
165
+ return {
166
+ size: this.cache.size,
167
+ hits: this.stats.hits,
168
+ misses: this.stats.misses,
169
+ hitRate: Math.round(hitRate * 100) / 100,
170
+ evictions: this.stats.evictions,
171
+ expirations: this.stats.expirations
172
+ };
173
+ }
174
+ /**
175
+ * Clean up expired entries from the cache.
176
+ * This can be called periodically to free up memory.
177
+ *
178
+ * @returns Number of expired entries removed
179
+ */
180
+ cleanupExpired() {
181
+ const now = Date.now();
182
+ let cleaned = 0;
183
+ for (const [key, entry] of this.cache.entries()) {
184
+ const expiryTime = entry.timestamp + (entry.ttlMinutes * 60 * 1000);
185
+ if (now > expiryTime) {
186
+ this.cache.delete(key);
187
+ this.removeFromAccessOrder(key);
188
+ cleaned++;
189
+ }
190
+ }
191
+ if (cleaned > 0) {
192
+ (0, logging_1.LogStatus)(`Cleaned up ${cleaned} expired cache entries`);
193
+ }
194
+ return cleaned;
195
+ }
196
+ }
197
+ exports.QueryCache = QueryCache;
198
+ //# sourceMappingURL=QueryCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryCache.js","sourceRoot":"","sources":["../../src/generic/QueryCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Configuration interface for query result caching with TTL-based expiration
3
+ */
4
+ export interface QueryCacheConfig {
5
+ /**
6
+ * Whether caching is enabled for this query
7
+ */
8
+ enabled: boolean;
9
+ /**
10
+ * Time-to-live in minutes for cached results
11
+ */
12
+ ttlMinutes: number;
13
+ /**
14
+ * Maximum number of cached result sets for this query
15
+ */
16
+ maxCacheSize?: number;
17
+ /**
18
+ * Cache key strategy - exact parameter matching vs. pattern matching
19
+ */
20
+ cacheKey?: 'exact' | 'fuzzy';
21
+ /**
22
+ * Whether to inherit settings from parent category
23
+ */
24
+ inheritFromCategory?: boolean;
25
+ }
26
+ /**
27
+ * Represents a cached query result entry with metadata
28
+ */
29
+ export interface QueryCacheEntry {
30
+ /**
31
+ * The query ID this cache entry belongs to
32
+ */
33
+ queryId: string;
34
+ /**
35
+ * The parameters used for this specific query execution
36
+ */
37
+ parameters: Record<string, any>;
38
+ /**
39
+ * The cached query results
40
+ */
41
+ results: any[];
42
+ /**
43
+ * Timestamp when this entry was cached
44
+ */
45
+ timestamp: number;
46
+ /**
47
+ * TTL in minutes for this specific cache entry
48
+ */
49
+ ttlMinutes: number;
50
+ /**
51
+ * Number of times this cache entry has been accessed
52
+ */
53
+ hitCount: number;
54
+ }
55
+ /**
56
+ * Result type extended with cache information
57
+ */
58
+ export interface CachedRunQueryResult {
59
+ /**
60
+ * Whether this result was served from cache
61
+ */
62
+ CacheHit?: boolean;
63
+ /**
64
+ * Cache key used for this query
65
+ */
66
+ CacheKey?: string;
67
+ /**
68
+ * Time until cache expiration in milliseconds
69
+ */
70
+ CacheTTLRemaining?: number;
71
+ }
72
+ //# sourceMappingURL=QueryCacheConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryCacheConfig.d.ts","sourceRoot":"","sources":["../../src/generic/QueryCacheConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,GAAG,EAAE,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=QueryCacheConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryCacheConfig.js","sourceRoot":"","sources":["../../src/generic/QueryCacheConfig.ts"],"names":[],"mappings":""}