@memberjunction/global 5.0.0 → 5.1.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.
- package/dist/DynamicPackageLoader.d.ts +61 -0
- package/dist/DynamicPackageLoader.d.ts.map +1 -0
- package/dist/DynamicPackageLoader.js +56 -0
- package/dist/DynamicPackageLoader.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/Core.d.ts +0 -29
- package/dist/Core.d.ts.map +0 -1
- package/dist/Core.js +0 -58
- package/dist/Core.js.map +0 -1
- package/dist/generic/QueryCache.d.ts +0 -85
- package/dist/generic/QueryCache.d.ts.map +0 -1
- package/dist/generic/QueryCache.js +0 -198
- package/dist/generic/QueryCache.js.map +0 -1
- package/dist/generic/QueryCacheConfig.d.ts +0 -72
- package/dist/generic/QueryCacheConfig.d.ts.map +0 -1
- package/dist/generic/QueryCacheConfig.js +0 -3
- package/dist/generic/QueryCacheConfig.js.map +0 -1
- package/dist/generic/applicationInfo.d.ts +0 -138
- package/dist/generic/applicationInfo.d.ts.map +0 -1
- package/dist/generic/applicationInfo.js +0 -177
- package/dist/generic/applicationInfo.js.map +0 -1
- package/dist/generic/authEvaluator.d.ts +0 -25
- package/dist/generic/authEvaluator.d.ts.map +0 -1
- package/dist/generic/authEvaluator.js +0 -49
- package/dist/generic/authEvaluator.js.map +0 -1
- package/dist/generic/authTypes.d.ts +0 -193
- package/dist/generic/authTypes.d.ts.map +0 -1
- package/dist/generic/authTypes.js +0 -19
- package/dist/generic/authTypes.js.map +0 -1
- package/dist/generic/baseEngine.d.ts +0 -260
- package/dist/generic/baseEngine.d.ts.map +0 -1
- package/dist/generic/baseEngine.js +0 -510
- package/dist/generic/baseEngine.js.map +0 -1
- package/dist/generic/baseEntity.d.ts +0 -691
- package/dist/generic/baseEntity.d.ts.map +0 -1
- package/dist/generic/baseEntity.js +0 -1688
- package/dist/generic/baseEntity.js.map +0 -1
- package/dist/generic/baseInfo.d.ts +0 -24
- package/dist/generic/baseInfo.d.ts.map +0 -1
- package/dist/generic/baseInfo.js +0 -53
- package/dist/generic/baseInfo.js.map +0 -1
- package/dist/generic/compositeKey.d.ts +0 -206
- package/dist/generic/compositeKey.d.ts.map +0 -1
- package/dist/generic/compositeKey.js +0 -412
- package/dist/generic/compositeKey.js.map +0 -1
- package/dist/generic/databaseProviderBase.d.ts +0 -46
- package/dist/generic/databaseProviderBase.d.ts.map +0 -1
- package/dist/generic/databaseProviderBase.js +0 -14
- package/dist/generic/databaseProviderBase.js.map +0 -1
- package/dist/generic/entityInfo.d.ts +0 -983
- package/dist/generic/entityInfo.d.ts.map +0 -1
- package/dist/generic/entityInfo.js +0 -1401
- package/dist/generic/entityInfo.js.map +0 -1
- package/dist/generic/explorerNavigationItem.d.ts +0 -20
- package/dist/generic/explorerNavigationItem.d.ts.map +0 -1
- package/dist/generic/explorerNavigationItem.js +0 -29
- package/dist/generic/explorerNavigationItem.js.map +0 -1
- package/dist/generic/interfaces.d.ts +0 -610
- package/dist/generic/interfaces.d.ts.map +0 -1
- package/dist/generic/interfaces.js +0 -211
- package/dist/generic/interfaces.js.map +0 -1
- package/dist/generic/libraryInfo.d.ts +0 -40
- package/dist/generic/libraryInfo.d.ts.map +0 -1
- package/dist/generic/libraryInfo.js +0 -56
- package/dist/generic/libraryInfo.js.map +0 -1
- package/dist/generic/logging.d.ts +0 -179
- package/dist/generic/logging.d.ts.map +0 -1
- package/dist/generic/logging.js +0 -382
- package/dist/generic/logging.js.map +0 -1
- package/dist/generic/metadata.d.ts +0 -305
- package/dist/generic/metadata.d.ts.map +0 -1
- package/dist/generic/metadata.js +0 -454
- package/dist/generic/metadata.js.map +0 -1
- package/dist/generic/metadataUtil.d.ts +0 -8
- package/dist/generic/metadataUtil.d.ts.map +0 -1
- package/dist/generic/metadataUtil.js +0 -36
- package/dist/generic/metadataUtil.js.map +0 -1
- package/dist/generic/providerBase.d.ts +0 -546
- package/dist/generic/providerBase.d.ts.map +0 -1
- package/dist/generic/providerBase.js +0 -999
- package/dist/generic/providerBase.js.map +0 -1
- package/dist/generic/queryInfo.d.ts +0 -460
- package/dist/generic/queryInfo.d.ts.map +0 -1
- package/dist/generic/queryInfo.js +0 -633
- package/dist/generic/queryInfo.js.map +0 -1
- package/dist/generic/querySQLFilters.d.ts +0 -54
- package/dist/generic/querySQLFilters.d.ts.map +0 -1
- package/dist/generic/querySQLFilters.js +0 -84
- package/dist/generic/querySQLFilters.js.map +0 -1
- package/dist/generic/runQuery.d.ts +0 -96
- package/dist/generic/runQuery.d.ts.map +0 -1
- package/dist/generic/runQuery.js +0 -66
- package/dist/generic/runQuery.js.map +0 -1
- package/dist/generic/runQuerySQLFilterImplementations.d.ts +0 -51
- package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +0 -1
- package/dist/generic/runQuerySQLFilterImplementations.js +0 -238
- package/dist/generic/runQuerySQLFilterImplementations.js.map +0 -1
- package/dist/generic/runReport.d.ts +0 -25
- package/dist/generic/runReport.d.ts.map +0 -1
- package/dist/generic/runReport.js +0 -42
- package/dist/generic/runReport.js.map +0 -1
- package/dist/generic/securityInfo.d.ts +0 -355
- package/dist/generic/securityInfo.d.ts.map +0 -1
- package/dist/generic/securityInfo.js +0 -425
- package/dist/generic/securityInfo.js.map +0 -1
- package/dist/generic/transactionGroup.d.ts +0 -184
- package/dist/generic/transactionGroup.d.ts.map +0 -1
- package/dist/generic/transactionGroup.js +0 -357
- package/dist/generic/transactionGroup.js.map +0 -1
- package/dist/generic/util.d.ts +0 -81
- package/dist/generic/util.d.ts.map +0 -1
- package/dist/generic/util.js +0 -301
- package/dist/generic/util.js.map +0 -1
- package/dist/views/runView.d.ts +0 -150
- package/dist/views/runView.d.ts.map +0 -1
- package/dist/views/runView.js +0 -100
- package/dist/views/runView.js.map +0 -1
- package/dist/views/viewInfo.d.ts +0 -121
- package/dist/views/viewInfo.d.ts.map +0 -1
- package/dist/views/viewInfo.js +0 -182
- package/dist/views/viewInfo.js.map +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Package Loading
|
|
3
|
+
*
|
|
4
|
+
* Provides runtime dynamic import capabilities for MJ Open App packages.
|
|
5
|
+
* Used by MJAPI startup to load server-side app bootstrap packages that
|
|
6
|
+
* register their classes with the ClassFactory via @RegisterClass decorators.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Describes a package to be dynamically imported at runtime.
|
|
10
|
+
* Typically read from the `dynamicPackages.server` section of mj.config.cjs.
|
|
11
|
+
*/
|
|
12
|
+
export interface DynamicPackageLoad {
|
|
13
|
+
/** npm package name to dynamically import */
|
|
14
|
+
PackageName: string;
|
|
15
|
+
/** Named export to call after import (e.g., 'LoadAcmeCRMServer') */
|
|
16
|
+
StartupExport: string;
|
|
17
|
+
/** Open App name this package belongs to (for tracking) */
|
|
18
|
+
AppName: string;
|
|
19
|
+
/** Whether this package should be loaded. Allows disabling without removing. */
|
|
20
|
+
Enabled: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Result of attempting to dynamically load a single package.
|
|
24
|
+
*/
|
|
25
|
+
export interface DynamicLoadResult {
|
|
26
|
+
/** The package that was loaded (or failed to load) */
|
|
27
|
+
PackageName: string;
|
|
28
|
+
/** Whether the package was loaded and its startup export called successfully */
|
|
29
|
+
Success: boolean;
|
|
30
|
+
/** Error message if the load failed */
|
|
31
|
+
Error?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Utility class for dynamically loading npm packages at runtime.
|
|
35
|
+
*
|
|
36
|
+
* Used during MJAPI startup to load Open App server-side bootstrap packages.
|
|
37
|
+
* Each package is loaded in isolation — a failure in one package does not
|
|
38
|
+
* prevent others from loading.
|
|
39
|
+
*/
|
|
40
|
+
export declare class DynamicPackageLoader {
|
|
41
|
+
/**
|
|
42
|
+
* Loads all enabled dynamic packages in parallel for better performance.
|
|
43
|
+
* For each package:
|
|
44
|
+
* 1. Skips if `Enabled` is false
|
|
45
|
+
* 2. Dynamically imports the package via `await import()`
|
|
46
|
+
* 3. Calls the named `StartupExport` function if it exists
|
|
47
|
+
* 4. Records success or failure
|
|
48
|
+
*
|
|
49
|
+
* Errors are isolated per-package — a broken package does not crash the server.
|
|
50
|
+
* All enabled packages are loaded concurrently using Promise.all().
|
|
51
|
+
*
|
|
52
|
+
* @param packages - Array of packages to load
|
|
53
|
+
* @returns Array of results indicating success/failure for each package
|
|
54
|
+
*/
|
|
55
|
+
static LoadPackages(packages: DynamicPackageLoad[]): Promise<DynamicLoadResult[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Attempts to dynamically import a single package and call its startup export.
|
|
58
|
+
*/
|
|
59
|
+
private static LoadSinglePackage;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=DynamicPackageLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicPackageLoader.d.ts","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IAEpB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAEhB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;IAEjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;WACU,YAAY,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKvF;;OAEG;mBACkB,iBAAiB;CAqBzC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Package Loading
|
|
3
|
+
*
|
|
4
|
+
* Provides runtime dynamic import capabilities for MJ Open App packages.
|
|
5
|
+
* Used by MJAPI startup to load server-side app bootstrap packages that
|
|
6
|
+
* register their classes with the ClassFactory via @RegisterClass decorators.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Utility class for dynamically loading npm packages at runtime.
|
|
10
|
+
*
|
|
11
|
+
* Used during MJAPI startup to load Open App server-side bootstrap packages.
|
|
12
|
+
* Each package is loaded in isolation — a failure in one package does not
|
|
13
|
+
* prevent others from loading.
|
|
14
|
+
*/
|
|
15
|
+
export class DynamicPackageLoader {
|
|
16
|
+
/**
|
|
17
|
+
* Loads all enabled dynamic packages in parallel for better performance.
|
|
18
|
+
* For each package:
|
|
19
|
+
* 1. Skips if `Enabled` is false
|
|
20
|
+
* 2. Dynamically imports the package via `await import()`
|
|
21
|
+
* 3. Calls the named `StartupExport` function if it exists
|
|
22
|
+
* 4. Records success or failure
|
|
23
|
+
*
|
|
24
|
+
* Errors are isolated per-package — a broken package does not crash the server.
|
|
25
|
+
* All enabled packages are loaded concurrently using Promise.all().
|
|
26
|
+
*
|
|
27
|
+
* @param packages - Array of packages to load
|
|
28
|
+
* @returns Array of results indicating success/failure for each package
|
|
29
|
+
*/
|
|
30
|
+
static async LoadPackages(packages) {
|
|
31
|
+
const enabledPackages = packages.filter(p => p.Enabled);
|
|
32
|
+
return Promise.all(enabledPackages.map(pkg => DynamicPackageLoader.LoadSinglePackage(pkg)));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Attempts to dynamically import a single package and call its startup export.
|
|
36
|
+
*/
|
|
37
|
+
static async LoadSinglePackage(pkg) {
|
|
38
|
+
try {
|
|
39
|
+
const module = await import(pkg.PackageName);
|
|
40
|
+
if (pkg.StartupExport && typeof module[pkg.StartupExport] === 'function') {
|
|
41
|
+
module[pkg.StartupExport]();
|
|
42
|
+
}
|
|
43
|
+
return { PackageName: pkg.PackageName, Success: true };
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
47
|
+
console.error(`Failed to load dynamic package ${pkg.PackageName}: ${errorMessage}`);
|
|
48
|
+
return {
|
|
49
|
+
PackageName: pkg.PackageName,
|
|
50
|
+
Success: false,
|
|
51
|
+
Error: errorMessage
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=DynamicPackageLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicPackageLoader.js","sourceRoot":"","sources":["../src/DynamicPackageLoader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkCH;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAC7B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAA8B;QACpD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAuB;QAC1D,IAAI,CAAC;YACD,MAAM,MAAM,GAA4B,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAA4B,CAAC;YAEjG,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,UAAU,EAAE,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAgB,EAAE,CAAC;YAChD,CAAC;YAED,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,KAAc,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC,CAAC;YAEpF,OAAO;gBACH,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY;aACtB,CAAC;QACN,CAAC;IACL,CAAC;CACJ"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAMjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAMjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export * from './EncryptionUtils.js';
|
|
|
18
18
|
// Export the main classes
|
|
19
19
|
export * from './Global.js';
|
|
20
20
|
export * from './RegisterClass.js';
|
|
21
|
+
export * from './DynamicPackageLoader.js';
|
|
21
22
|
// NOTE: RegisterForStartup has moved to @memberjunction/core
|
|
22
23
|
// Import from there instead of here
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAEjC,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AAEjC,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AAEtC,6DAA6D;AAC7D,oCAAoC"}
|
package/package.json
CHANGED
package/dist/Core.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export * from './generic/metadata.js';
|
|
2
|
-
export * from './generic/baseInfo.js';
|
|
3
|
-
export * from './generic/baseEngine.js';
|
|
4
|
-
export * from './views/runView.js';
|
|
5
|
-
export * from './generic/runReport.js';
|
|
6
|
-
export * from './generic/runQuery.js';
|
|
7
|
-
export * from './generic/interfaces.js';
|
|
8
|
-
export * from './generic/baseEntity.js';
|
|
9
|
-
export * from './generic/applicationInfo.js';
|
|
10
|
-
export * from './generic/providerBase.js';
|
|
11
|
-
export * from './generic/entityInfo.js';
|
|
12
|
-
export * from './generic/securityInfo.js';
|
|
13
|
-
export * from './generic/transactionGroup.js';
|
|
14
|
-
export * from './generic/util.js';
|
|
15
|
-
export * from './generic/logging.js';
|
|
16
|
-
export * from './generic/queryInfo.js';
|
|
17
|
-
export * from './generic/querySQLFilters.js';
|
|
18
|
-
export * from './generic/runQuerySQLFilterImplementations.js';
|
|
19
|
-
export * from './generic/libraryInfo.js';
|
|
20
|
-
export * from './generic/QueryCacheConfig.js';
|
|
21
|
-
export * from './generic/QueryCache.js';
|
|
22
|
-
export * from './generic/explorerNavigationItem.js';
|
|
23
|
-
export * from './generic/compositeKey.js';
|
|
24
|
-
export * from './generic/authEvaluator.js';
|
|
25
|
-
export * from './generic/metadataUtil.js';
|
|
26
|
-
export * from './generic/authTypes.js';
|
|
27
|
-
export * from './generic/databaseProviderBase.js';
|
|
28
|
-
export declare function SetProvider(provider: any): void;
|
|
29
|
-
//# sourceMappingURL=Core.d.ts.map
|
package/dist/Core.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":"AAMA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,gCAAgC,CAAC;AAE/C,wBAAgB,WAAW,CAAC,QAAQ,KAAA,QAMnC"}
|
package/dist/Core.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.SetProvider = void 0;
|
|
18
|
-
const baseEntity_1 = require("./generic/baseEntity.js");
|
|
19
|
-
const metadata_1 = require("./generic/metadata.js");
|
|
20
|
-
const runQuery_1 = require("./generic/runQuery.js");
|
|
21
|
-
const runReport_1 = require("./generic/runReport.js");
|
|
22
|
-
const runView_1 = require("./views/runView.js");
|
|
23
|
-
__exportStar(require("./generic/metadata.js"), exports);
|
|
24
|
-
__exportStar(require("./generic/baseInfo.js"), exports);
|
|
25
|
-
__exportStar(require("./generic/baseEngine.js"), exports);
|
|
26
|
-
__exportStar(require("./views/runView.js"), exports);
|
|
27
|
-
__exportStar(require("./generic/runReport.js"), exports);
|
|
28
|
-
__exportStar(require("./generic/runQuery.js"), exports);
|
|
29
|
-
__exportStar(require("./generic/interfaces.js"), exports);
|
|
30
|
-
__exportStar(require("./generic/baseEntity.js"), exports);
|
|
31
|
-
__exportStar(require("./generic/applicationInfo.js"), exports);
|
|
32
|
-
__exportStar(require("./generic/providerBase.js"), exports);
|
|
33
|
-
__exportStar(require("./generic/entityInfo.js"), exports);
|
|
34
|
-
__exportStar(require("./generic/securityInfo.js"), exports);
|
|
35
|
-
__exportStar(require("./generic/transactionGroup.js"), exports);
|
|
36
|
-
__exportStar(require("./generic/util.js"), exports);
|
|
37
|
-
__exportStar(require("./generic/logging.js"), exports);
|
|
38
|
-
__exportStar(require("./generic/queryInfo.js"), exports);
|
|
39
|
-
__exportStar(require("./generic/querySQLFilters.js"), exports);
|
|
40
|
-
__exportStar(require("./generic/runQuerySQLFilterImplementations.js"), exports);
|
|
41
|
-
__exportStar(require("./generic/libraryInfo.js"), exports);
|
|
42
|
-
__exportStar(require("./generic/QueryCacheConfig.js"), exports);
|
|
43
|
-
__exportStar(require("./generic/QueryCache.js"), exports);
|
|
44
|
-
__exportStar(require("./generic/explorerNavigationItem.js"), exports);
|
|
45
|
-
__exportStar(require("./generic/compositeKey.js"), exports);
|
|
46
|
-
__exportStar(require("./generic/authEvaluator.js"), exports);
|
|
47
|
-
__exportStar(require("./generic/metadataUtil.js"), exports);
|
|
48
|
-
__exportStar(require("./generic/authTypes.js"), exports);
|
|
49
|
-
__exportStar(require("./generic/databaseProviderBase.js"), exports);
|
|
50
|
-
function SetProvider(provider) {
|
|
51
|
-
metadata_1.Metadata.Provider = provider;
|
|
52
|
-
baseEntity_1.BaseEntity.Provider = provider;
|
|
53
|
-
runView_1.RunView.Provider = provider;
|
|
54
|
-
runReport_1.RunReport.Provider = provider;
|
|
55
|
-
runQuery_1.RunQuery.Provider = provider;
|
|
56
|
-
}
|
|
57
|
-
exports.SetProvider = SetProvider;
|
|
58
|
-
//# sourceMappingURL=Core.js.map
|
package/dist/Core.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Core.js","sourceRoot":"","sources":["../src/Core.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAkD;AAClD,iDAA8C;AAC9C,iDAA8C;AAC9C,mDAAgD;AAChD,6CAA0C;AAE1C,qDAAmC;AACnC,qDAAmC;AACnC,uDAAqC;AACrC,kDAAgC;AAChC,sDAAoC;AACpC,qDAAmC;AACnC,uDAAqC;AACrC,uDAAqC;AACrC,4DAA0C;AAC1C,yDAAuC;AACvC,uDAAqC;AACrC,yDAAuC;AACvC,6DAA2C;AAC3C,iDAA+B;AAC/B,oDAAkC;AAClC,sDAAoC;AACpC,4DAA0C;AAC1C,6EAA2D;AAC3D,wDAAsC;AACtC,6DAA2C;AAC3C,uDAAqC;AACrC,mEAAiD;AACjD,yDAAuC;AACvC,0DAAwC;AACxC,yDAAuC;AACvC,sDAAoC;AAEpC,iEAA+C;AAE/C,SAAgB,WAAW,CAAC,QAAQ;IAClC,mBAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,uBAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,iBAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,qBAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,mBAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,CAAC;AAND,kCAMC"}
|
|
@@ -1,85 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,198 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryCache.js","sourceRoot":"","sources":["../../src/generic/QueryCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QueryCacheConfig.js","sourceRoot":"","sources":["../../src/generic/QueryCacheConfig.ts"],"names":[],"mappings":""}
|