@memberjunction/core-entities-server 5.26.0 → 5.27.1

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/index.d.ts CHANGED
@@ -3,7 +3,6 @@ export * from './custom/MJAIPromptRunEntityServer.server.js';
3
3
  export * from './custom/MJConversationDetailEntityServer.server.js';
4
4
  export * from './custom/MJDuplicateRunEntityServer.server.js';
5
5
  export * from './custom/MJQueryEntityServer.server.js';
6
- export * from './custom/MJReportEntityServer.server.js';
7
6
  export * from './custom/MJTemplateContentEntityServer.server.js';
8
7
  export * from './custom/MJUserViewEntityServer.server.js';
9
8
  export * from './custom/MJActionEntityServer.server.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -3,7 +3,6 @@ export * from './custom/MJAIPromptRunEntityServer.server.js';
3
3
  export * from './custom/MJConversationDetailEntityServer.server.js';
4
4
  export * from './custom/MJDuplicateRunEntityServer.server.js';
5
5
  export * from './custom/MJQueryEntityServer.server.js';
6
- export * from './custom/MJReportEntityServer.server.js';
7
6
  export * from './custom/MJTemplateContentEntityServer.server.js';
8
7
  export * from './custom/MJUserViewEntityServer.server.js';
9
8
  export * from './custom/MJActionEntityServer.server.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/core-entities-server",
3
3
  "type": "module",
4
- "version": "5.26.0",
4
+ "version": "5.27.1",
5
5
  "description": "Entity subclasses for the metadata layer of MemberJunction that are only used on server side applications like MJAPI, distributed as part of each release of MemberJunction",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -21,26 +21,26 @@
21
21
  "typescript": "^5.9.3"
22
22
  },
