@memberjunction/server 1.0.6 → 1.0.7-next.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 (62) hide show
  1. package/.eslintignore +4 -4
  2. package/.eslintrc +24 -24
  3. package/CHANGELOG.json +92 -0
  4. package/CHANGELOG.md +25 -0
  5. package/README.md +141 -141
  6. package/dist/config.d.ts +3 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +4 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/entitySubclasses/entityPermissions.server.d.ts +23 -0
  11. package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -0
  12. package/dist/entitySubclasses/entityPermissions.server.js +99 -0
  13. package/dist/entitySubclasses/entityPermissions.server.js.map +1 -0
  14. package/dist/entitySubclasses/userViewEntity.server.js +17 -17
  15. package/dist/generated/generated.d.ts.map +1 -1
  16. package/dist/generated/generated.js.map +1 -1
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/resolvers/AskSkipResolver.js +10 -10
  22. package/dist/resolvers/FileCategoryResolver.js +2 -2
  23. package/dist/resolvers/ReportResolver.js +4 -4
  24. package/package.json +80 -80
  25. package/src/apolloServer/TransactionPlugin.ts +57 -57
  26. package/src/apolloServer/index.ts +33 -33
  27. package/src/auth/exampleNewUserSubClass.ts +73 -73
  28. package/src/auth/index.ts +151 -151
  29. package/src/auth/newUsers.ts +56 -56
  30. package/src/auth/tokenExpiredError.ts +12 -12
  31. package/src/cache.ts +10 -10
  32. package/src/config.ts +89 -84
  33. package/src/context.ts +119 -119
  34. package/src/directives/Public.ts +42 -42
  35. package/src/directives/index.ts +1 -1
  36. package/src/entitySubclasses/entityPermissions.server.ts +111 -0
  37. package/src/entitySubclasses/userViewEntity.server.ts +187 -187
  38. package/src/generated/generated.ts +2573 -2573
  39. package/src/generic/PushStatusResolver.ts +40 -40
  40. package/src/generic/ResolverBase.ts +331 -331
  41. package/src/generic/RunViewResolver.ts +350 -350
  42. package/src/index.ts +133 -137
  43. package/src/orm.ts +36 -36
  44. package/src/resolvers/AskSkipResolver.ts +782 -782
  45. package/src/resolvers/ColorResolver.ts +72 -72
  46. package/src/resolvers/DatasetResolver.ts +115 -115
  47. package/src/resolvers/EntityRecordNameResolver.ts +77 -77
  48. package/src/resolvers/EntityResolver.ts +37 -37
  49. package/src/resolvers/FileCategoryResolver.ts +38 -38
  50. package/src/resolvers/FileResolver.ts +110 -110
  51. package/src/resolvers/MergeRecordsResolver.ts +198 -198
  52. package/src/resolvers/PotentialDuplicateRecordResolver.ts +59 -59
  53. package/src/resolvers/QueryResolver.ts +42 -42
  54. package/src/resolvers/ReportResolver.ts +131 -131
  55. package/src/resolvers/UserFavoriteResolver.ts +102 -102
  56. package/src/resolvers/UserResolver.ts +29 -29
  57. package/src/resolvers/UserViewResolver.ts +64 -64
  58. package/src/types.ts +19 -19
  59. package/src/util.ts +106 -106
  60. package/tsconfig.json +31 -31
  61. package/typedoc.json +4 -4
  62. package/build.log.json +0 -47
