@memberjunction/core 3.4.0 → 4.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/generic/InMemoryLocalStorageProvider.d.ts +1 -1
- package/dist/generic/InMemoryLocalStorageProvider.js +2 -6
- package/dist/generic/InMemoryLocalStorageProvider.js.map +1 -1
- package/dist/generic/QueryCache.d.ts +1 -1
- package/dist/generic/QueryCache.js +6 -10
- package/dist/generic/QueryCache.js.map +1 -1
- package/dist/generic/QueryCacheConfig.js +1 -2
- package/dist/generic/RegisterForStartup.d.ts +2 -2
- package/dist/generic/RegisterForStartup.js +7 -12
- package/dist/generic/RegisterForStartup.js.map +1 -1
- package/dist/generic/applicationInfo.d.ts +3 -3
- package/dist/generic/applicationInfo.js +4 -10
- package/dist/generic/applicationInfo.js.map +1 -1
- package/dist/generic/authEvaluator.d.ts +1 -1
- package/dist/generic/authEvaluator.js +4 -8
- package/dist/generic/authEvaluator.js.map +1 -1
- package/dist/generic/authTypes.js +1 -4
- package/dist/generic/authTypes.js.map +1 -1
- package/dist/generic/baseEngine.d.ts +5 -5
- package/dist/generic/baseEngine.js +51 -56
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEngineRegistry.js +13 -17
- package/dist/generic/baseEngineRegistry.js.map +1 -1
- package/dist/generic/baseEntity.d.ts +171 -5
- package/dist/generic/baseEntity.d.ts.map +1 -1
- package/dist/generic/baseEntity.js +651 -121
- package/dist/generic/baseEntity.js.map +1 -1
- package/dist/generic/baseInfo.js +3 -7
- package/dist/generic/baseInfo.js.map +1 -1
- package/dist/generic/compositeKey.d.ts +2 -2
- package/dist/generic/compositeKey.js +5 -11
- package/dist/generic/compositeKey.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts +2 -2
- package/dist/generic/databaseProviderBase.js +2 -6
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/entityInfo.d.ts +84 -5
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +235 -108
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/explorerNavigationItem.d.ts +1 -1
- package/dist/generic/explorerNavigationItem.js +2 -6
- package/dist/generic/explorerNavigationItem.js.map +1 -1
- package/dist/generic/graphqlTypeNames.d.ts +1 -1
- package/dist/generic/graphqlTypeNames.js +4 -9
- package/dist/generic/graphqlTypeNames.js.map +1 -1
- package/dist/generic/interfaces.d.ts +104 -14
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js +28 -30
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/libraryInfo.d.ts +1 -1
- package/dist/generic/libraryInfo.js +2 -6
- package/dist/generic/libraryInfo.js.map +1 -1
- package/dist/generic/localCacheManager.d.ts +2 -2
- package/dist/generic/localCacheManager.js +44 -48
- package/dist/generic/localCacheManager.js.map +1 -1
- package/dist/generic/logging.d.ts.map +1 -1
- package/dist/generic/logging.js +54 -67
- package/dist/generic/logging.js.map +1 -1
- package/dist/generic/metadata.d.ts +12 -12
- package/dist/generic/metadata.d.ts.map +1 -1
- package/dist/generic/metadata.js +21 -25
- package/dist/generic/metadata.js.map +1 -1
- package/dist/generic/metadataUtil.d.ts +1 -1
- package/dist/generic/metadataUtil.js +3 -7
- package/dist/generic/metadataUtil.js.map +1 -1
- package/dist/generic/providerBase.d.ts +63 -16
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +253 -130
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/queryInfo.d.ts +5 -5
- package/dist/generic/queryInfo.js +21 -30
- package/dist/generic/queryInfo.js.map +1 -1
- package/dist/generic/queryInfoInterfaces.js +1 -2
- package/dist/generic/queryInfoInterfaces.js.map +1 -1
- package/dist/generic/querySQLFilters.js +5 -10
- package/dist/generic/querySQLFilters.js.map +1 -1
- package/dist/generic/runQuery.d.ts +2 -2
- package/dist/generic/runQuery.js +5 -9
- package/dist/generic/runQuery.js.map +1 -1
- package/dist/generic/runQuerySQLFilterImplementations.d.ts +1 -1
- package/dist/generic/runQuerySQLFilterImplementations.js +4 -8
- package/dist/generic/runQuerySQLFilterImplementations.js.map +1 -1
- package/dist/generic/runReport.d.ts +2 -2
- package/dist/generic/runReport.js +5 -9
- package/dist/generic/runReport.js.map +1 -1
- package/dist/generic/securityInfo.d.ts +2 -2
- package/dist/generic/securityInfo.js +10 -20
- package/dist/generic/securityInfo.js.map +1 -1
- package/dist/generic/telemetryManager.js +20 -32
- package/dist/generic/telemetryManager.js.map +1 -1
- package/dist/generic/transactionGroup.d.ts +1 -1
- package/dist/generic/transactionGroup.d.ts.map +1 -1
- package/dist/generic/transactionGroup.js +11 -19
- package/dist/generic/transactionGroup.js.map +1 -1
- package/dist/generic/util.js +15 -31
- package/dist/generic/util.js.map +1 -1
- package/dist/index.d.ts +34 -34
- package/dist/index.js +45 -63
- package/dist/index.js.map +1 -1
- package/dist/views/runView.d.ts +3 -3
- package/dist/views/runView.js +6 -11
- package/dist/views/runView.js.map +1 -1
- package/dist/views/viewInfo.d.ts +3 -3
- package/dist/views/viewInfo.js +10 -17
- package/dist/views/viewInfo.js.map +1 -1
- package/package.json +11 -10
- package/readme.md +871 -1271
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AllMetadata = exports.EntityRecordNameResult = exports.EntityRecordNameInput = exports.EntityMergeOptions = exports.EntityDeleteOptions = exports.EntitySaveOptions = exports.PotentialDuplicateResponse = exports.PotentialDuplicateResult = exports.PotentialDuplicateRequest = exports.PotentialDuplicate = exports.ProviderType = exports.MetadataInfo = exports.ProviderConfigDataBase = void 0;
|
|
4
|
-
const compositeKey_1 = require("./compositeKey");
|
|
1
|
+
import { CompositeKey } from "./compositeKey.js";
|
|
5
2
|
/**
|
|
6
3
|
* Base configuration class for data providers.
|
|
7
4
|
* Contains schema inclusion/exclusion rules and configuration data.
|
|
8
5
|
* Used to configure which database schemas should be included or excluded from metadata scanning.
|
|
9
6
|
*/
|
|
10
|
-
class ProviderConfigDataBase {
|
|
7
|
+
export class ProviderConfigDataBase {
|
|
11
8
|
get Data() {
|
|
12
9
|
return this._data;
|
|
13
10
|
}
|
|
@@ -45,16 +42,14 @@ class ProviderConfigDataBase {
|
|
|
45
42
|
this._ignoreExistingMetadata = ignoreExistingMetadata;
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
|
-
exports.ProviderConfigDataBase = ProviderConfigDataBase;
|
|
49
45
|
/**
|
|
50
46
|
* Information about metadata timestamps and record counts.
|
|
51
47
|
* Used to track when metadata was last updated and how many records exist.
|
|
52
48
|
* Helps determine if local metadata cache is up-to-date with the server.
|
|
53
49
|
*/
|
|
54
|
-
class MetadataInfo {
|
|
50
|
+
export class MetadataInfo {
|
|
55
51
|
}
|
|
56
|
-
|
|
57
|
-
exports.ProviderType = {
|
|
52
|
+
export const ProviderType = {
|
|
58
53
|
Database: 'Database',
|
|
59
54
|
Network: 'Network',
|
|
60
55
|
};
|
|
@@ -63,44 +58,40 @@ exports.ProviderType = {
|
|
|
63
58
|
* Extends CompositeKey to support multi-field primary keys.
|
|
64
59
|
* Used in duplicate detection and record merging operations.
|
|
65
60
|
*/
|
|
66
|
-
class PotentialDuplicate extends
|
|
61
|
+
export class PotentialDuplicate extends CompositeKey {
|
|
67
62
|
}
|
|
68
|
-
exports.PotentialDuplicate = PotentialDuplicate;
|
|
69
63
|
/**
|
|
70
64
|
* Request parameters for finding potential duplicate records.
|
|
71
65
|
* Supports various matching strategies including list-based and document-based comparisons.
|
|
72
66
|
* Can use either a pre-defined list or entity document for duplicate detection.
|
|
73
67
|
*/
|
|
74
|
-
class PotentialDuplicateRequest {
|
|
68
|
+
export class PotentialDuplicateRequest {
|
|
75
69
|
}
|
|
76
|
-
exports.PotentialDuplicateRequest = PotentialDuplicateRequest;
|
|
77
70
|
/**
|
|
78
71
|
* Result of a potential duplicate search for a single record.
|
|
79
72
|
* Contains the record being checked and all potential duplicates found.
|
|
80
73
|
* Includes match details and duplicate run information for tracking.
|
|
81
74
|
*/
|
|
82
|
-
class PotentialDuplicateResult {
|
|
75
|
+
export class PotentialDuplicateResult {
|
|
83
76
|
constructor() {
|
|
84
|
-
this.RecordCompositeKey = new
|
|
77
|
+
this.RecordCompositeKey = new CompositeKey();
|
|
85
78
|
this.Duplicates = [];
|
|
86
79
|
this.DuplicateRunDetailMatchRecordIDs = [];
|
|
87
80
|
}
|
|
88
81
|
}
|
|
89
|
-
exports.PotentialDuplicateResult = PotentialDuplicateResult;
|
|
90
82
|
/**
|
|
91
83
|
* Response wrapper for potential duplicate searches.
|
|
92
84
|
* Includes status information and array of results.
|
|
93
85
|
* Status can be 'Inprogress' for asynchronous operations, 'Success' when complete, or 'Error' on failure.
|
|
94
86
|
*/
|
|
95
|
-
class PotentialDuplicateResponse {
|
|
87
|
+
export class PotentialDuplicateResponse {
|
|
96
88
|
}
|
|
97
|
-
exports.PotentialDuplicateResponse = PotentialDuplicateResponse;
|
|
98
89
|
/**
|
|
99
90
|
* Save options used when saving an entity record.
|
|
100
91
|
* Provides fine-grained control over the save operation including validation,
|
|
101
92
|
* action execution, and conflict detection.
|
|
102
93
|
*/
|
|
103
|
-
class EntitySaveOptions {
|
|
94
|
+
export class EntitySaveOptions {
|
|
104
95
|
constructor() {
|
|
105
96
|
/**
|
|
106
97
|
* If set to true, the record will be saved to the database even if nothing is detected to be "dirty" or changed since the prior load.
|
|
@@ -134,15 +125,21 @@ class EntitySaveOptions {
|
|
|
134
125
|
* @see BaseEntity.DefaultSkipAsyncValidation
|
|
135
126
|
*/
|
|
136
127
|
this.SkipAsyncValidation = undefined;
|
|
128
|
+
/**
|
|
129
|
+
* When true, this entity is being saved as part of an IS-A parent chain
|
|
130
|
+
* initiated by a child entity. Provider behavior:
|
|
131
|
+
* - GraphQLDataProvider: full ORM pipeline runs, skip network call
|
|
132
|
+
* - SQLServerDataProvider: real save using shared ProviderTransaction
|
|
133
|
+
*/
|
|
134
|
+
this.IsParentEntitySave = false;
|
|
137
135
|
}
|
|
138
136
|
}
|
|
139
|
-
exports.EntitySaveOptions = EntitySaveOptions;
|
|
140
137
|
/**
|
|
141
138
|
* Options used when deleting an entity record.
|
|
142
139
|
* Controls whether associated actions and AI operations should be executed
|
|
143
140
|
* during the deletion process.
|
|
144
141
|
*/
|
|
145
|
-
class EntityDeleteOptions {
|
|
142
|
+
export class EntityDeleteOptions {
|
|
146
143
|
constructor() {
|
|
147
144
|
/**
|
|
148
145
|
* If set to true, an AI actions associated with the entity will be skipped during the delete operation
|
|
@@ -157,36 +154,38 @@ class EntityDeleteOptions {
|
|
|
157
154
|
* Subclasses can also override the Delete() method to provide custom logic that will be invoked when ReplayOnly is set to true
|
|
158
155
|
*/
|
|
159
156
|
this.ReplayOnly = false;
|
|
157
|
+
/**
|
|
158
|
+
* When true, this entity is being deleted as part of an IS-A parent chain
|
|
159
|
+
* initiated by a child entity. The child deletes itself first (FK constraint),
|
|
160
|
+
* then cascades deletion to its parent.
|
|
161
|
+
*/
|
|
162
|
+
this.IsParentEntityDelete = false;
|
|
160
163
|
}
|
|
161
164
|
}
|
|
162
|
-
exports.EntityDeleteOptions = EntityDeleteOptions;
|
|
163
165
|
/**
|
|
164
166
|
* Options used when merging entity records.
|
|
165
167
|
* Controls transaction isolation and other merge-specific behaviors.
|
|
166
168
|
*/
|
|
167
|
-
class EntityMergeOptions {
|
|
169
|
+
export class EntityMergeOptions {
|
|
168
170
|
}
|
|
169
|
-
exports.EntityMergeOptions = EntityMergeOptions;
|
|
170
171
|
/**
|
|
171
172
|
* Input parameters for retrieving entity record names.
|
|
172
173
|
* Used for batch operations to get display names for multiple records.
|
|
173
174
|
*/
|
|
174
|
-
class EntityRecordNameInput {
|
|
175
|
+
export class EntityRecordNameInput {
|
|
175
176
|
}
|
|
176
|
-
exports.EntityRecordNameInput = EntityRecordNameInput;
|
|
177
177
|
/**
|
|
178
178
|
* Result of an entity record name lookup operation.
|
|
179
179
|
* Contains the display name and status information for the requested record.
|
|
180
180
|
*/
|
|
181
|
-
class EntityRecordNameResult {
|
|
181
|
+
export class EntityRecordNameResult {
|
|
182
182
|
}
|
|
183
|
-
exports.EntityRecordNameResult = EntityRecordNameResult;
|
|
184
183
|
/**
|
|
185
184
|
* AllMetadata is used to pass all metadata around in a single object for convenience and type safety.
|
|
186
185
|
* Contains all system metadata collections including entities, applications, security, and queries.
|
|
187
186
|
* This class provides a centralized way to access all MemberJunction metadata.
|
|
188
187
|
*/
|
|
189
|
-
class AllMetadata {
|
|
188
|
+
export class AllMetadata {
|
|
190
189
|
constructor() {
|
|
191
190
|
this.CurrentUser = null;
|
|
192
191
|
// Arrays of Metadata below
|
|
@@ -207,5 +206,4 @@ class AllMetadata {
|
|
|
207
206
|
this.AllExplorerNavigationItems = [];
|
|
208
207
|
}
|
|
209
208
|
}
|
|
210
|
-
exports.AllMetadata = AllMetadata;
|
|
211
209
|
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/generic/interfaces.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/generic/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LibraryInfo = void 0;
|
|
4
|
-
const baseInfo_1 = require("./baseInfo");
|
|
1
|
+
import { BaseInfo } from "./baseInfo.js";
|
|
5
2
|
/**
|
|
6
3
|
* Metadata about a single library that's available for code generation or other purposes.
|
|
7
4
|
*/
|
|
8
|
-
class LibraryInfo extends
|
|
5
|
+
export class LibraryInfo extends BaseInfo {
|
|
9
6
|
/**
|
|
10
7
|
* Helper method to get the ExportedItems as an array of strings, parsing the comma delimited string in the ExportedItems property
|
|
11
8
|
*/
|
|
@@ -52,5 +49,4 @@ class LibraryInfo extends baseInfo_1.BaseInfo {
|
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
|
-
exports.LibraryInfo = LibraryInfo;
|
|
56
52
|
//# sourceMappingURL=libraryInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libraryInfo.js","sourceRoot":"","sources":["../../src/generic/libraryInfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"libraryInfo.js","sourceRoot":"","sources":["../../src/generic/libraryInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAQ;IA8BrC;;OAEG;IACH,IAAW,gBAAgB;QACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;;YAEG,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,YAAY,WAAgB,IAAI;QAC5B,KAAK,EAAE,CAAC;QA3CL,OAAE,GAAW,IAAI,CAAC;QACzB;;WAEG;QACI,SAAI,GAAW,IAAI,CAAC;QAC3B;;WAEG;QACI,gBAAW,GAAW,IAAI,CAAC;QAClC;;WAEG;QACI,WAAM,GAAsC,IAAI,CAAC;QACxD;;WAEG;QACI,kBAAa,GAAW,IAAI,CAAC;QACpC;;WAEG;QACI,oBAAe,GAAW,IAAI,CAAC;QACtC;;WAEG;QACI,eAAU,GAAW,IAAI,CAAC;QACjC,mBAAc,GAAS,IAAI,CAAA;QAC3B,mBAAc,GAAS,IAAI,CAAA;QAEnB,sBAAiB,GAAa,IAAI,CAAC;QAgBvC,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseSingleton } from "@memberjunction/global";
|
|
2
|
-
import { AggregateResult, DatasetItemFilterType, DatasetResultType, ILocalStorageProvider } from "./interfaces";
|
|
3
|
-
import { RunViewParams } from "../views/runView";
|
|
2
|
+
import { AggregateResult, DatasetItemFilterType, DatasetResultType, ILocalStorageProvider } from "./interfaces.js";
|
|
3
|
+
import { RunViewParams } from "../views/runView.js";
|
|
4
4
|
/**
|
|
5
5
|
* The type of cache entry: dataset, runview, or runquery
|
|
6
6
|
*/
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.LocalCacheManager = exports.CacheCategory = void 0;
|
|
4
|
-
const global_1 = require("@memberjunction/global");
|
|
5
|
-
const logging_1 = require("./logging");
|
|
1
|
+
import { BaseSingleton } from "@memberjunction/global";
|
|
2
|
+
import { LogError } from "./logging.js";
|
|
6
3
|
// ============================================================================
|
|
7
4
|
// DEFAULT CONFIGURATION
|
|
8
5
|
// ============================================================================
|
|
@@ -20,7 +17,7 @@ const DEFAULT_CONFIG = {
|
|
|
20
17
|
* Storage categories for organizing cache data.
|
|
21
18
|
* These map to IndexedDB object stores or localStorage key prefixes.
|
|
22
19
|
*/
|
|
23
|
-
|
|
20
|
+
export const CacheCategory = {
|
|
24
21
|
/** Cache for RunView results */
|
|
25
22
|
RunViewCache: 'RunViewCache',
|
|
26
23
|
/** Cache for RunQuery results */
|
|
@@ -59,7 +56,7 @@ exports.CacheCategory = {
|
|
|
59
56
|
* const cached = await LocalCacheManager.Instance.GetDataset('MyDataset', filters, keyPrefix);
|
|
60
57
|
* ```
|
|
61
58
|
*/
|
|
62
|
-
class LocalCacheManager extends
|
|
59
|
+
export class LocalCacheManager extends BaseSingleton {
|
|
63
60
|
/**
|
|
64
61
|
* Returns the singleton instance of LocalCacheManager
|
|
65
62
|
*/
|
|
@@ -154,8 +151,8 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
154
151
|
// Check if we need to evict entries
|
|
155
152
|
await this.evictIfNeeded(sizeBytes);
|
|
156
153
|
try {
|
|
157
|
-
await this._storageProvider.SetItem(key, value,
|
|
158
|
-
await this._storageProvider.SetItem(key + '_date', dataset.LatestUpdateDate.toISOString(),
|
|
154
|
+
await this._storageProvider.SetItem(key, value, CacheCategory.DatasetCache);
|
|
155
|
+
await this._storageProvider.SetItem(key + '_date', dataset.LatestUpdateDate.toISOString(), CacheCategory.DatasetCache);
|
|
159
156
|
this.registerEntry({
|
|
160
157
|
key,
|
|
161
158
|
type: 'dataset',
|
|
@@ -169,7 +166,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
169
166
|
});
|
|
170
167
|
}
|
|
171
168
|
catch (e) {
|
|
172
|
-
|
|
169
|
+
LogError(`LocalCacheManager.SetDataset failed: ${e}`);
|
|
173
170
|
}
|
|
174
171
|
}
|
|
175
172
|
/**
|
|
@@ -185,7 +182,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
185
182
|
return null;
|
|
186
183
|
const key = this.buildDatasetKey(name, itemFilters, keyPrefix);
|
|
187
184
|
try {
|
|
188
|
-
const value = await this._storageProvider.GetItem(key,
|
|
185
|
+
const value = await this._storageProvider.GetItem(key, CacheCategory.DatasetCache);
|
|
189
186
|
if (value) {
|
|
190
187
|
this.recordAccess(key);
|
|
191
188
|
this._stats.hits++;
|
|
@@ -193,7 +190,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
193
190
|
}
|
|
194
191
|
}
|
|
195
192
|
catch (e) {
|
|
196
|
-
|
|
193
|
+
LogError(`LocalCacheManager.GetDataset failed: ${e}`);
|
|
197
194
|
}
|
|
198
195
|
this._stats.misses++;
|
|
199
196
|
return null;
|
|
@@ -211,7 +208,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
211
208
|
return null;
|
|
212
209
|
const key = this.buildDatasetKey(name, itemFilters, keyPrefix);
|
|
213
210
|
try {
|
|
214
|
-
const dateStr = await this._storageProvider.GetItem(key + '_date',
|
|
211
|
+
const dateStr = await this._storageProvider.GetItem(key + '_date', CacheCategory.DatasetCache);
|
|
215
212
|
return dateStr ? new Date(dateStr) : null;
|
|
216
213
|
}
|
|
217
214
|
catch (e) {
|
|
@@ -230,12 +227,12 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
230
227
|
return;
|
|
231
228
|
const key = this.buildDatasetKey(name, itemFilters, keyPrefix);
|
|
232
229
|
try {
|
|
233
|
-
await this._storageProvider.Remove(key,
|
|
234
|
-
await this._storageProvider.Remove(key + '_date',
|
|
230
|
+
await this._storageProvider.Remove(key, CacheCategory.DatasetCache);
|
|
231
|
+
await this._storageProvider.Remove(key + '_date', CacheCategory.DatasetCache);
|
|
235
232
|
this.unregisterEntry(key);
|
|
236
233
|
}
|
|
237
234
|
catch (e) {
|
|
238
|
-
|
|
235
|
+
LogError(`LocalCacheManager.ClearDataset failed: ${e}`);
|
|
239
236
|
}
|
|
240
237
|
}
|
|
241
238
|
/**
|
|
@@ -251,7 +248,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
251
248
|
return false;
|
|
252
249
|
const key = this.buildDatasetKey(name, itemFilters, keyPrefix);
|
|
253
250
|
try {
|
|
254
|
-
const val = await this._storageProvider.GetItem(key,
|
|
251
|
+
const val = await this._storageProvider.GetItem(key, CacheCategory.DatasetCache);
|
|
255
252
|
return val != null;
|
|
256
253
|
}
|
|
257
254
|
catch (e) {
|
|
@@ -356,7 +353,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
356
353
|
// Check if we need to evict entries
|
|
357
354
|
await this.evictIfNeeded(sizeBytes);
|
|
358
355
|
try {
|
|
359
|
-
await this._storageProvider.SetItem(fingerprint, value,
|
|
356
|
+
await this._storageProvider.SetItem(fingerprint, value, CacheCategory.RunViewCache);
|
|
360
357
|
this.registerEntry({
|
|
361
358
|
key: fingerprint,
|
|
362
359
|
type: 'runview',
|
|
@@ -379,7 +376,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
379
376
|
});
|
|
380
377
|
}
|
|
381
378
|
catch (e) {
|
|
382
|
-
|
|
379
|
+
LogError(`LocalCacheManager.SetRunViewResult failed: ${e}`);
|
|
383
380
|
}
|
|
384
381
|
}
|
|
385
382
|
/**
|
|
@@ -394,7 +391,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
394
391
|
if (!this._storageProvider || !this._config.enabled)
|
|
395
392
|
return null;
|
|
396
393
|
try {
|
|
397
|
-
const value = await this._storageProvider.GetItem(fingerprint,
|
|
394
|
+
const value = await this._storageProvider.GetItem(fingerprint, CacheCategory.RunViewCache);
|
|
398
395
|
if (value) {
|
|
399
396
|
this.recordAccess(fingerprint);
|
|
400
397
|
this._stats.hits++;
|
|
@@ -414,7 +411,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
414
411
|
}
|
|
415
412
|
}
|
|
416
413
|
catch (e) {
|
|
417
|
-
|
|
414
|
+
LogError(`LocalCacheManager.GetRunViewResult failed: ${e}`);
|
|
418
415
|
}
|
|
419
416
|
this._stats.misses++;
|
|
420
417
|
return null;
|
|
@@ -428,11 +425,11 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
428
425
|
if (!this._storageProvider)
|
|
429
426
|
return;
|
|
430
427
|
try {
|
|
431
|
-
await this._storageProvider.Remove(fingerprint,
|
|
428
|
+
await this._storageProvider.Remove(fingerprint, CacheCategory.RunViewCache);
|
|
432
429
|
this.unregisterEntry(fingerprint);
|
|
433
430
|
}
|
|
434
431
|
catch (e) {
|
|
435
|
-
|
|
432
|
+
LogError(`LocalCacheManager.InvalidateRunViewResult failed: ${e}`);
|
|
436
433
|
}
|
|
437
434
|
}
|
|
438
435
|
/**
|
|
@@ -510,7 +507,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
510
507
|
return result;
|
|
511
508
|
}
|
|
512
509
|
catch (e) {
|
|
513
|
-
|
|
510
|
+
LogError(`LocalCacheManager.ApplyDifferentialUpdate failed: ${e}`);
|
|
514
511
|
return null;
|
|
515
512
|
}
|
|
516
513
|
}
|
|
@@ -539,7 +536,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
539
536
|
// Get the primary key value from the entity
|
|
540
537
|
const pkValue = this.extractPrimaryKeyString(entityData, primaryKeyFieldName);
|
|
541
538
|
if (!pkValue) {
|
|
542
|
-
|
|
539
|
+
LogError(`LocalCacheManager.UpsertSingleEntity: Could not extract primary key from entity data`);
|
|
543
540
|
return false;
|
|
544
541
|
}
|
|
545
542
|
// Build a map of existing records by primary key
|
|
@@ -562,7 +559,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
562
559
|
};
|
|
563
560
|
const value = JSON.stringify(data);
|
|
564
561
|
const sizeBytes = this.estimateSize(value);
|
|
565
|
-
await this._storageProvider.SetItem(fingerprint, value,
|
|
562
|
+
await this._storageProvider.SetItem(fingerprint, value, CacheCategory.RunViewCache);
|
|
566
563
|
// Update registry entry with derived rowCount
|
|
567
564
|
const existingEntry = this._registry.get(fingerprint);
|
|
568
565
|
if (existingEntry) {
|
|
@@ -575,7 +572,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
575
572
|
return true;
|
|
576
573
|
}
|
|
577
574
|
catch (e) {
|
|
578
|
-
|
|
575
|
+
LogError(`LocalCacheManager.UpsertSingleEntity failed: ${e}`);
|
|
579
576
|
return false;
|
|
580
577
|
}
|
|
581
578
|
}
|
|
@@ -624,7 +621,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
624
621
|
};
|
|
625
622
|
const value = JSON.stringify(data);
|
|
626
623
|
const sizeBytes = this.estimateSize(value);
|
|
627
|
-
await this._storageProvider.SetItem(fingerprint, value,
|
|
624
|
+
await this._storageProvider.SetItem(fingerprint, value, CacheCategory.RunViewCache);
|
|
628
625
|
// Update registry entry with derived rowCount
|
|
629
626
|
const existingEntry = this._registry.get(fingerprint);
|
|
630
627
|
if (existingEntry) {
|
|
@@ -637,7 +634,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
637
634
|
return true;
|
|
638
635
|
}
|
|
639
636
|
catch (e) {
|
|
640
|
-
|
|
637
|
+
LogError(`LocalCacheManager.RemoveSingleEntity failed: ${e}`);
|
|
641
638
|
return false;
|
|
642
639
|
}
|
|
643
640
|
}
|
|
@@ -706,11 +703,11 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
706
703
|
}
|
|
707
704
|
for (const key of toRemove) {
|
|
708
705
|
try {
|
|
709
|
-
await this._storageProvider.Remove(key,
|
|
706
|
+
await this._storageProvider.Remove(key, CacheCategory.RunViewCache);
|
|
710
707
|
this._registry.delete(key);
|
|
711
708
|
}
|
|
712
709
|
catch (e) {
|
|
713
|
-
|
|
710
|
+
LogError(`LocalCacheManager.InvalidateEntityCaches failed for key ${key}: ${e}`);
|
|
714
711
|
}
|
|
715
712
|
}
|
|
716
713
|
await this.persistRegistry();
|
|
@@ -766,7 +763,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
766
763
|
const now = Date.now();
|
|
767
764
|
const expiresAt = ttlMs ? now + ttlMs : undefined;
|
|
768
765
|
try {
|
|
769
|
-
await this._storageProvider.SetItem(fingerprint, value,
|
|
766
|
+
await this._storageProvider.SetItem(fingerprint, value, CacheCategory.RunQueryCache);
|
|
770
767
|
this.registerEntry({
|
|
771
768
|
key: fingerprint,
|
|
772
769
|
type: 'runquery',
|
|
@@ -782,7 +779,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
782
779
|
});
|
|
783
780
|
}
|
|
784
781
|
catch (e) {
|
|
785
|
-
|
|
782
|
+
LogError(`LocalCacheManager.SetRunQueryResult failed: ${e}`);
|
|
786
783
|
}
|
|
787
784
|
}
|
|
788
785
|
/**
|
|
@@ -803,7 +800,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
803
800
|
return null;
|
|
804
801
|
}
|
|
805
802
|
try {
|
|
806
|
-
const value = await this._storageProvider.GetItem(fingerprint,
|
|
803
|
+
const value = await this._storageProvider.GetItem(fingerprint, CacheCategory.RunQueryCache);
|
|
807
804
|
if (value) {
|
|
808
805
|
this.recordAccess(fingerprint);
|
|
809
806
|
this._stats.hits++;
|
|
@@ -818,7 +815,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
818
815
|
}
|
|
819
816
|
}
|
|
820
817
|
catch (e) {
|
|
821
|
-
|
|
818
|
+
LogError(`LocalCacheManager.GetRunQueryResult failed: ${e}`);
|
|
822
819
|
}
|
|
823
820
|
this._stats.misses++;
|
|
824
821
|
return null;
|
|
@@ -832,11 +829,11 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
832
829
|
if (!this._storageProvider)
|
|
833
830
|
return;
|
|
834
831
|
try {
|
|
835
|
-
await this._storageProvider.Remove(fingerprint,
|
|
832
|
+
await this._storageProvider.Remove(fingerprint, CacheCategory.RunQueryCache);
|
|
836
833
|
this.unregisterEntry(fingerprint);
|
|
837
834
|
}
|
|
838
835
|
catch (e) {
|
|
839
|
-
|
|
836
|
+
LogError(`LocalCacheManager.InvalidateRunQueryResult failed: ${e}`);
|
|
840
837
|
}
|
|
841
838
|
}
|
|
842
839
|
/**
|
|
@@ -857,11 +854,11 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
857
854
|
}
|
|
858
855
|
for (const key of toRemove) {
|
|
859
856
|
try {
|
|
860
|
-
await this._storageProvider.Remove(key,
|
|
857
|
+
await this._storageProvider.Remove(key, CacheCategory.RunQueryCache);
|
|
861
858
|
this._registry.delete(key);
|
|
862
859
|
}
|
|
863
860
|
catch (e) {
|
|
864
|
-
|
|
861
|
+
LogError(`LocalCacheManager.InvalidateQueryCaches failed for key ${key}: ${e}`);
|
|
865
862
|
}
|
|
866
863
|
}
|
|
867
864
|
await this.persistRegistry();
|
|
@@ -954,7 +951,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
954
951
|
this._registry.delete(entry.key);
|
|
955
952
|
}
|
|
956
953
|
catch (e) {
|
|
957
|
-
|
|
954
|
+
LogError(`LocalCacheManager.ClearByType failed for key ${entry.key}: ${e}`);
|
|
958
955
|
}
|
|
959
956
|
}
|
|
960
957
|
await this.persistRegistry();
|
|
@@ -978,7 +975,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
978
975
|
}
|
|
979
976
|
}
|
|
980
977
|
catch (e) {
|
|
981
|
-
|
|
978
|
+
LogError(`LocalCacheManager.ClearAll failed for key ${entry.key}: ${e}`);
|
|
982
979
|
}
|
|
983
980
|
}
|
|
984
981
|
this._registry.clear();
|
|
@@ -1001,13 +998,13 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
1001
998
|
getCategoryForType(type) {
|
|
1002
999
|
switch (type) {
|
|
1003
1000
|
case 'runview':
|
|
1004
|
-
return
|
|
1001
|
+
return CacheCategory.RunViewCache;
|
|
1005
1002
|
case 'runquery':
|
|
1006
|
-
return
|
|
1003
|
+
return CacheCategory.RunQueryCache;
|
|
1007
1004
|
case 'dataset':
|
|
1008
|
-
return
|
|
1005
|
+
return CacheCategory.DatasetCache;
|
|
1009
1006
|
default:
|
|
1010
|
-
return
|
|
1007
|
+
return CacheCategory.Default;
|
|
1011
1008
|
}
|
|
1012
1009
|
}
|
|
1013
1010
|
/**
|
|
@@ -1052,7 +1049,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
1052
1049
|
if (!this._storageProvider)
|
|
1053
1050
|
return;
|
|
1054
1051
|
try {
|
|
1055
|
-
const stored = await this._storageProvider.GetItem(this.REGISTRY_KEY,
|
|
1052
|
+
const stored = await this._storageProvider.GetItem(this.REGISTRY_KEY, CacheCategory.Metadata);
|
|
1056
1053
|
if (stored) {
|
|
1057
1054
|
const parsed = JSON.parse(stored);
|
|
1058
1055
|
this._registry = new Map(parsed.map(e => [e.key, e]));
|
|
@@ -1081,7 +1078,7 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
1081
1078
|
return;
|
|
1082
1079
|
try {
|
|
1083
1080
|
const data = JSON.stringify(this.GetAllEntries());
|
|
1084
|
-
await this._storageProvider.SetItem(this.REGISTRY_KEY, data,
|
|
1081
|
+
await this._storageProvider.SetItem(this.REGISTRY_KEY, data, CacheCategory.Metadata);
|
|
1085
1082
|
}
|
|
1086
1083
|
catch (e) {
|
|
1087
1084
|
// Ignore persistence errors - cache is still functional
|
|
@@ -1156,5 +1153,4 @@ class LocalCacheManager extends global_1.BaseSingleton {
|
|
|
1156
1153
|
await this.persistRegistry();
|
|
1157
1154
|
}
|
|
1158
1155
|
}
|
|
1159
|
-
exports.LocalCacheManager = LocalCacheManager;
|
|
1160
1156
|
//# sourceMappingURL=localCacheManager.js.map
|