@memberjunction/core-entities 5.48.0 → 5.50.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 (42) hide show
  1. package/dist/custom/MJListEntityExtended.d.ts +27 -0
  2. package/dist/custom/MJListEntityExtended.d.ts.map +1 -0
  3. package/dist/custom/MJListEntityExtended.js +52 -0
  4. package/dist/custom/MJListEntityExtended.js.map +1 -0
  5. package/dist/custom/Permissions/BaseShareEntityExtended.d.ts.map +1 -1
  6. package/dist/custom/Permissions/BaseShareEntityExtended.js +6 -1
  7. package/dist/custom/Permissions/BaseShareEntityExtended.js.map +1 -1
  8. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.d.ts.map +1 -1
  9. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js +6 -4
  10. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js.map +1 -1
  11. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.d.ts.map +1 -1
  12. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js +4 -2
  13. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js.map +1 -1
  14. package/dist/engines/PermissionEngine.d.ts +14 -0
  15. package/dist/engines/PermissionEngine.d.ts.map +1 -1
  16. package/dist/engines/PermissionEngine.js +30 -34
  17. package/dist/engines/PermissionEngine.js.map +1 -1
  18. package/dist/engines/UserInfoEngine.d.ts +13 -0
  19. package/dist/engines/UserInfoEngine.d.ts.map +1 -1
  20. package/dist/engines/UserInfoEngine.js +23 -5
  21. package/dist/engines/UserInfoEngine.js.map +1 -1
  22. package/dist/engines/artifacts.d.ts +87 -12
  23. package/dist/engines/artifacts.d.ts.map +1 -1
  24. package/dist/engines/artifacts.js +140 -35
  25. package/dist/engines/artifacts.js.map +1 -1
  26. package/dist/engines/conversations.d.ts +128 -0
  27. package/dist/engines/conversations.d.ts.map +1 -1
  28. package/dist/engines/conversations.js +152 -2
  29. package/dist/engines/conversations.js.map +1 -1
  30. package/dist/engines/knowledgeHubMetadata.d.ts +26 -4
  31. package/dist/engines/knowledgeHubMetadata.d.ts.map +1 -1
  32. package/dist/engines/knowledgeHubMetadata.js +70 -16
  33. package/dist/engines/knowledgeHubMetadata.js.map +1 -1
  34. package/dist/generated/entity_subclasses.d.ts +1612 -109
  35. package/dist/generated/entity_subclasses.d.ts.map +1 -1
  36. package/dist/generated/entity_subclasses.js +2021 -174
  37. package/dist/generated/entity_subclasses.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/package.json +6 -6
@@ -1,5 +1,5 @@
1
1
  import { BaseEngine } from "@memberjunction/core";
2
- import { UUIDsEqual } from "@memberjunction/global";
2
+ import { NormalizeUUID } from "@memberjunction/global";
3
3
  /**
4
4
  * Caches Knowledge Hub metadata: entity documents, vector indexes, vector databases,
5
5
  * content sources, content types, content source types, and content file types.
@@ -7,15 +7,6 @@ import { UUIDsEqual } from "@memberjunction/global";
7
7
  * caching and entity-event auto-refresh.
8
8
  */