@@ -0,0 +1,99 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ var EntityPermissionsEntity_Server_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LoadEntityPermissionsServerSubClass = exports.EntityPermissionsEntity_Server = void 0;
14
+ const global_1 = require("@memberjunction/global");
15
+ const core_1 = require("@memberjunction/core");
16
+ const core_entities_1 = require("@memberjunction/core-entities");
17
+ const axios_1 = __importDefault(require("axios"));
18
+ const config_1 = require("../config");
19
+ let EntityPermissionsEntity_Server = EntityPermissionsEntity_Server_1 = class EntityPermissionsEntity_Server extends core_entities_1.EntityPermissionEntity {
20
+ static getSubmissionURL() {
21
+ return `${this._baseURL}:${this._port}${this._apiEndpoint}`;
22
+ }
23
+ static get EntityIDQueue() {
24
+ return this._entityIDQueue;
25
+ }
26
+ static ClearQueue() {
27
+ this._entityIDQueue = [];
28
+ this._submissionTimer = null;
29
+ }
30
+ static AddToQueue(entityID) {
31
+ if (this._entityIDQueue.indexOf(entityID) === -1)
32
+ this._entityIDQueue.push(entityID);
33
+ this._lastModifiedTime = new Date();
34
+ this.CheckStartSubmissionTimer();
35
+ }
36
+ static CheckStartSubmissionTimer() {
37
+ if (this._submissionTimer === null) {
38
+ this.StartSubmissionTimer();
39
+ }
40
+ else {
41
+ clearTimeout(this._submissionTimer);
42
+ this.StartSubmissionTimer();
43
+ }
44
+ }
45
+ static StartSubmissionTimer() {
46
+ this._submissionTimer = setTimeout(() => {
47
+ this.SubmitQueue();
48
+ }, this._submissionDelay);
49
+ }
50
+ static async SubmitQueue() {
51
+ this._lastModifiedTime = null;
52
+ if (this._entityIDQueue.length > 0) {
53
+ try {
54
+ const response = await axios_1.default.post(this.getSubmissionURL(), {
55
+ entityIDArray: this._entityIDQueue
56
+ });
57
+ if (response.status === 200 && response.data.status === 'ok') {
58
+ console.log('Queue submitted successfully.');
59
+ this.ClearQueue();
60
+ }
61
+ else {
62
+ console.error('Failed to submit queue:', response.data.errorMessage || 'Unknown error');
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.error('Failed to submit queue:', error);
67
+ }
68
+ }
69
+ else {
70
+ console.log('No entities to submit.');
71
+ }
72
+ }
73
+ Save(options) {
74
+ if (this.Dirty || options?.IgnoreDirtyState)
75
+ EntityPermissionsEntity_Server_1.AddToQueue(this.EntityID);
76
+ return super.Save(options);
77
+ }
78
+ async Delete() {
79
+ const success = await super.Delete();
80
+ if (success)
81
+ EntityPermissionsEntity_Server_1.AddToQueue(this.EntityID);
82
+ return success;
83
+ }
84
+ };
85
+ exports.EntityPermissionsEntity_Server = EntityPermissionsEntity_Server;
86
+ EntityPermissionsEntity_Server._entityIDQueue = [];
87
+ EntityPermissionsEntity_Server._lastModifiedTime = null;
88
+ EntityPermissionsEntity_Server._submissionTimer = null;
89
+ EntityPermissionsEntity_Server._submissionDelay = config_1.___codeGenAPISubmissionDelay;
90
+ EntityPermissionsEntity_Server._baseURL = config_1.___codeGenAPIURL;
91
+ EntityPermissionsEntity_Server._port = config_1.___codeGenAPIPort;
92
+ EntityPermissionsEntity_Server._apiEndpoint = '/api/entity-permissions';
93
+ exports.EntityPermissionsEntity_Server = EntityPermissionsEntity_Server = EntityPermissionsEntity_Server_1 = __decorate([
94
+ (0, global_1.RegisterClass)(core_1.BaseEntity, 'Entity Permissions', 3)
95
+ ], EntityPermissionsEntity_Server);
96
+ function LoadEntityPermissionsServerSubClass() {
97
+ }
98
+ exports.LoadEntityPermissionsServerSubClass = LoadEntityPermissionsServerSubClass;
99
+ //# sourceMappingURL=entityPermissions.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityPermissions.server.js","sourceRoot":"","sources":["../../src/entitySubclasses/entityPermissions.server.ts"],"names":[],"mappings":"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"}
@@ -95,18 +95,18 @@ let UserViewEntity_Server = class UserViewEntity_Server extends core_entities_1.
95
95
  GenerateSysPrompt(entityInfo) {
96
96
  const processedViews = [entityInfo.BaseView];
97
97
  const md = new core_1.Metadata();
98
- const gptSysPrompt = `You are an expert in SQL and Microsoft SQL Server.
99
- You will be provided a user prompt representing how they want to filter the data.
100
- You may *NOT* use JOINS, only sub-queries for related tables.
101
-
102
- I am a bot and can only understand JSON. Your response must be parsable into this type:
103
- const returnType = {
104
- whereClause: string,
105
- orderByClause: string
106
- userExplanationMessage: string
107
- };
108
-
109
- The view that the user is querying is called ${entityInfo.BaseView} and has these fields:
98
+ const gptSysPrompt = `You are an expert in SQL and Microsoft SQL Server.
99
+ You will be provided a user prompt representing how they want to filter the data.
100
+ You may *NOT* use JOINS, only sub-queries for related tables.
101
+
102
+ I am a bot and can only understand JSON. Your response must be parsable into this type:
103
+ const returnType = {
104
+ whereClause: string,
105
+ orderByClause: string
106
+ userExplanationMessage: string
107
+ };
108
+
109
+ The view that the user is querying is called ${entityInfo.BaseView} and has these fields:
110
110
  ${entityInfo.Fields.map(f => {
111
111
  let ret = `${f.Name} (${f.Type})`;
112
112
  if (f.RelatedEntity) {
@@ -116,9 +116,9 @@ ${entityInfo.Fields.map(f => {
116
116
  }).join(',')}`;
117
117
  const fkeyFields = entityInfo.Fields.filter(f => f.RelatedEntity && f.RelatedEntity.length > 0);
118
118
  const fkeyBaseViewsDistinct = fkeyFields.map(f => f.RelatedEntityBaseView).filter((v, i, a) => a.indexOf(v) === i);
119
- const relationships = `
120
- In addition, ${entityInfo.BaseView} has links to other views, as shown here, you can use these views in sub-queries to achieve the request from the user.
121
- If there are multiple filters related to a single related view, attempt to combine them into a single sub-query for efficiency.
119
+ const relationships = `
120
+ In addition, ${entityInfo.BaseView} has links to other views, as shown here, you can use these views in sub-queries to achieve the request from the user.
121
+ If there are multiple filters related to a single related view, attempt to combine them into a single sub-query for efficiency.
122
122
  ${fkeyBaseViewsDistinct.map(v => {
123
123
  if (processedViews.indexOf(v) === -1) {
124
124
  const e = md.Entities.find(e => e.BaseView === v);
@@ -133,7 +133,7 @@ ${fkeyBaseViewsDistinct.map(v => {
133
133
  }
134
134
  else
135
135
  return '';
136
- }).join('\n')}
136
+ }).join('\n')}
137
137
  ${entityInfo.RelatedEntities.map(r => {
138
138
  const e = md.Entities.find(e => e.Name === r.RelatedEntity);
139
139
  if (e) {
@@ -153,7 +153,7 @@ ${entityInfo.RelatedEntities.map(r => {
153
153
  else
154
154
  return '';
155
155
  }).join('\n')}`;
156
- return gptSysPrompt + (processedViews.length > 1 ? relationships : '') + `
156
+ return gptSysPrompt + (processedViews.length > 1 ? relationships : '') + `
157
157
  **** REMEMBER **** I am a BOT, do not return anything other than JSON to me or I will choke on your response!`;
158
158
  }
159
159
  };