@memberjunction/ai-recommendations 3.3.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Engine.d.ts +1 -1
- package/dist/Engine.js +19 -23
- package/dist/Engine.js.map +1 -1
- package/dist/ProviderBase.d.ts +1 -1
- package/dist/ProviderBase.js +5 -9
- package/dist/ProviderBase.js.map +1 -1
- package/dist/generic/types.js +2 -7
- package/dist/generic/types.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -19
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
package/dist/Engine.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseEngine, UserInfo, IMetadataProvider } from '@memberjunction/core';
|
|
2
2
|
import { RecommendationProviderEntity } from '@memberjunction/core-entities';
|
|
3
|
-
import { RecommendationRequest, RecommendationResult } from './generic/types';
|
|
3
|
+
import { RecommendationRequest, RecommendationResult } from './generic/types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Engine class to be used for running all recommendation requests
|
|
6
6
|
*/
|
package/dist/Engine.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const core_1 = require("@memberjunction/core");
|
|
5
|
-
const global_1 = require("@memberjunction/global");
|
|
6
|
-
const ProviderBase_1 = require("./ProviderBase");
|
|
1
|
+
import { BaseEngine, Metadata, LogStatus, RunView, LogError } from '@memberjunction/core';
|
|
2
|
+
import { MJGlobal } from '@memberjunction/global';
|
|
3
|
+
import { RecommendationProviderBase } from './ProviderBase.js';
|
|
7
4
|
/**
|
|
8
5
|
* Engine class to be used for running all recommendation requests
|
|
9
6
|
*/
|
|
10
|
-
class RecommendationEngineBase extends
|
|
7
|
+
export class RecommendationEngineBase extends BaseEngine {
|
|
11
8
|
constructor() {
|
|
12
9
|
super(...arguments);
|
|
13
10
|
this._RecommendationProviders = [];
|
|
@@ -39,14 +36,14 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
39
36
|
provider = this.RecommendationProviders[0];
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
|
-
|
|
39
|
+
LogStatus(`Recommendation Engine is using provider: ${provider.Name}`);
|
|
43
40
|
// get the driver
|
|
44
|
-
const driver =
|
|
41
|
+
const driver = MJGlobal.Instance.ClassFactory.CreateInstance(RecommendationProviderBase, provider.Name);
|
|
45
42
|
if (!driver) {
|
|
46
43
|
throw new Error(`Could not find driver for provider: ${provider.Name}`);
|
|
47
44
|
}
|
|
48
45
|
const recommendations = await this.GetRecommendationEntities(request);
|
|
49
|
-
|
|
46
|
+
LogStatus(`Processing ${recommendations.length} recommendations`);
|
|
50
47
|
if (recommendations.length == 0) {
|
|
51
48
|
return {
|
|
52
49
|
Success: true,
|
|
@@ -55,7 +52,7 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
55
52
|
}
|
|
56
53
|
request.Recommendations = recommendations;
|
|
57
54
|
// load the run
|
|
58
|
-
const recommendationRunEntity = await new
|
|
55
|
+
const recommendationRunEntity = await new Metadata().GetEntityObject('Recommendation Runs', request.CurrentUser);
|
|
59
56
|
recommendationRunEntity.NewRecord();
|
|
60
57
|
// update status for current run
|
|
61
58
|
recommendationRunEntity.Status = 'In Progress';
|
|
@@ -64,7 +61,7 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
64
61
|
recommendationRunEntity.RunByUserID = request.CurrentUser ? request.CurrentUser.ID : super.ContextUser.ID;
|
|
65
62
|
const saveResult = await recommendationRunEntity.Save();
|
|
66
63
|
if (!saveResult) {
|
|
67
|
-
|
|
64
|
+
LogStatus(`Error saving RecommendationRun entity: `, undefined, recommendationRunEntity.LatestResult);
|
|
68
65
|
throw new Error('Error creating Recommendation Run entity');
|
|
69
66
|
}
|
|
70
67
|
if (request.CreateErrorList) {
|
|
@@ -79,7 +76,7 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
79
76
|
recommendationRunEntity.Description = recommendResult.ErrorMessage;
|
|
80
77
|
const postRunSaveResult = await recommendationRunEntity.Save();
|
|
81
78
|
if (!postRunSaveResult) {
|
|
82
|
-
|
|
79
|
+
LogStatus(`Error saving RecommendationRun entity: `, undefined, recommendationRunEntity.LatestResult);
|
|
83
80
|
throw new Error('Error updating Recommendation Run entity');
|
|
84
81
|
}
|
|
85
82
|
return recommendResult;
|
|
@@ -108,8 +105,8 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
108
105
|
}
|
|
109
106
|
}
|
|
110
107
|
async GetRecommendationsByListID(listID, currentUser) {
|
|
111
|
-
const rv = new
|
|
112
|
-
const md = new
|
|
108
|
+
const rv = new RunView();
|
|
109
|
+
const md = new Metadata();
|
|
113
110
|
const rvListDetailsResult = await rv.RunViews([
|
|
114
111
|
{
|
|
115
112
|
EntityName: 'Lists',
|
|
@@ -132,7 +129,7 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
132
129
|
}
|
|
133
130
|
const list = listViewResult.Results[0];
|
|
134
131
|
const entityName = list.Entity;
|
|
135
|
-
|
|
132
|
+
LogStatus(`Getting recommendations for list: ${list.Name}. Entity: ${entityName}`);
|
|
136
133
|
const entityID = list.EntityID;
|
|
137
134
|
const entity = md.Entities.find((e) => e.ID == entityID);
|
|
138
135
|
const needsQuotes = entity.FirstPrimaryKey.NeedsQuotes ? "'" : '';
|
|
@@ -164,13 +161,13 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
164
161
|
return recommendations;
|
|
165
162
|
}
|
|
166
163
|
async GetRecommendationsByRecordIDs(entityName, recordIDs, currentUser) {
|
|
167
|
-
const md = new
|
|
168
|
-
const rv = new
|
|
164
|
+
const md = new Metadata();
|
|
165
|
+
const rv = new RunView();
|
|
169
166
|
const entity = md.Entities.find((e) => e.Name.toLowerCase() == entityName.toLowerCase());
|
|
170
167
|
if (!entity) {
|
|
171
168
|
throw new Error(`Unable to get recommendations by entity info: Entity not found with name: ${entityName}`);
|
|
172
169
|
}
|
|
173
|
-
|
|
170
|
+
LogStatus(`Getting recommendations for entity: ${entityName}`);
|
|
174
171
|
const needsQuotes = entity.FirstPrimaryKey.NeedsQuotes ? "'" : '';
|
|
175
172
|
const recordIDsFilter = recordIDs.map((id) => `${needsQuotes}${id}${needsQuotes}`).join(',');
|
|
176
173
|
const rvEntityResult = await rv.RunView({
|
|
@@ -191,18 +188,18 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
191
188
|
return recommendations;
|
|
192
189
|
}
|
|
193
190
|
async CreateRecommendationErrorList(recommendationRunID, entityID, currentUser) {
|
|
194
|
-
const md = new
|
|
191
|
+
const md = new Metadata();
|
|
195
192
|
const list = await md.GetEntityObject('Lists', currentUser);
|
|
196
193
|
list.Name = `Recommendation Run ${recommendationRunID} Errors`;
|
|
197
194
|
list.EntityID = entityID;
|
|
198
195
|
list.UserID = currentUser ? currentUser.ID : super.ContextUser.ID;
|
|
199
196
|
const saveResult = await list.Save();
|
|
200
197
|
if (!saveResult) {
|
|
201
|
-
|
|
198
|
+
LogError(`Error saving Recommendation Error List entity: `, undefined, list.LatestResult);
|
|
202
199
|
return null;
|
|
203
200
|
}
|
|
204
201
|
else {
|
|
205
|
-
|
|
202
|
+
LogStatus(`Error list created for recommendation run: ${recommendationRunID}. List ID: ${list.ID}`);
|
|
206
203
|
}
|
|
207
204
|
return list;
|
|
208
205
|
}
|
|
@@ -210,5 +207,4 @@ class RecommendationEngineBase extends core_1.BaseEngine {
|
|
|
210
207
|
return value === null || value === undefined;
|
|
211
208
|
}
|
|
212
209
|
}
|
|
213
|
-
exports.RecommendationEngineBase = RecommendationEngineBase;
|
|
214
210
|
//# sourceMappingURL=Engine.js.map
|
package/dist/Engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Engine.js","sourceRoot":"","sources":["../src/Engine.ts"],"names":[],"mappings":"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"}
|
package/dist/ProviderBase.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RecommendationEntity, RecommendationItemEntity } from '@memberjunction/core-entities';
|
|
2
2
|
import { UserInfo } from '@memberjunction/core';
|
|
3
|
-
import { RecommendationRequest, RecommendationResult } from './generic/types';
|
|
3
|
+
import { RecommendationRequest, RecommendationResult } from './generic/types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Base class for all recommendation providers
|
|
6
6
|
*/
|
package/dist/ProviderBase.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RecommendationProviderBase = void 0;
|
|
4
|
-
const core_1 = require("@memberjunction/core");
|
|
1
|
+
import { LogError, Metadata } from '@memberjunction/core';
|
|
5
2
|
/**
|
|
6
3
|
* Base class for all recommendation providers
|
|
7
4
|
*/
|
|
8
|
-
class RecommendationProviderBase {
|
|
5
|
+
export class RecommendationProviderBase {
|
|
9
6
|
constructor(ContextUser) {
|
|
10
7
|
this._ContextUser = ContextUser;
|
|
11
|
-
this._md = new
|
|
8
|
+
this._md = new Metadata();
|
|
12
9
|
}
|
|
13
10
|
get ContextUser() {
|
|
14
11
|
return this._ContextUser;
|
|
@@ -23,7 +20,7 @@ class RecommendationProviderBase {
|
|
|
23
20
|
recommendation.RecommendationRunID = RunID;
|
|
24
21
|
const recommendationSaveResult = await recommendation.Save();
|
|
25
22
|
if (!recommendationSaveResult) {
|
|
26
|
-
|
|
23
|
+
LogError(`Error saving recommendation for ${recommendation.ID}`, undefined, recommendation.LatestResult);
|
|
27
24
|
return false;
|
|
28
25
|
}
|
|
29
26
|
let allSaved = true;
|
|
@@ -31,12 +28,11 @@ class RecommendationProviderBase {
|
|
|
31
28
|
item.RecommendationID = recommendation.ID;
|
|
32
29
|
const saveResult = await item.Save();
|
|
33
30
|
if (!saveResult) {
|
|
34
|
-
|
|
31
|
+
LogError(`Error saving recommendation item for recommendation ${recommendation.ID}`, undefined, item.LatestResult);
|
|
35
32
|
allSaved = false;
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
35
|
return allSaved;
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
exports.RecommendationProviderBase = RecommendationProviderBase;
|
|
42
38
|
//# sourceMappingURL=ProviderBase.js.map
|
package/dist/ProviderBase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderBase.js","sourceRoot":"","sources":["../src/ProviderBase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderBase.js","sourceRoot":"","sources":["../src/ProviderBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAGpE;;GAEG;AACH,MAAM,OAAgB,0BAA0B;IAI9C,YAAmB,WAAqB;QACtC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAUD;;;;;OAKG;IACO,KAAK,CAAC,kBAAkB,CAAC,cAAoC,EAAE,KAAa,EAAE,KAAiC;QACvH,cAAc,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC3C,MAAM,wBAAwB,GAAY,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACtE,IAAG,CAAC,wBAAwB,EAAE,CAAC;YAC7B,QAAQ,CAAC,mCAAmC,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,GAAY,IAAI,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAG,CAAC,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,uDAAuD,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnH,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
package/dist/generic/types.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RecommendationResult = exports.RecommendationRequest = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Used to make requests to Recommendation providers
|
|
6
3
|
*/
|
|
7
|
-
class RecommendationRequest {
|
|
4
|
+
export class RecommendationRequest {
|
|
8
5
|
constructor() {
|
|
9
6
|
/**
|
|
10
7
|
* Array of the requested recommendations. When preparing a batch of recommendations to request, do NOT set the RecommendationRunID or attempt
|
|
@@ -14,11 +11,10 @@ class RecommendationRequest {
|
|
|
14
11
|
this.Recommendations = [];
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
|
-
exports.RecommendationRequest = RecommendationRequest;
|
|
18
14
|
/**
|
|
19
15
|
* This response is generated for each Recommend() request
|
|
20
16
|
*/
|
|
21
|
-
class RecommendationResult {
|
|
17
|
+
export class RecommendationResult {
|
|
22
18
|
constructor(request) {
|
|
23
19
|
/**
|
|
24
20
|
* The Recommendation Item Entities that were created by the recommendation provider
|
|
@@ -54,5 +50,4 @@ class RecommendationResult {
|
|
|
54
50
|
return this.ErrorMessage.split('\n');
|
|
55
51
|
}
|
|
56
52
|
}
|
|
57
|
-
exports.RecommendationResult = RecommendationResult;
|
|
58
53
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generic/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generic/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAAlC;QAQI;;;;WAIG;QACH,oBAAe,GAA4B,EAAE,CAAC;IA6ClD,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAa7B,YAAY,OAA8B;QAP1C;;WAEG;QACH,wBAAmB,GAAgC,EAAE,CAAC;QAKlD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,cAAsB;QAChC,IAAI,CAAC,YAAY,IAAI,YAAY,cAAc,KAAK,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,YAAoB;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,YAAY,IAAI,UAAU,YAAY,KAAK,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,gBAAgB;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACJ"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './Engine';
|
|
2
|
-
export * from './ProviderBase';
|
|
3
|
-
export * from './generic/types';
|
|
1
|
+
export * from './Engine.js';
|
|
2
|
+
export * from './ProviderBase.js';
|
|
3
|
+
export * from './generic/types.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
__exportStar(require("./Engine"), exports);
|
|
18
|
-
__exportStar(require("./ProviderBase"), exports);
|
|
19
|
-
__exportStar(require("./generic/types"), exports);
|
|
1
|
+
export * from './Engine.js';
|
|
2
|
+
export * from './ProviderBase.js';
|
|
3
|
+
export * from './generic/types.js';
|
|
20
4
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ai-recommendations",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "4.0.0",
|
|
4
5
|
"description": "MemberJunction Recommendations Engine",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
@@ -9,20 +10,20 @@
|
|
|
9
10
|
],
|
|
10
11
|
"scripts": {
|
|
11
12
|
"start": "ts-node-dev src/index.ts",
|
|
12
|
-
"build": "tsc",
|
|
13
|
+
"build": "tsc && tsc-alias -f",
|
|
13
14
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
14
15
|
},
|
|
15
16
|
"author": "MemberJunction.com",
|
|
16
17
|
"license": "ISC",
|
|
17
18
|
"devDependencies": {
|
|
18
19
|
"ts-node-dev": "^2.0.0",
|
|
19
|
-
"typescript": "^5.
|
|
20
|
+
"typescript": "^5.9.3"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"@memberjunction/global": "
|
|
23
|
-
"@memberjunction/core": "
|
|
24
|
-
"@memberjunction/core-entities": "
|
|
25
|
-
"@memberjunction/ai": "
|
|
23
|
+
"@memberjunction/global": "4.0.0",
|
|
24
|
+
"@memberjunction/core": "4.0.0",
|
|
25
|
+
"@memberjunction/core-entities": "4.0.0",
|
|
26
|
+
"@memberjunction/ai": "4.0.0"
|
|
26
27
|
},
|
|
27
28
|
"repository": {
|
|
28
29
|
"type": "git",
|