@memberjunction/ai-vector-sync 1.2.1 → 1.3.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/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -0
- package/dist/generic/EntityDocumentTemplateParser.d.ts +18 -0
- package/dist/generic/EntityDocumentTemplateParser.d.ts.map +1 -0
- package/dist/generic/EntityDocumentTemplateParser.js +145 -0
- package/dist/generic/EntityDocumentTemplateParser.js.map +1 -0
- package/dist/generic/vectorSync.types.d.ts +12 -0
- package/dist/generic/vectorSync.types.d.ts.map +1 -0
- package/dist/generic/{entity.types.js → vectorSync.types.js} +1 -1
- package/dist/generic/vectorSync.types.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/models/EntityDocumentCache.d.ts +19 -0
- package/dist/models/EntityDocumentCache.d.ts.map +1 -0
- package/dist/models/EntityDocumentCache.js +62 -0
- package/dist/models/EntityDocumentCache.js.map +1 -0
- package/dist/models/entityVectorSync.d.ts +19 -45
- package/dist/models/entityVectorSync.d.ts.map +1 -1
- package/dist/models/entityVectorSync.js +177 -251
- package/dist/models/entityVectorSync.js.map +1 -1
- package/package.json +7 -9
- package/dist/generic/entity.types.d.ts +0 -24
- package/dist/generic/entity.types.d.ts.map +0 -1
- package/dist/generic/entity.types.js.map +0 -1
- package/dist/models/vectorSyncBase.d.ts +0 -28
- package/dist/models/vectorSyncBase.d.ts.map +0 -1
- package/dist/models/vectorSyncBase.js +0 -115
- package/dist/models/vectorSyncBase.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,yBAAyB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { UserInfo } from "@memberjunction/core";
|
|
2
|
+
export declare abstract class EntityDocumentTemplateParserBase {
|
|
3
|
+
static ClearCache(): void;
|
|
4
|
+
static CreateCacheKey(EntityID: number, EntityRecordPrimaryKey: string, Content: string): string;
|
|
5
|
+
protected static __cache: {
|
|
6
|
+
[key: string]: string;
|
|
7
|
+
};
|
|
8
|
+
protected static get _cache(): {
|
|
9
|
+
[key: string]: string;
|
|
10
|
+
};
|
|
11
|
+
Parse(Template: string, EntityID: number, EntityRecord: any, ContextUser: UserInfo): Promise<string>;
|
|
12
|
+
protected evalSingleArgument(argument: string, entityID: number, entityRecord: any, ContextUser: UserInfo): Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
export declare class EntityDocumentTemplateParser extends EntityDocumentTemplateParserBase {
|
|
15
|
+
static CreateInstance(): EntityDocumentTemplateParser;
|
|
16
|
+
protected Relationship(entityID: number, entityRecord: any, ContextUser: UserInfo, relationshipName: string, maxRows: number, entityDocumentName: string): Promise<string>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=EntityDocumentTemplateParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityDocumentTemplateParser.d.ts","sourceRoot":"","sources":["../../src/generic/EntityDocumentTemplateParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAO7F,8BAAsB,gCAAgC;WACpC,UAAU;WAGV,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAIvG,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IACzD,SAAS,CAAC,MAAM,KAAK,MAAM,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAEvD;IAWY,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;cA+CjG,kBAAkB,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CA6BrI;AAOD,qBACa,4BAA6B,SAAQ,gCAAgC;WAGhE,cAAc,IAAI,4BAA4B;cAa5C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAiEnL"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var EntityDocumentTemplateParser_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.EntityDocumentTemplateParser = exports.EntityDocumentTemplateParserBase = void 0;
|
|
11
|
+
const core_1 = require("@memberjunction/core");
|
|
12
|
+
const global_1 = require("@memberjunction/global");
|
|
13
|
+
const entityVectorSync_1 = require("../models/entityVectorSync");
|
|
14
|
+
class EntityDocumentTemplateParserBase {
|
|
15
|
+
static ClearCache() {
|
|
16
|
+
EntityDocumentTemplateParserBase.__cache = {};
|
|
17
|
+
}
|
|
18
|
+
static CreateCacheKey(EntityID, EntityRecordPrimaryKey, Content) {
|
|
19
|
+
return `${EntityID}___${EntityRecordPrimaryKey}___${Content}`;
|
|
20
|
+
}
|
|
21
|
+
static __cache = {};
|
|
22
|
+
static get _cache() {
|
|
23
|
+
return EntityDocumentTemplateParserBase.__cache;
|
|
24
|
+
}
|
|
25
|
+
async Parse(Template, EntityID, EntityRecord, ContextUser) {
|
|
26
|
+
if (!ContextUser) {
|
|
27
|
+
throw new Error('ContextUser is required to parse the template');
|
|
28
|
+
}
|
|
29
|
+
const md = new core_1.Metadata();
|
|
30
|
+
const entityInfo = md.Entities.find(e => e.ID === EntityID);
|
|
31
|
+
if (!entityInfo) {
|
|
32
|
+
throw new Error(`Entity with ID ${EntityID} not found.`);
|
|
33
|
+
}
|
|
34
|
+
let compositeKey = new core_1.CompositeKey();
|
|
35
|
+
compositeKey.LoadFromEntityInfoAndRecord(entityInfo, EntityRecord);
|
|
36
|
+
const regex = /\$\{([^{}]+)\}/g;
|
|
37
|
+
const matches = Template.matchAll(regex);
|
|
38
|
+
const replacements = Array.from(matches).map(async (match) => {
|
|
39
|
+
const content = match[1];
|
|
40
|
+
const cacheKey = EntityDocumentTemplateParserBase.CreateCacheKey(EntityID, compositeKey.ToString(), content);
|
|
41
|
+
if (!EntityDocumentTemplateParserBase._cache[cacheKey]) {
|
|
42
|
+
EntityDocumentTemplateParserBase._cache[cacheKey] = await this.evalSingleArgument(content, EntityID, EntityRecord, ContextUser);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
old: match[0],
|
|
46
|
+
new: EntityDocumentTemplateParserBase._cache[cacheKey]
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
const resolvedReplacements = await Promise.all(replacements);
|
|
50
|
+
let resolvedTemplate = Template;
|
|
51
|
+
resolvedReplacements.forEach(replacement => {
|
|
52
|
+
resolvedTemplate = resolvedTemplate.replace(replacement.old, replacement.new);
|
|
53
|
+
});
|
|
54
|
+
return resolvedTemplate;
|
|
55
|
+
}
|
|
56
|
+
async evalSingleArgument(argument, entityID, entityRecord, ContextUser) {
|
|
57
|
+
const funcMatch = argument.match(/(\w+)\(([^)]*)\)/);
|
|
58
|
+
if (funcMatch) {
|
|
59
|
+
const [, funcName, paramsString] = funcMatch;
|
|
60
|
+
const params = paramsString.split(',').map(param => {
|
|
61
|
+
param = param.trim();
|
|
62
|
+
if (param.startsWith('"') && param.endsWith('"')) {
|
|
63
|
+
return param.slice(1, -1);
|
|
64
|
+
}
|
|
65
|
+
else if (param.startsWith("'") && param.endsWith("'")) {
|
|
66
|
+
return param.slice(1, -1);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return param;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (typeof this[funcName] === 'function') {
|
|
73
|
+
return this[funcName](entityID, entityRecord, ContextUser, ...params);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
throw new Error(`Function ${funcName} is not defined.`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return entityRecord[argument] !== undefined ? entityRecord[argument] : "";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
;
|
|
84
|
+
}
|
|
85
|
+
exports.EntityDocumentTemplateParserBase = EntityDocumentTemplateParserBase;
|
|
86
|
+
let EntityDocumentTemplateParser = EntityDocumentTemplateParser_1 = class EntityDocumentTemplateParser extends EntityDocumentTemplateParserBase {
|
|
87
|
+
static CreateInstance() {
|
|
88
|
+
return global_1.MJGlobal.Instance.ClassFactory.CreateInstance(EntityDocumentTemplateParser_1);
|
|
89
|
+
}
|
|
90
|
+
async Relationship(entityID, entityRecord, ContextUser, relationshipName, maxRows, entityDocumentName) {
|
|
91
|
+
const md = new core_1.Metadata();
|
|
92
|
+
const vectorSyncer = new entityVectorSync_1.EntityVectorSyncer();
|
|
93
|
+
vectorSyncer.CurrentUser = ContextUser;
|
|
94
|
+
const entityInfo = md.Entities.find(e => e.ID === entityID);
|
|
95
|
+
if (!entityInfo) {
|
|
96
|
+
throw new Error(`Entity with ID ${entityID} not found.`);
|
|
97
|
+
}
|
|
98
|
+
const re = entityInfo.RelatedEntities.find(re => re.RelatedEntity === relationshipName);
|
|
99
|
+
if (!re) {
|
|
100
|
+
throw new Error(`Relationship ${relationshipName} not found for entity ${entityInfo.Name}`);
|
|
101
|
+
}
|
|
102
|
+
const obj = await md.GetEntityObject(entityInfo.Name, ContextUser);
|
|
103
|
+
let compositeKey = new core_1.CompositeKey();
|
|
104
|
+
compositeKey.LoadFromEntityInfoAndRecord(entityInfo, entityRecord);
|
|
105
|
+
let loadResult = await obj.InnerLoad(compositeKey);
|
|
106
|
+
if (!loadResult) {
|
|
107
|
+
(0, core_1.LogError)(`Failed to load entity ${entityInfo.Name} with ID ${compositeKey.ToString()}`);
|
|
108
|
+
return "";
|
|
109
|
+
}
|
|
110
|
+
const reData = await obj.GetRelatedEntityDataExt(re, null, maxRows);
|
|
111
|
+
if (reData && reData.Data) {
|
|
112
|
+
if (entityDocumentName && entityDocumentName.trim().length > 0) {
|
|
113
|
+
const doc = await vectorSyncer.GetEntityDocumentByName(entityDocumentName, ContextUser);
|
|
114
|
+
if (doc) {
|
|
115
|
+
const parser = EntityDocumentTemplateParser_1.CreateInstance();
|
|
116
|
+
const batchSize = 10;
|
|
117
|
+
const results = [];
|
|
118
|
+
for (let i = 0; i < reData.Data.length; i += batchSize) {
|
|
119
|
+
const batchPromises = reData.Data.slice(i, i + batchSize).map(data => {
|
|
120
|
+
return parser.Parse(doc.Template, re.RelatedEntityID, data, ContextUser);
|
|
121
|
+
});
|
|
122
|
+
const batchResults = await Promise.all(batchPromises);
|
|
123
|
+
results.push(...batchResults);
|
|
124
|
+
}
|
|
125
|
+
return results.map(r => r + "\n\n").join('');
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
(0, core_1.LogStatus)(`Entity Document with name ${entityDocumentName} not found.`);
|
|
129
|
+
return "";
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
return JSON.stringify({ Relationship: relationshipName, Data: reData.Data });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
return "{ No Data for: " + relationshipName + " }";
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
exports.EntityDocumentTemplateParser = EntityDocumentTemplateParser;
|
|
142
|
+
exports.EntityDocumentTemplateParser = EntityDocumentTemplateParser = EntityDocumentTemplateParser_1 = __decorate([
|
|
143
|
+
(0, global_1.RegisterClass)(EntityDocumentTemplateParser)
|
|
144
|
+
], EntityDocumentTemplateParser);
|
|
145
|
+
//# sourceMappingURL=EntityDocumentTemplateParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityDocumentTemplateParser.js","sourceRoot":"","sources":["../../src/generic/EntityDocumentTemplateParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type VectorSyncRequest = {
|
|
2
|
+
entityID: number;
|
|
3
|
+
entityDocumentID?: number;
|
|
4
|
+
batchCount?: number;
|
|
5
|
+
options?: any;
|
|
6
|
+
};
|
|
7
|
+
export type vectorSyncResponse = {
|
|
8
|
+
success: boolean;
|
|
9
|
+
status: string;
|
|
10
|
+
errorMessage: string;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=vectorSync.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorSync.types.d.ts","sourceRoot":"","sources":["../../src/generic/vectorSync.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAK1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectorSync.types.js","sourceRoot":"","sources":["../../src/generic/vectorSync.types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './generic/
|
|
2
|
-
export * from './models/vectorSyncBase';
|
|
1
|
+
export * from './generic/vectorSync.types';
|
|
3
2
|
export * from './generic/entitySyncConfig.types';
|
|
4
3
|
export * from './models/entityVectorSync';
|
|
4
|
+
export * from './generic/EntityDocumentTemplateParser';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./generic/
|
|
18
|
-
__exportStar(require("./models/vectorSyncBase"), exports);
|
|
17
|
+
__exportStar(require("./generic/vectorSync.types"), exports);
|
|
19
18
|
__exportStar(require("./generic/entitySyncConfig.types"), exports);
|
|
20
19
|
__exportStar(require("./models/entityVectorSync"), exports);
|
|
20
|
+
__exportStar(require("./generic/EntityDocumentTemplateParser"), exports);
|
|
21
21
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,mEAAiD;AACjD,4DAA0C;AAC1C,yEAAuD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { UserInfo } from "@memberjunction/core";
|
|
2
|
+
import { EntityDocumentEntity } from "@memberjunction/core-entities";
|
|
3
|
+
export declare class EntityDocumentCache {
|
|
4
|
+
private static _instance;
|
|
5
|
+
private _loaded;
|
|
6
|
+
private _cache;
|
|
7
|
+
private _contextUser;
|
|
8
|
+
private constructor();
|
|
9
|
+
static get Instance(): EntityDocumentCache;
|
|
10
|
+
get IsLoaded(): boolean;
|
|
11
|
+
protected Cache(): {
|
|
12
|
+
[key: number]: EntityDocumentEntity;
|
|
13
|
+
};
|
|
14
|
+
GetDocument(EntityDocumentID: number): EntityDocumentEntity | null;
|
|
15
|
+
GetDocumentByName(EntityDocumentName: string): EntityDocumentEntity | null;
|
|
16
|
+
SetCurrentUser(user: UserInfo): void;
|
|
17
|
+
Refresh(ContextUser?: UserInfo): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=EntityDocumentCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityDocumentCache.d.ts","sourceRoot":"","sources":["../../src/models/EntityDocumentCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAKrE,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAsB;IAC9C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,YAAY,CAAyB;IAE7C,OAAO;IAKP,WAAkB,QAAQ,IAAI,mBAAmB,CAKhD;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,SAAS,CAAC,KAAK,IAAI;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAA;KAAE;IAInD,WAAW,CAAC,gBAAgB,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IASlE,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAa1E,cAAc,CAAC,IAAI,EAAE,QAAQ;IAIvB,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ;CAkB9C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityDocumentCache = void 0;
|
|
4
|
+
const core_1 = require("@memberjunction/core");
|
|
5
|
+
class EntityDocumentCache {
|
|
6
|
+
static _instance;
|
|
7
|
+
_loaded = false;
|
|
8
|
+
_cache = {};
|
|
9
|
+
_contextUser = null;
|
|
10
|
+
constructor() {
|
|
11
|
+
this._cache = {};
|
|
12
|
+
}
|
|
13
|
+
static get Instance() {
|
|
14
|
+
if (!EntityDocumentCache._instance) {
|
|
15
|
+
EntityDocumentCache._instance = new EntityDocumentCache();
|
|
16
|
+
}
|
|
17
|
+
return EntityDocumentCache._instance;
|
|
18
|
+
}
|
|
19
|
+
get IsLoaded() {
|
|
20
|
+
return this._loaded;
|
|
21
|
+
}
|
|
22
|
+
Cache() {
|
|
23
|
+
return this._cache;
|
|
24
|
+
}
|
|
25
|
+
GetDocument(EntityDocumentID) {
|
|
26
|
+
let document = this._cache[EntityDocumentID];
|
|
27
|
+
if (!document) {
|
|
28
|
+
(0, core_1.LogStatus)(`EntityDocumentCache.GetDocument: Cache miss for EntityDocumentID: ${EntityDocumentID}`);
|
|
29
|
+
}
|
|
30
|
+
return document || null;
|
|
31
|
+
}
|
|
32
|
+
GetDocumentByName(EntityDocumentName) {
|
|
33
|
+
const toLower = EntityDocumentName.trim().toLowerCase();
|
|
34
|
+
let docuement = Object.values(this._cache).find((ed) => {
|
|
35
|
+
ed.Name.trim().toLowerCase() === toLower;
|
|
36
|
+
});
|
|
37
|
+
if (!docuement) {
|
|
38
|
+
(0, core_1.LogStatus)(`EntityDocumentCache.GetDocumentByName: Cache miss for EntityDocumentName: ${EntityDocumentName}`);
|
|
39
|
+
}
|
|
40
|
+
return docuement || null;
|
|
41
|
+
}
|
|
42
|
+
SetCurrentUser(user) {
|
|
43
|
+
this._contextUser = user;
|
|
44
|
+
}
|
|
45
|
+
async Refresh(ContextUser) {
|
|
46
|
+
(0, core_1.LogStatus)('Refreshing Entity Document Cache');
|
|
47
|
+
this._cache = {};
|
|
48
|
+
const rv = new core_1.RunView();
|
|
49
|
+
const result = await rv.RunView({
|
|
50
|
+
EntityName: "Entity Documents",
|
|
51
|
+
ResultType: "entity_object"
|
|
52
|
+
}, ContextUser || this._contextUser);
|
|
53
|
+
if (result && result.Success) {
|
|
54
|
+
for (const entityDocument of result.Results) {
|
|
55
|
+
this._cache[entityDocument.ID] = entityDocument;
|
|
56
|
+
}
|
|
57
|
+
this._loaded = true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.EntityDocumentCache = EntityDocumentCache;
|
|
62
|
+
//# sourceMappingURL=EntityDocumentCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityDocumentCache.js","sourceRoot":"","sources":["../../src/models/EntityDocumentCache.ts"],"names":[],"mappings":";;;AAAA,+CAAoE;AAMpE,MAAa,mBAAmB;IACpB,MAAM,CAAC,SAAS,CAAsB;IACtC,OAAO,GAAY,KAAK,CAAC;IACzB,MAAM,GAA4C,EAAE,CAAC;IACrD,YAAY,GAAoB,IAAI,CAAC;IAE7C;QAEI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAEM,MAAM,KAAK,QAAQ;QACtB,IAAG,CAAC,mBAAmB,CAAC,SAAS,EAAC,CAAC;YAC/B,mBAAmB,CAAC,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC9D,CAAC;QACD,OAAO,mBAAmB,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAES,KAAK;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,WAAW,CAAC,gBAAwB;QACvC,IAAI,QAAQ,GAAyB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,IAAA,gBAAS,EAAC,qEAAqE,gBAAgB,EAAE,CAAC,CAAC;QACvG,CAAC;QAED,OAAO,QAAQ,IAAI,IAAI,CAAC;IAC5B,CAAC;IAEM,iBAAiB,CAAC,kBAA0B;QAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,SAAS,GAAyB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAwB,EAAE,EAAE;YAC/F,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAA,gBAAS,EAAC,6EAA6E,kBAAkB,EAAE,CAAC,CAAC;QACjH,CAAC;QAED,OAAO,SAAS,IAAI,IAAI,CAAC;IAC7B,CAAC;IAEM,cAAc,CAAC,IAAc;QAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,WAAsB;QACvC,IAAA,gBAAS,EAAC,kCAAkC,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAGjB,MAAM,EAAE,GAAG,IAAI,cAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YAC5B,UAAU,EAAE,kBAAkB;YAC9B,UAAU,EAAE,eAAe;SAC9B,EAAE,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAErC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;YACpD,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACL,CAAC;CACJ;AAtED,kDAsEC"}
|
|
@@ -1,51 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SQLServerDataProvider } from "@memberjunction/sqlserver-dataprovider";
|
|
3
|
-
import { IMetadataProvider, RunView, UserInfo } from "@memberjunction/core";
|
|
4
|
-
import { Request } from 'mssql';
|
|
1
|
+
import { UserInfo } from "@memberjunction/core";
|
|
5
2
|
import { Embeddings } from '@memberjunction/ai';
|
|
6
3
|
import { VectorDBBase } from '@memberjunction/ai-vectordb';
|
|
7
|
-
import { AIModelEntity, VectorDatabaseEntity } from '@memberjunction/core-entities';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
_runView: RunView;
|
|
4
|
+
import { AIModelEntity, EntityDocumentEntity, VectorDatabaseEntity } from '@memberjunction/core-entities';
|
|
5
|
+
import { VectorSyncRequest } from '../generic/vectorSync.types';
|
|
6
|
+
import { VectorBase } from '@memberjunction/ai-vectors';
|
|
7
|
+
export declare class EntityVectorSyncer extends VectorBase {
|
|
12
8
|
_startTime: Date;
|
|
13
9
|
_endTime: Date;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
protected
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
private upsertEntityRecordDocument;
|
|
29
|
-
private executeStoredProcedure;
|
|
30
|
-
mapObjectPropertiesToRequest: (obj: any, r: Request) => void;
|
|
31
|
-
private parseStringTemplate;
|
|
32
|
-
private start;
|
|
33
|
-
private end;
|
|
34
|
-
private timeDiff;
|
|
35
|
-
private saveJSONData;
|
|
10
|
+
constructor();
|
|
11
|
+
VectorizeEntity(request: VectorSyncRequest, contextUser: UserInfo): Promise<any>;
|
|
12
|
+
CreateDefaultEntityDocument(EntityID: number, VectorDatabase: VectorDatabaseEntity, AIModel: AIModelEntity): Promise<EntityDocumentEntity>;
|
|
13
|
+
protected GetVectorDatabaseAndEmbeddingClassByEntityDocumentID(entityDocumentID: number, createDocumentIfNotFound?: boolean): Promise<{
|
|
14
|
+
embedding: Embeddings;
|
|
15
|
+
vectorDB: VectorDBBase;
|
|
16
|
+
}>;
|
|
17
|
+
GetEntityDocument(EntityDocumentID: number): Promise<EntityDocumentEntity | null>;
|
|
18
|
+
GetEntityDocumentByName(EntityDocumentName: string, ContextUser?: UserInfo): Promise<EntityDocumentEntity | null>;
|
|
19
|
+
GetFirstActiveEntityDocumentForEntity(entityID: number): Promise<EntityDocumentEntity | null>;
|
|
20
|
+
private GetOrCreateVectorIndex;
|
|
21
|
+
private chunkArray;
|
|
22
|
+
private convertPrimaryKeysToList;
|
|
23
|
+
private delay;
|
|
36
24
|
}
|
|
37
|
-
type EntityDocument = {
|
|
38
|
-
ID: number;
|
|
39
|
-
Name: string;
|
|
40
|
-
EntityID: number;
|
|
41
|
-
TypeID: number;
|
|
42
|
-
Status: string;
|
|
43
|
-
Template: string;
|
|
44
|
-
CreatedAt: Date;
|
|
45
|
-
UpdatedAt: Date;
|
|
46
|
-
Type: string;
|
|
47
|
-
VectorIndexID: number;
|
|
48
|
-
VectorID: number;
|
|
49
|
-
};
|
|
50
|
-
export {};
|
|
51
25
|
//# sourceMappingURL=entityVectorSync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityVectorSync.d.ts","sourceRoot":"","sources":["../../src/models/entityVectorSync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entityVectorSync.d.ts","sourceRoot":"","sources":["../../src/models/entityVectorSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0D,QAAQ,EAAI,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAoB,UAAU,EAAc,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAgB,YAAY,EAAgB,MAAM,6BAA6B,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAA8B,oBAAoB,EAAqB,MAAM,+BAA+B,CAAC;AACzJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,qBAAa,kBAAmB,SAAQ,UAAU;IAC9C,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;;IAMF,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAwFhF,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC;cA6BvI,oDAAoD,CAAC,gBAAgB,EAAE,MAAM,EAAE,wBAAwB,GAAE,OAAe,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAC,CAAC;IA+CtL,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAQjF,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAQjH,qCAAqC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAW5F,sBAAsB;IAiCpC,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,KAAK,CAEX;CACL"}
|