9
9
  export class KnowledgeHubMetadataEngine extends BaseEngine {
10
- constructor() {
11
- super(...arguments);
12
- this._entityDocuments = [];
13
- this._vectorIndexes = [];
14
- this._contentSources = [];
15
- this._contentTypes = [];
16
- this._contentSourceTypes = [];
17
- this._contentFileTypes = [];
18
- }
19
10
  /**
20
11
  * Returns the global instance of the class. This is a singleton class, so there
21
12
  * is only one instance of it in the application. Do not directly create new instances
@@ -24,6 +15,25 @@ export class KnowledgeHubMetadataEngine extends BaseEngine {
24
15
  static get Instance() {
25
16
  return super.getInstance();
26
17
  }
18
+ constructor() {
19
+ super();
20
+ this._entityDocuments = [];
21
+ this._vectorIndexes = [];
22
+ this._contentSources = [];
23
+ this._contentTypes = [];
24
+ this._contentSourceTypes = [];
25
+ this._contentFileTypes = [];
26
+ /**
27
+ * Lazily-built `NormalizeUUID(ID) → row` indexes, one per cached array (keyed by array name),
28
+ * powering the O(1) `Get…ByID` helpers. Cleared wholesale on any {@link DataChange$} emission
29
+ * (see the constructor) so entries never go stale as the underlying caches mutate.
30
+ */
31
+ this._idIndexes = new Map();
32
+ // Any data change (add/update/delete or full refresh, on any cached array) invalidates the
33
+ // by-id indexes wholesale — the cheapest correct strategy, since NotifyDataChange fires on
34
+ // every BaseEngine mutation path. Lazily rebuilt on the next lookup.
35
+ this.DataChange$.subscribe(() => this._idIndexes.clear());
36
+ }
27
37
  async Config(forceRefresh, contextUser, provider) {
28
38
  const c = [
29
39
  {
@@ -99,11 +109,55 @@ export class KnowledgeHubMetadataEngine extends BaseEngine {
99
109
  GetActiveEntityDocuments() {
100
110
  return this._entityDocuments.filter(d => d.Status === 'Active');
101
111
  }
102
- /** Find an entity document by ID (case-insensitive UUID comparison) */
103
- GetEntityDocumentById(id) {
112
+ /**
113
+ * Returns a cached `NormalizeUUID(ID) → row` index for one of the engine's cached arrays,
114
+ * building it on first use. The whole index cache is cleared on any {@link DataChange$}
115
+ * emission, so a returned index is always consistent with the current cache contents.
116
+ * O(N) to build once, then O(1) per lookup.
117
+ */
118
+ getIDIndex(key, rows, idOf) {
119
+ // Downcast is safe by construction: each `key` is only ever paired with one row type.
120
+ let index = this._idIndexes.get(key);
121
+ if (!index) {
122
+ index = new Map();
123
+ for (const row of rows) {
124
+ const id = idOf(row);
125
+ if (id)
126
+ index.set(NormalizeUUID(id), row);
127
+ }
128
+ this._idIndexes.set(key, index);
129
+ }
130
+ return index;
131
+ }
132
+ /** Find an entity document by ID (case-insensitive UUID comparison). O(1) after first hit. */
133
+ GetEntityDocumentByID(id) {
134
+ if (!id)
135
+ return undefined;
136
+ return this.getIDIndex('entityDocuments', this._entityDocuments, d => d.ID).get(NormalizeUUID(id));
137
+ }
138
+ /** Find a content source by ID (case-insensitive UUID comparison). O(1) after first hit. */
139
+ GetContentSourceByID(id) {
140
+ if (!id)
141
+ return undefined;
142
+ return this.getIDIndex('contentSources', this._contentSources, s => s.ID).get(NormalizeUUID(id));
143
+ }
144
+ /** Find a content type by ID (case-insensitive UUID comparison). O(1) after first hit. */
145
+ GetContentTypeByID(id) {
146
+ if (!id)
147
+ return undefined;
148
+ return this.getIDIndex('contentTypes', this._contentTypes, t => t.ID).get(NormalizeUUID(id));
149
+ }
150
+ /** Find a content source type by ID (case-insensitive UUID comparison). O(1) after first hit. */
151
+ GetContentSourceTypeByID(id) {
152
+ if (!id)
153
+ return undefined;
154
+ return this.getIDIndex('contentSourceTypes', this._contentSourceTypes, t => t.ID).get(NormalizeUUID(id));
155
+ }
156
+ /** Find a content file type by ID (case-insensitive UUID comparison). O(1) after first hit. */
157
+ GetContentFileTypeByID(id) {
104
158
  if (!id)
105
159
  return undefined;
106
- return this._entityDocuments.find(d => UUIDsEqual(d.ID, id));
160
+ return this.getIDIndex('contentFileTypes', this._contentFileTypes, t => t.ID).get(NormalizeUUID(id));
107
161
  }
108
162
  /** Find all entity documents for a given entity name (case-insensitive) */
109
163
  GetEntityDocumentsForEntity(entityName) {
@@ -112,11 +166,11 @@ export class KnowledgeHubMetadataEngine extends BaseEngine {
112
166
  const lower = entityName.trim().toLowerCase();
113
167
  return this._entityDocuments.filter(d => d.Entity?.trim().toLowerCase() === lower);
114
168
  }
115
- /** Find a vector index by ID (case-insensitive UUID comparison) */
116
- GetVectorIndexById(id) {
169
+ /** Find a vector index by ID (case-insensitive UUID comparison). O(1) after first hit. */
170
+ GetVectorIndexByID(id) {
117
171
  if (!id)
118
172
  return undefined;
119
- return this._vectorIndexes.find(v => UUIDsEqual(v.ID, id));
173
+ return this.getIDIndex('vectorIndexes', this._vectorIndexes, v => v.ID).get(NormalizeUUID(id));
120
174
  }
121
175
  /**
122
176
  * Returns distinct entity names that have active entity documents (for dropdowns).
@@ -1 +1 @@
1
- {"version":3,"file":"knowledgeHubMetadata.js","sourceRoot":"","sources":["../../src/engines/knowledgeHubMetadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledgeHubMetadata.js","sourceRoot":"","sources":["../../src/engines/knowledgeHubMetadata.ts"],"names":[],"mappings":"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"}