23
23
  "dependencies": {
24
- "@memberjunction/actions-base": "5.26.0",
25
- "@memberjunction/ai": "5.26.0",
26
- "@memberjunction/ai-core-plus": "5.26.0",
27
- "@memberjunction/ai-engine-base": "5.26.0",
28
- "@memberjunction/ai-prompts": "5.26.0",
29
- "@memberjunction/ai-provider-bundle": "5.26.0",
30
- "@memberjunction/ai-vectordb": "5.26.0",
31
- "@memberjunction/tag-engine": "5.26.0",
32
- "@memberjunction/ai-vector-dupe": "5.26.0",
33
- "@memberjunction/ai-vectors-memory": "5.26.0",
34
- "@memberjunction/aiengine": "5.26.0",
35
- "@memberjunction/core": "5.26.0",
36
- "@memberjunction/core-entities": "5.26.0",
37
- "@memberjunction/generic-database-provider": "5.26.0",
38
- "@memberjunction/doc-utils": "5.26.0",
39
- "@memberjunction/global": "5.26.0",
40
- "@memberjunction/skip-types": "5.26.0",
41
- "@memberjunction/sql-converter": "5.26.0",
42
- "@memberjunction/sql-parser": "5.26.0",
43
- "@memberjunction/sqlserver-dataprovider": "5.26.0",
24
+ "@memberjunction/actions-base": "5.27.1",
25
+ "@memberjunction/ai": "5.27.1",
26
+ "@memberjunction/ai-core-plus": "5.27.1",
27
+ "@memberjunction/ai-engine-base": "5.27.1",
28
+ "@memberjunction/ai-prompts": "5.27.1",
29
+ "@memberjunction/ai-provider-bundle": "5.27.1",
30
+ "@memberjunction/ai-vectordb": "5.27.1",
31
+ "@memberjunction/tag-engine": "5.27.1",
32
+ "@memberjunction/ai-vector-dupe": "5.27.1",
33
+ "@memberjunction/ai-vectors-memory": "5.27.1",
34
+ "@memberjunction/aiengine": "5.27.1",
35
+ "@memberjunction/core": "5.27.1",
36
+ "@memberjunction/core-entities": "5.27.1",
37
+ "@memberjunction/generic-database-provider": "5.27.1",
38
+ "@memberjunction/doc-utils": "5.27.1",
39
+ "@memberjunction/global": "5.27.1",
40
+ "@memberjunction/skip-types": "5.27.1",
41
+ "@memberjunction/sql-converter": "5.27.1",
42
+ "@memberjunction/sql-parser": "5.27.1",
43
+ "@memberjunction/sqlserver-dataprovider": "5.27.1",
44
44
  "nunjucks": "3.2.4",
45
45
  "rxjs": "~7.8.1",
46
46
  "zod": "~3.24.4"
@@ -1,10 +0,0 @@
1
- import { MJReportEntity } from "@memberjunction/core-entities";
2
- export declare class MJReportEntityServer extends MJReportEntity {
3
- /**
4
- * The server side Report Entity sub-class has a simple logic that will create a snapshot of the report when it is first created and each time it is modified, but only
5
- * if it is either newly created or if the Configuration field has changed.
6
- * @returns
7
- */
8
- Save(): Promise<boolean>;
9
- }
10
- //# sourceMappingURL=MJReportEntityServer.server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MJReportEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJReportEntityServer.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAiD,MAAM,+BAA+B,CAAC;AAG9G,qBACa,oBAAqB,SAAQ,cAAc;IACpD;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAoHxC"}
@@ -1,125 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- 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;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { BaseEntity } from "@memberjunction/core";
8
- import { RegisterClass, SafeJSONParse } from "@memberjunction/global";
9
- import { MJReportEntity } from "@memberjunction/core-entities";
10
- let MJReportEntityServer = class MJReportEntityServer extends MJReportEntity {
11
- /**
12
- * The server side Report Entity sub-class has a simple logic that will create a snapshot of the report when it is first created and each time it is modified, but only
13
- * if it is either newly created or if the Configuration field has changed.
14
- * @returns
15
- */
16
- async Save() {
17
- try {
18
- // first let's get the actual parsed object for the Configuration field
19
- const config = this.Configuration && this.Configuration.length > 0 ? SafeJSONParse(this.Configuration) : null;
20
- const oldTextConfig = this.GetFieldByName('Configuration')?.OldValue;
21
- const oldConfig = oldTextConfig && oldTextConfig.length > 0 ? SafeJSONParse(oldTextConfig) : null;
22
- if ((config && oldConfig) || (config && !this.IsSaved)) {
23
- let createSnapshot = false;
24
- let createReportVersion = false;
25
- if (this.IsSaved) {
26
- // existing record
27
- // we nave a configuration and an old configuration, so we can compare them, cast them to their strong types first
28
- const castedConfig = config;
29
- const castedOldConfig = oldConfig;
30
- // Next, we need to see if the data context has changed at all. We do this by comparing the # of items in the data context. a Data context's items are immutable and we only add new Data Context Items
31
- // so we can simply check to see if we have new data context items or not
32
- const dataContextChanged = Object.keys(castedConfig.dataContext || {})?.length !== Object.keys(castedOldConfig.dataContext || {})?.length;
33
- // next up, we check to see if anything in the execution results changed. The simple way to do that is convert the execution results back to a string and compare those strings
34
- const executionResultsChanged = JSON.stringify(castedConfig.executionResults) !== JSON.stringify(castedOldConfig.executionResults);
35
- // next up we check to see if the analysis changed, which would also represent a "data" change
36
- const analysisChanged = castedConfig.analysis !== castedOldConfig.analysis;
37
- // finally, we check to see if the configuration itself has OUTSIDE of the data elements we just checked. We do that by deleting those properties from those objects, converting to strings
38
- // and comparing them
39
- delete castedConfig.dataContext;
40
- delete castedConfig.analysis;
41
- delete castedConfig.executionResults;
42
- delete castedOldConfig.dataContext;
43
- delete castedOldConfig.executionResults;
44
- delete castedOldConfig.analysis;
45
- // we can now compare the two objects
46
- const configChanged = JSON.stringify(castedConfig) !== JSON.stringify(castedOldConfig);
47
- // now our logic is this - if the DATA changed, but the configuration did NOT change, that means we want to create a new SNAPSHOT of the report - which is the data changing side
48
- // if the configuration changed at all we wnat to create a new Report Version. Sometimes both changd and we do both
49
- createSnapshot = dataContextChanged || executionResultsChanged || analysisChanged;
50
- createReportVersion = configChanged;
51
- }
52
- else {
53
- // we have a new record set createSnapshot to true and createReportVersion to true
54
- createSnapshot = true;
55
- createReportVersion = true;
56
- }
57
- const wasNewRecord = !this.IsSaved;
58
- const saveResult = await super.Save();
59
- if (saveResult && (createSnapshot || createReportVersion)) {
60
- // here we either have a new record or the configuration has changed, so we need to create a snapshot of the report
61
- let success = true;
62
- // Use the entity's provider instead of creating new Metadata instance
63
- const md = this.ProviderToUse;
64
- if (createReportVersion) {
65
- const reportVersion = await md.GetEntityObject('MJ: Report Versions', this.ContextCurrentUser);
66
- reportVersion.ReportID = this.ID;
67
- // const get highest new version number already in DB
68
- let newVersionNumber = 1;
69
- if (!wasNewRecord) {
70
- const rv = this.RunViewProviderToUse;
71
- const rvResult = await rv.RunView({
72
- Fields: ['VersionNumber'],
73
- EntityName: 'MJ: Report Versions',
74
- ExtraFilter: `ReportID = '${this.ID}'`,
75
- MaxRows: 1,
76
- OrderBy: 'VersionNumber DESC',
77
- }, this.ContextCurrentUser);
78
- if (rvResult.Success && rvResult.Results.length > 0) {
79
- newVersionNumber = parseInt(rvResult.Results[0].VersionNumber) + 1;
80
- }
81
- else {
82
- newVersionNumber = 1; // this is an error state as we previously had a saved report, BUT there were no saved versions for the report, so we are going to use 1 here, but let's log a warning
83
- console.warn('MJReportEntityServer.Save(): No report versions found for report ID:', this.ID);
84
- console.warn('MJReportEntityServer.Save(): Using version number 1 for new report version');
85
- }
86
- }
87
- reportVersion.Name = this.Name; // copy current name to the new version
88
- reportVersion.Description = this.Description; // copy current description to the new version
89
- reportVersion.VersionNumber = newVersionNumber;
90
- reportVersion.Configuration = JSON.stringify(this.Configuration);
91
- success = success && await reportVersion.Save();
92
- if (!success) {
93
- console.error('MJReportEntityServer.Save(): Error saving report version\n' + reportVersion.LatestResult.CompleteMessage);
94
- }
95
- }
96
- if (createSnapshot) {
97
- const snapshot = await md.GetEntityObject('MJ: Report Snapshots', this.ContextCurrentUser);
98
- snapshot.ReportID = this.ID;
99
- snapshot.UserID = this.ContextCurrentUser.ID;
100
- // in the snapshot entity the ResultSet column is the Configuration column from the Report entity
101
- snapshot.ResultSet = JSON.stringify(this.Configuration);
102
- success = success && await snapshot.Save();
103
- }
104
- return success;
105
- }
106
- else {
107
- return saveResult;
108
- }
109
- }
110
- else {
111
- // no configuration or no parseable configuration, so we just call super.Save();
112
- return super.Save();
113
- }
114
- }
115
- catch (e) {
116
- console.error('Error in MJReportEntityServer.Save():', e);
117
- return false;
118
- }
119
- }
120
- };
121
- MJReportEntityServer = __decorate([
122
- RegisterClass(BaseEntity, 'MJ: Reports')
123
- ], MJReportEntityServer);
124
- export { MJReportEntityServer };
125
- //# sourceMappingURL=MJReportEntityServer.server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MJReportEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJReportEntityServer.server.ts"],"names":[],"mappings":"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"}