@memberjunction/server 1.8.1 → 2.1.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.
Files changed (192) hide show
  1. package/CHANGELOG.json +130 -1
  2. package/CHANGELOG.md +29 -2
  3. package/package.json +31 -40
  4. package/src/apolloServer/index.ts +0 -1
  5. package/src/auth/newUsers.ts +4 -3
  6. package/src/context.ts +19 -27
  7. package/src/entitySubclasses/entityPermissions.server.ts +3 -3
  8. package/src/entitySubclasses/userViewEntity.server.ts +1 -1
  9. package/src/generated/generated.ts +9482 -8398
  10. package/src/generic/ResolverBase.ts +299 -172
  11. package/src/generic/RunViewResolver.ts +204 -14
  12. package/src/index.ts +18 -19
  13. package/src/resolvers/AskSkipResolver.ts +35 -35
  14. package/src/resolvers/ColorResolver.ts +3 -14
  15. package/src/resolvers/DatasetResolver.ts +4 -4
  16. package/src/resolvers/EntityCommunicationsResolver.ts +37 -15
  17. package/src/resolvers/FileCategoryResolver.ts +2 -2
  18. package/src/resolvers/FileResolver.ts +6 -4
  19. package/src/resolvers/MergeRecordsResolver.ts +3 -2
  20. package/src/resolvers/PotentialDuplicateRecordResolver.ts +48 -40
  21. package/src/resolvers/QueryResolver.ts +2 -2
  22. package/src/resolvers/ReportResolver.ts +6 -6
  23. package/src/resolvers/UserFavoriteResolver.ts +8 -8
  24. package/src/resolvers/UserResolver.ts +3 -1
  25. package/src/resolvers/UserViewResolver.ts +1 -1
  26. package/src/types.ts +21 -0
  27. package/tsconfig.json +3 -4
  28. package/dist/apolloServer/TransactionPlugin.d.ts +0 -4
  29. package/dist/apolloServer/TransactionPlugin.d.ts.map +0 -1
  30. package/dist/apolloServer/TransactionPlugin.js +0 -49
  31. package/dist/apolloServer/TransactionPlugin.js.map +0 -1
  32. package/dist/apolloServer/index.d.ts +0 -11
  33. package/dist/apolloServer/index.d.ts.map +0 -1
  34. package/dist/apolloServer/index.js +0 -27
  35. package/dist/apolloServer/index.js.map +0 -1
  36. package/dist/auth/exampleNewUserSubClass.d.ts +0 -6
  37. package/dist/auth/exampleNewUserSubClass.d.ts.map +0 -1
  38. package/dist/auth/exampleNewUserSubClass.js +0 -54
  39. package/dist/auth/exampleNewUserSubClass.js.map +0 -1
  40. package/dist/auth/index.d.ts +0 -30
  41. package/dist/auth/index.d.ts.map +0 -1
  42. package/dist/auth/index.js +0 -129
  43. package/dist/auth/index.js.map +0 -1
  44. package/dist/auth/newUsers.d.ts +0 -5
  45. package/dist/auth/newUsers.d.ts.map +0 -1
  46. package/dist/auth/newUsers.js +0 -66
  47. package/dist/auth/newUsers.js.map +0 -1
  48. package/dist/auth/tokenExpiredError.d.ts +0 -5
  49. package/dist/auth/tokenExpiredError.d.ts.map +0 -1
  50. package/dist/auth/tokenExpiredError.js +0 -16
  51. package/dist/auth/tokenExpiredError.js.map +0 -1
  52. package/dist/cache.d.ts +0 -3
  53. package/dist/cache.d.ts.map +0 -1
  54. package/dist/cache.js +0 -11
  55. package/dist/cache.js.map +0 -1
  56. package/dist/config.d.ts +0 -196
  57. package/dist/config.d.ts.map +0 -1
  58. package/dist/config.js +0 -72
  59. package/dist/config.js.map +0 -1
  60. package/dist/context.d.ts +0 -17
  61. package/dist/context.d.ts.map +0 -1
  62. package/dist/context.js +0 -114
  63. package/dist/context.js.map +0 -1
  64. package/dist/directives/Public.d.ts +0 -4
  65. package/dist/directives/Public.d.ts.map +0 -1
  66. package/dist/directives/Public.js +0 -34
  67. package/dist/directives/Public.js.map +0 -1
  68. package/dist/directives/index.d.ts +0 -2
  69. package/dist/directives/index.d.ts.map +0 -1
  70. package/dist/directives/index.js +0 -18
  71. package/dist/directives/index.js.map +0 -1
  72. package/dist/entitySubclasses/DuplicateRunEntity.server.d.ts +0 -6
  73. package/dist/entitySubclasses/DuplicateRunEntity.server.d.ts.map +0 -1
  74. package/dist/entitySubclasses/DuplicateRunEntity.server.js +0 -37
  75. package/dist/entitySubclasses/DuplicateRunEntity.server.js.map +0 -1
  76. package/dist/entitySubclasses/EntityBehavior.server.d.ts +0 -29
  77. package/dist/entitySubclasses/EntityBehavior.server.d.ts.map +0 -1
  78. package/dist/entitySubclasses/EntityBehavior.server.js +0 -213
  79. package/dist/entitySubclasses/EntityBehavior.server.js.map +0 -1
  80. package/dist/entitySubclasses/entityPermissions.server.d.ts +0 -23
  81. package/dist/entitySubclasses/entityPermissions.server.d.ts.map +0 -1
  82. package/dist/entitySubclasses/entityPermissions.server.js +0 -99
  83. package/dist/entitySubclasses/entityPermissions.server.js.map +0 -1
  84. package/dist/entitySubclasses/userViewEntity.server.d.ts +0 -13
  85. package/dist/entitySubclasses/userViewEntity.server.d.ts.map +0 -1
  86. package/dist/entitySubclasses/userViewEntity.server.js +0 -164
  87. package/dist/entitySubclasses/userViewEntity.server.js.map +0 -1
  88. package/dist/generated/generated.d.ts +0 -6482
  89. package/dist/generated/generated.d.ts.map +0 -1
  90. package/dist/generated/generated.js +0 -35073
  91. package/dist/generated/generated.js.map +0 -1
  92. package/dist/generic/DeleteOptionsInput.d.ts +0 -5
  93. package/dist/generic/DeleteOptionsInput.d.ts.map +0 -1
  94. package/dist/generic/DeleteOptionsInput.js +0 -28
  95. package/dist/generic/DeleteOptionsInput.js.map +0 -1
  96. package/dist/generic/KeyInputOutputTypes.d.ts +0 -16
  97. package/dist/generic/KeyInputOutputTypes.d.ts.map +0 -1
  98. package/dist/generic/KeyInputOutputTypes.js +0 -62
  99. package/dist/generic/KeyInputOutputTypes.js.map +0 -1
  100. package/dist/generic/KeyValuePairInput.d.ts +0 -5
  101. package/dist/generic/KeyValuePairInput.d.ts.map +0 -1
  102. package/dist/generic/KeyValuePairInput.js +0 -28
  103. package/dist/generic/KeyValuePairInput.js.map +0 -1
  104. package/dist/generic/PushStatusResolver.d.ts +0 -14
  105. package/dist/generic/PushStatusResolver.d.ts.map +0 -1
  106. package/dist/generic/PushStatusResolver.js +0 -58
  107. package/dist/generic/PushStatusResolver.js.map +0 -1
  108. package/dist/generic/ResolverBase.d.ts +0 -37
  109. package/dist/generic/ResolverBase.d.ts.map +0 -1
  110. package/dist/generic/ResolverBase.js +0 -468
  111. package/dist/generic/ResolverBase.js.map +0 -1
  112. package/dist/generic/RunViewResolver.d.ts +0 -88
  113. package/dist/generic/RunViewResolver.d.ts.map +0 -1
  114. package/dist/generic/RunViewResolver.js +0 -443
  115. package/dist/generic/RunViewResolver.js.map +0 -1
  116. package/dist/index.d.ts +0 -28
  117. package/dist/index.d.ts.map +0 -1
  118. package/dist/index.js +0 -145
  119. package/dist/index.js.map +0 -1
  120. package/dist/orm.d.ts +0 -4
  121. package/dist/orm.d.ts.map +0 -1
  122. package/dist/orm.js +0 -34
  123. package/dist/orm.js.map +0 -1
  124. package/dist/resolvers/AskSkipResolver.d.ts +0 -54
  125. package/dist/resolvers/AskSkipResolver.d.ts.map +0 -1
  126. package/dist/resolvers/AskSkipResolver.js +0 -800
  127. package/dist/resolvers/AskSkipResolver.js.map +0 -1
  128. package/dist/resolvers/ColorResolver.d.ts +0 -22
  129. package/dist/resolvers/ColorResolver.d.ts.map +0 -1
  130. package/dist/resolvers/ColorResolver.js +0 -94
  131. package/dist/resolvers/ColorResolver.js.map +0 -1
  132. package/dist/resolvers/DatasetResolver.d.ts +0 -42
  133. package/dist/resolvers/DatasetResolver.d.ts.map +0 -1
  134. package/dist/resolvers/DatasetResolver.js +0 -168
  135. package/dist/resolvers/DatasetResolver.js.map +0 -1
  136. package/dist/resolvers/EntityCommunicationsResolver.d.ts +0 -49
  137. package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +0 -1
  138. package/dist/resolvers/EntityCommunicationsResolver.js +0 -228
  139. package/dist/resolvers/EntityCommunicationsResolver.js.map +0 -1
  140. package/dist/resolvers/EntityRecordNameResolver.d.ts +0 -21
  141. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +0 -1
  142. package/dist/resolvers/EntityRecordNameResolver.js +0 -113
  143. package/dist/resolvers/EntityRecordNameResolver.js.map +0 -1
  144. package/dist/resolvers/EntityResolver.d.ts +0 -6
  145. package/dist/resolvers/EntityResolver.d.ts.map +0 -1
  146. package/dist/resolvers/EntityResolver.js +0 -60
  147. package/dist/resolvers/EntityResolver.js.map +0 -1
  148. package/dist/resolvers/FileCategoryResolver.d.ts +0 -6
  149. package/dist/resolvers/FileCategoryResolver.d.ts.map +0 -1
  150. package/dist/resolvers/FileCategoryResolver.js +0 -65
  151. package/dist/resolvers/FileCategoryResolver.js.map +0 -1
  152. package/dist/resolvers/FileResolver.d.ts +0 -24
  153. package/dist/resolvers/FileResolver.d.ts.map +0 -1
  154. package/dist/resolvers/FileResolver.js +0 -162
  155. package/dist/resolvers/FileResolver.js.map +0 -1
  156. package/dist/resolvers/MergeRecordsResolver.d.ts +0 -59
  157. package/dist/resolvers/MergeRecordsResolver.d.ts.map +0 -1
  158. package/dist/resolvers/MergeRecordsResolver.js +0 -256
  159. package/dist/resolvers/MergeRecordsResolver.js.map +0 -1
  160. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts +0 -29
  161. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +0 -1
  162. package/dist/resolvers/PotentialDuplicateRecordResolver.js +0 -127
  163. package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +0 -1
  164. package/dist/resolvers/QueryResolver.d.ts +0 -13
  165. package/dist/resolvers/QueryResolver.d.ts.map +0 -1
  166. package/dist/resolvers/QueryResolver.js +0 -74
  167. package/dist/resolvers/QueryResolver.js.map +0 -1
  168. package/dist/resolvers/ReportResolver.d.ts +0 -20
  169. package/dist/resolvers/ReportResolver.d.ts.map +0 -1
  170. package/dist/resolvers/ReportResolver.js +0 -175
  171. package/dist/resolvers/ReportResolver.js.map +0 -1
  172. package/dist/resolvers/UserFavoriteResolver.d.ts +0 -42
  173. package/dist/resolvers/UserFavoriteResolver.d.ts.map +0 -1
  174. package/dist/resolvers/UserFavoriteResolver.js +0 -221
  175. package/dist/resolvers/UserFavoriteResolver.js.map +0 -1
  176. package/dist/resolvers/UserResolver.d.ts +0 -10
  177. package/dist/resolvers/UserResolver.d.ts.map +0 -1
  178. package/dist/resolvers/UserResolver.js +0 -72
  179. package/dist/resolvers/UserResolver.js.map +0 -1
  180. package/dist/resolvers/UserViewResolver.d.ts +0 -13
  181. package/dist/resolvers/UserViewResolver.d.ts.map +0 -1
  182. package/dist/resolvers/UserViewResolver.js +0 -102
  183. package/dist/resolvers/UserViewResolver.js.map +0 -1
  184. package/dist/types.d.ts +0 -17
  185. package/dist/types.d.ts.map +0 -1
  186. package/dist/types.js +0 -3
  187. package/dist/types.js.map +0 -1
  188. package/dist/util.d.ts +0 -4
  189. package/dist/util.d.ts.map +0 -1
  190. package/dist/util.js +0 -89
  191. package/dist/util.js.map +0 -1
  192. package/src/entitySubclasses/EntityBehavior.server.ts +0 -241
package/dist/config.js DELETED
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loadConfig = exports.configInfo = exports.configFile = exports.mj_core_schema = exports.auth0ClientSecret = exports.auth0WebClientID = exports.auth0Domain = exports.___skipAPIOrgId = exports.___skipAPIurl = exports.userEmailMap = exports.websiteRunFromPackage = exports.enableIntrospection = exports.tenantID = exports.webClientID = exports.graphqlRootPath = exports.___codeGenAPISubmissionDelay = exports.___codeGenAPIPort = exports.___codeGenAPIURL = exports.graphqlPort = exports.dbTrustServerCertificate = exports.dbInstanceName = exports.dbDatabase = exports.dbPassword = exports.dbUsername = exports.dbPort = exports.dbHost = exports.nodeEnv = void 0;
7
- const env_var_1 = __importDefault(require("env-var"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const zod_1 = require("zod");
11
- exports.nodeEnv = env_var_1.default.get('NODE_ENV').asString();
12
- exports.dbHost = env_var_1.default.get('DB_HOST').required().asString();
13
- exports.dbPort = env_var_1.default.get('DB_PORT').default('1433').asPortNumber();
14
- exports.dbUsername = env_var_1.default.get('DB_USERNAME').required().asString();
15
- exports.dbPassword = env_var_1.default.get('DB_PASSWORD').required().asString();
16
- exports.dbDatabase = env_var_1.default.get('DB_DATABASE').required().asString();
17
- exports.dbInstanceName = env_var_1.default.get('DB_INSTANCE_NAME').asString();
18
- exports.dbTrustServerCertificate = env_var_1.default.get('DB_TRUST_SERVER_CERTIFICATE').asBool();
19
- exports.graphqlPort = env_var_1.default.get('PORT').default('4000').asPortNumber();
20
- exports.___codeGenAPIURL = env_var_1.default.get('CODEGEN_API_URL').asString();
21
- exports.___codeGenAPIPort = env_var_1.default.get('CODEGEN_API_PORT').default('3999').asPortNumber();
22
- exports.___codeGenAPISubmissionDelay = env_var_1.default.get('CODEGEN_API_SUBMISSION_DELAY').default(5000).asIntPositive();
23
- exports.graphqlRootPath = env_var_1.default.get('ROOT_PATH').default('/').asString();
24
- exports.webClientID = env_var_1.default.get('WEB_CLIENT_ID').asString();
25
- exports.tenantID = env_var_1.default.get('TENANT_ID').asString();
26
- exports.enableIntrospection = env_var_1.default.get('ENABLE_INTROSPECTION').default('false').asBool();
27
- exports.websiteRunFromPackage = env_var_1.default.get('WEBSITE_RUN_FROM_PACKAGE').asIntPositive();
28
- exports.userEmailMap = env_var_1.default.get('USER_EMAIL_MAP').default('{}').asJsonObject();
29
- exports.___skipAPIurl = env_var_1.default.get('ASK_SKIP_API_URL').asString();
30
- exports.___skipAPIOrgId = env_var_1.default.get('ASK_SKIP_ORGANIZATION_ID').asString();
31
- exports.auth0Domain = env_var_1.default.get('AUTH0_DOMAIN').asString();
32
- exports.auth0WebClientID = env_var_1.default.get('AUTH0_CLIENT_ID').asString();
33
- exports.auth0ClientSecret = env_var_1.default.get('AUTH0_CLIENT_SECRET').asString();
34
- exports.mj_core_schema = env_var_1.default.get('MJ_CORE_SCHEMA').asString();
35
- exports.configFile = env_var_1.default.get('CONFIG_FILE').asString();
36
- const userHandlingInfoSchema = zod_1.z.object({
37
- autoCreateNewUsers: zod_1.z.boolean().optional().default(false),
38
- newUserLimitedToAuthorizedDomains: zod_1.z.boolean().optional().default(false),
39
- newUserAuthorizedDomains: zod_1.z.array(zod_1.z.string()).optional().default([]),
40
- newUserRoles: zod_1.z.array(zod_1.z.string()).optional().default([]),
41
- updateCacheWhenNotFound: zod_1.z.boolean().optional().default(false),
42
- updateCacheWhenNotFoundDelay: zod_1.z.number().optional().default(30000),
43
- contextUserForNewUserCreation: zod_1.z.string().optional().default(''),
44
- });
45
- const databaseSettingsInfoSchema = zod_1.z.object({
46
- connectionTimeout: zod_1.z.number(),
47
- requestTimeout: zod_1.z.number(),
48
- metadataCacheRefreshInterval: zod_1.z.number(),
49
- });
50
- const viewingSystemInfoSchema = zod_1.z.object({
51
- enableSmartFilters: zod_1.z.boolean().optional(),
52
- });
53
- const askSkipInfoSchema = zod_1.z.object({
54
- organizationInfo: zod_1.z.string().optional(),
55
- });
56
- const configInfoSchema = zod_1.z.object({
57
- userHandling: userHandlingInfoSchema,
58
- databaseSettings: databaseSettingsInfoSchema,
59
- viewingSystem: viewingSystemInfoSchema.optional(),
60
- askSkip: askSkipInfoSchema.optional(),
61
- });
62
- exports.configInfo = loadConfig();
63
- function loadConfig() {
64
- const configPath = exports.configFile ?? path_1.default.resolve('config.json');
65
- if (!fs_1.default.existsSync(configPath)) {
66
- throw new Error(`Config file ${configPath} does not exist.`);
67
- }
68
- const configData = fs_1.default.readFileSync(configPath, 'utf-8');
69
- return configInfoSchema.parse(JSON.parse(configData));
70
- }
71
- exports.loadConfig = loadConfig;
72
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts DELETED
@@ -1,17 +0,0 @@
1
- /// <reference types="node" />
2
- import { IncomingMessage } from 'http';
3
- import 'reflect-metadata';
4
- import { Subject } from 'rxjs';
5
- import { DataSource } from 'typeorm';
6
- import { UserPayload } from './types';
7
- export declare const getUserPayload: (bearerToken: string, sessionId: string, dataSource: DataSource, requestDomain?: string) => Promise<UserPayload>;
8
- export declare const contextFunction: ({ setupComplete$, dataSource }: {
9
- setupComplete$: Subject<unknown>;
10
- dataSource: DataSource;
11
- }) => ({ req }: {
12
- req: IncomingMessage;
13
- }) => Promise<{
14
- dataSource: DataSource;
15
- userPayload: UserPayload;
16
- }>;
17
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGvC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAkB,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIrC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA0BtC,eAAO,MAAM,cAAc,gBACZ,MAAM,iCAEP,UAAU,kBACN,MAAM,KACrB,QAAQ,WAAW,CAwDrB,CAAC;AAEF,eAAO,MAAM,eAAe,mCACO;IAAE,cAAc,EAAE,QAAQ,OAAO,CAAC,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,eAC7E;IAAE,GAAG,EAAE,eAAe,CAAA;CAAE;;;EAiBvC,CAAC"}
package/dist/context.js DELETED
@@ -1,114 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.contextFunction = exports.getUserPayload = void 0;
27
- const url = __importStar(require("url"));
28
- const jsonwebtoken_1 = require("jsonwebtoken");
29
- require("reflect-metadata");
30
- const rxjs_1 = require("rxjs");
31
- const type_graphql_1 = require("type-graphql");
32
- const auth_1 = require("./auth");
33
- const cache_1 = require("./cache");
34
- const config_1 = require("./config");
35
- const auth_2 = require("./auth");
36
- const verifyAsync = async (issuer, options, token) => new Promise((resolve, reject) => {
37
- (0, jsonwebtoken_1.verify)(token, (0, auth_1.getSigningKeys)(issuer), options, (err, jwt) => {
38
- if (jwt && typeof jwt !== 'string' && !err) {
39
- const payload = jwt.payload ?? jwt;
40
- console.log(`Valid token: ${payload.name} (${payload.email ? payload.email : payload.preferred_username})`);
41
- resolve(payload);
42
- }
43
- else {
44
- console.warn('Invalid token');
45
- reject(err);
46
- }
47
- });
48
- });
49
- const getUserPayload = async (bearerToken, sessionId = 'default', dataSource, requestDomain) => {
50
- try {
51
- const token = bearerToken.replace('Bearer ', '');
52
- if (!token) {
53
- console.warn('No token to validate');
54
- throw new type_graphql_1.AuthenticationError('Missing token');
55
- }
56
- const payload = (0, jsonwebtoken_1.decode)(token);
57
- if (!payload || typeof payload === 'string') {
58
- throw new type_graphql_1.AuthenticationError('Invalid token payload');
59
- }
60
- const expiryDate = new Date((payload.exp ?? 0) * 1000);
61
- if (expiryDate.getTime() <= Date.now()) {
62
- throw new auth_2.TokenExpiredError(expiryDate);
63
- }
64
- if (!cache_1.authCache.has(token)) {
65
- const issuer = payload.iss;
66
- if (!issuer) {
67
- console.warn('No issuer claim on token');
68
- throw new type_graphql_1.AuthenticationError('Missing issuer claim on token');
69
- }
70
- await verifyAsync(issuer, auth_1.validationOptions[issuer], token);
71
- cache_1.authCache.set(token, true);
72
- }
73
- const email = payload?.email
74
- ? config_1.userEmailMap[payload?.email] ?? payload?.email
75
- : payload?.preferred_username;
76
- const fullName = payload?.name;
77
- const firstName = payload?.given_name || fullName?.split(' ')[0];
78
- const lastName = payload?.family_name || fullName?.split(' ')[1] || fullName?.split(' ')[0];
79
- const userRecord = await (0, auth_1.verifyUserRecord)(email, firstName, lastName, requestDomain, dataSource);
80
- if (!userRecord) {
81
- console.error(`User ${email} not found`);
82
- throw new type_graphql_1.AuthorizationError();
83
- }
84
- else if (!userRecord.IsActive) {
85
- console.error(`User ${email} found but inactive`);
86
- throw new type_graphql_1.AuthorizationError();
87
- }
88
- return { userRecord, email, sessionId };
89
- }
90
- catch (e) {
91
- console.error(e);
92
- if (e instanceof auth_2.TokenExpiredError) {
93
- throw e;
94
- }
95
- else
96
- return {};
97
- }
98
- };
99
- exports.getUserPayload = getUserPayload;
100
- const contextFunction = ({ setupComplete$, dataSource }) => async ({ req }) => {
101
- await (0, rxjs_1.firstValueFrom)(setupComplete$);
102
- const sessionIdRaw = req.headers['x-session-id'];
103
- const requestDomain = url.parse(req.headers.origin || '');
104
- const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
105
- const bearerToken = req.headers.authorization ?? '';
106
- const userPayload = await (0, exports.getUserPayload)(bearerToken, sessionId, dataSource, requestDomain?.hostname ? requestDomain.hostname : undefined);
107
- const operationName = req.body?.operationName;
108
- if (operationName !== 'IntrospectionQuery') {
109
- console.log({ operationName });
110
- }
111
- return { dataSource, userPayload };
112
- };
113
- exports.contextFunction = contextFunction;
114
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { DirectiveBuilder } from '../types';
2
- export declare function Public(): PropertyDecorator & MethodDecorator & ClassDecorator;
3
- export declare const publicDirective: DirectiveBuilder;
4
- //# sourceMappingURL=Public.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Public.d.ts","sourceRoot":"","sources":["../../src/directives/Public.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAIxD,wBAAgB,MAAM,IAAI,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAC;AAM/E,eAAO,MAAM,eAAe,EAAE,gBA4B7B,CAAC"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.publicDirective = exports.Public = void 0;
4
- const utils_1 = require("@graphql-tools/utils");
5
- const graphql_1 = require("graphql");
6
- const type_graphql_1 = require("type-graphql");
7
- const DIRECTIVE_NAME = 'Public';
8
- function Public() {
9
- return (targetOrPrototype, propertyKey, descriptor) => (0, type_graphql_1.Directive)(`@${DIRECTIVE_NAME}`)(targetOrPrototype, propertyKey, descriptor);
10
- }
11
- exports.Public = Public;
12
- exports.publicDirective = {
13
- typeDefs: `directive @${DIRECTIVE_NAME} on FIELD_DEFINITION`,
14
- transformer: (schema) => {
15
- const fieldMapper = (fieldConfig) => {
16
- const directive = (0, utils_1.getDirective)(schema, fieldConfig, DIRECTIVE_NAME)?.[0];
17
- if (directive) {
18
- return fieldConfig;
19
- }
20
- else {
21
- const { resolve = graphql_1.defaultFieldResolver } = fieldConfig;
22
- const directiveResolver = async (source, args, context, info) => {
23
- if (!context?.userPayload?.userRecord?.IsActive) {
24
- throw new type_graphql_1.AuthorizationError();
25
- }
26
- return await resolve(source, args, context, info);
27
- };
28
- return { ...fieldConfig, resolve: directiveResolver };
29
- }
30
- };
31
- return (0, utils_1.mapSchema)(schema, { [utils_1.MapperKind.OBJECT_FIELD]: fieldMapper });
32
- },
33
- };
34
- //# sourceMappingURL=Public.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Public.js","sourceRoot":"","sources":["../../src/directives/Public.ts"],"names":[],"mappings":";;;AAAA,gDAAwF;AACxF,qCAAqE;AACrE,+CAA6D;AAG7D,MAAM,cAAc,GAAG,QAAQ,CAAC;AAGhC,SAAgB,MAAM;IACpB,OAAO,CAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,CACpD,IAAA,wBAAS,EAAC,IAAI,cAAc,EAAE,CAAC,CAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAChF,CAAC;AAHD,wBAGC;AAEY,QAAA,eAAe,GAAqB;IAC/C,QAAQ,EAAE,cAAc,cAAc,sBAAsB;IAC5D,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;QACtB,MAAM,WAAW,GAAgB,CAAC,WAAW,EAAE,EAAE;YAC/C,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,WAAW,CAAC;YACrB,CAAC;iBAAM,CAAC;gBAEN,MAAM,EAAE,OAAO,GAAG,8BAAoB,EAAE,GAAG,WAAW,CAAC;gBACvD,MAAM,iBAAiB,GAA8C,KAAK,EACxE,MAAM,EACN,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,EAAE;oBAEF,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;wBAChD,MAAM,IAAI,iCAAkB,EAAE,CAAC;oBACjC,CAAC;oBACD,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBACpD,CAAC,CAAC;gBAEF,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;YACxD,CAAC;QACH,CAAC,CAAC;QACF,OAAO,IAAA,iBAAS,EAAC,MAAM,EAAE,EAAE,CAAC,kBAAU,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC;CACF,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './Public';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/directives/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
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("./Public"), exports);
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/directives/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
@@ -1,6 +0,0 @@
1
- import { DuplicateRunEntity } from "@memberjunction/core-entities";
2
- export declare class DuplicateRunEntity_Server extends DuplicateRunEntity {
3
- Save(): Promise<boolean>;
4
- }
5
- export declare function LoadDuplicateRunEntityServerSubClass(): void;
6
- //# sourceMappingURL=DuplicateRunEntity.server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DuplicateRunEntity.server.d.ts","sourceRoot":"","sources":["../../src/entitySubclasses/DuplicateRunEntity.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,qBACa,yBAA0B,SAAQ,kBAAkB;IAChD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAiBxC;AAED,wBAAgB,oCAAoC,SAEnD"}
@@ -1,37 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.LoadDuplicateRunEntityServerSubClass = exports.DuplicateRunEntity_Server = void 0;
10
- const core_1 = require("@memberjunction/core");
11
- const global_1 = require("@memberjunction/global");
12
- const core_entities_1 = require("@memberjunction/core-entities");
13
- const ai_vector_dupe_1 = require("@memberjunction/ai-vector-dupe");
14
- let DuplicateRunEntity_Server = class DuplicateRunEntity_Server extends core_entities_1.DuplicateRunEntity {
15
- async Save() {
16
- const saveResult = await super.Save();
17
- if (saveResult && this.EndedAt === null) {
18
- const duplicateRecordDetector = new ai_vector_dupe_1.DuplicateRecordDetector();
19
- let request = new core_1.PotentialDuplicateRequest();
20
- request.EntityID = this.EntityID;
21
- request.ListID = this.SourceListID;
22
- request.Options = {
23
- DuplicateRunID: this.ID,
24
- };
25
- const response = await duplicateRecordDetector.getDuplicateRecords(request, this.ContextCurrentUser);
26
- }
27
- return saveResult;
28
- }
29
- };
30
- exports.DuplicateRunEntity_Server = DuplicateRunEntity_Server;
31
- exports.DuplicateRunEntity_Server = DuplicateRunEntity_Server = __decorate([
32
- (0, global_1.RegisterClass)(core_1.BaseEntity, 'Duplicate Runs', 3)
33
- ], DuplicateRunEntity_Server);
34
- function LoadDuplicateRunEntityServerSubClass() {
35
- }
36
- exports.LoadDuplicateRunEntityServerSubClass = LoadDuplicateRunEntityServerSubClass;
37
- //# sourceMappingURL=DuplicateRunEntity.server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DuplicateRunEntity.server.js","sourceRoot":"","sources":["../../src/entitySubclasses/DuplicateRunEntity.server.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+CAA6E;AAC7E,mDAAuD;AACvD,iEAAmE;AACnE,mEAAyE;AAGlE,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,kCAAkB;IACtD,KAAK,CAAC,IAAI;QACb,MAAM,UAAU,GAAY,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAEtC,MAAM,uBAAuB,GAA4B,IAAI,wCAAuB,EAAE,CAAC;YACvF,IAAI,OAAO,GAA8B,IAAI,gCAAyB,EAAE,CAAC;YACzE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACjC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YACnC,OAAO,CAAC,OAAO,GAAG;gBACd,cAAc,EAAE,IAAI,CAAC,EAAE;aAC1B,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACzG,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ,CAAA;AAlBY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAa,EAAC,iBAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;GAClC,yBAAyB,CAkBrC;AAED,SAAgB,oCAAoC;AAEpD,CAAC;AAFD,oFAEC"}
@@ -1,29 +0,0 @@
1
- import { EntityInfo, EntitySaveOptions } from "@memberjunction/core";
2
- import { AIModelEntityExtended, EntityBehaviorEntityExtended, EntityBehaviorTypeEntity } from '@memberjunction/core-entities';
3
- export declare class EntityBehaviorEntity_Server extends EntityBehaviorEntityExtended {
4
- protected get AIVendorName(): string;
5
- protected GetAIModel(): Promise<AIModelEntityExtended>;
6
- Save(options?: EntitySaveOptions): Promise<boolean>;
7
- GenerateCode(behaviorDescription: string, behaviorTypePrompt: string, behaviorType: EntityBehaviorTypeEntity, entityInfo: EntityInfo): Promise<{
8
- code: string;
9
- explanation: string;
10
- }>;
11
- GenerateSysPrompt(entityInfo: EntityInfo, behaviorTypePrompt: string, behaviorType: EntityBehaviorTypeEntity): string;
12
- }
13
- export declare abstract class EntityBehaviorTypeCodeGeneratorBase {
14
- abstract GenerateCode(behaviorDescription: string, behaviorType: EntityBehaviorTypeEntity, entityInfo: EntityInfo): Promise<{
15
- code: string;
16
- explanation: string;
17
- }>;
18
- abstract GenerateSysPrompt(entityInfo: EntityInfo, behaviorType: EntityBehaviorTypeEntity): Promise<string>;
19
- abstract get Type(): 'Prompt' | 'Function';
20
- }
21
- export declare class ValidateEntityBehaviorCodeGenerator extends EntityBehaviorTypeCodeGeneratorBase {
22
- get Type(): 'Prompt' | 'Function';
23
- GenerateCode(behaviorDescription: string, behaviorType: EntityBehaviorTypeEntity, entityInfo: EntityInfo): Promise<{
24
- code: string;
25
- explanation: string;
26
- }>;
27
- GenerateSysPrompt(entityInfo: EntityInfo, behaviorType: EntityBehaviorTypeEntity): Promise<string>;
28
- }
29
- //# sourceMappingURL=EntityBehavior.server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityBehavior.server.d.ts","sourceRoot":"","sources":["../../src/entitySubclasses/EntityBehavior.server.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,UAAU,EAAE,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAM7H,qBACa,2BAA4B,SAAQ,4BAA4B;IAKzE,SAAS,KAAK,YAAY,IAAI,MAAM,CAEnC;cAMe,UAAU,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAatC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwC5D,YAAY,CAAC,mBAAmB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC;IAkEzL,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE,wBAAwB,GAAG,MAAM;CAsC/H;AAMD,8BAAsB,mCAAmC;aACrC,YAAY,CAAC,mBAAmB,EAAE,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC;aACvJ,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;IAClH,aAAoB,IAAI,IAAI,QAAQ,GAAG,UAAU,CAAC;CACrD;AAED,qBACa,mCAAoC,SAAQ,mCAAmC;IACxF,IAAW,IAAI,IAAI,QAAQ,GAAG,UAAU,CAEvC;IACY,YAAY,CAAC,mBAAmB,EAAE,MAAM,EAAE,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,CAAC;IAGvJ,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC;CAyClH"}
@@ -1,213 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ValidateEntityBehaviorCodeGenerator = exports.EntityBehaviorTypeCodeGeneratorBase = exports.EntityBehaviorEntity_Server = void 0;
10
- const global_1 = require("@memberjunction/global");
11
- const core_1 = require("@memberjunction/core");
12
- const core_entities_1 = require("@memberjunction/core-entities");
13
- const ai_1 = require("@memberjunction/ai");
14
- const aiengine_1 = require("@memberjunction/aiengine");
15
- const ai_openai_1 = require("@memberjunction/ai-openai");
16
- (0, ai_openai_1.LoadOpenAILLM)();
17
- let EntityBehaviorEntity_Server = class EntityBehaviorEntity_Server extends core_entities_1.EntityBehaviorEntityExtended {
18
- get AIVendorName() {
19
- return 'OpenAI';
20
- }
21
- async GetAIModel() {
22
- await aiengine_1.AIEngine.Instance.Config(false, this.ContextCurrentUser);
23
- const models = aiengine_1.AIEngine.Models.filter(m => m.AIModelType.trim().toLowerCase() === 'llm' &&
24
- m.Vendor.trim().toLowerCase() === this.AIVendorName.trim().toLowerCase());
25
- models.sort((a, b) => b.PowerRank - a.PowerRank);
26
- return models[0];
27
- }
28
- async Save(options) {
29
- if (this.CodeGenerated && this.RegenerateCode) {
30
- const md = new core_1.Metadata();
31
- const ei = md.Entities.find(e => e.ID === this.EntityID);
32
- const bt = await md.GetEntityObject("Entity Behavior Types", this.ContextCurrentUser);
33
- await bt.Load(this.BehaviorTypeID);
34
- const codeGen = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(EntityBehaviorTypeCodeGeneratorBase, bt.Name);
35
- if (!codeGen)
36
- throw new Error(`No code generator found for behavior type ${bt.Name}`);
37
- let result;
38
- if (codeGen.Type == 'Prompt') {
39
- const btPrompt = await codeGen.GenerateSysPrompt(ei, bt);
40
- result = await this.GenerateCode(this.Description, btPrompt, bt, ei);
41
- }
42
- else {
43
- result = await codeGen.GenerateCode(this.Description, bt, ei);
44
- }
45
- if (result) {
46
- this.Code = result.code;
47
- this.CodeExplanation = result.explanation;
48
- }
49
- else {
50
- this.Code = null;
51
- this.CodeExplanation = 'No code generated';
52
- }
53
- this.RegenerateCode = false;
54
- }
55
- return super.Save(options);
56
- }
57
- async GenerateCode(behaviorDescription, behaviorTypePrompt, behaviorType, entityInfo) {
58
- try {
59
- const model = await this.GetAIModel();
60
- const llm = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(ai_1.BaseLLM, model.DriverClass, (0, ai_1.GetAIAPIKey)(model.DriverClass));
61
- const chatParams = {
62
- model: model.APINameOrName,
63
- messages: [
64
- {
65
- role: 'system',
66
- content: this.GenerateSysPrompt(entityInfo, behaviorTypePrompt, behaviorType)
67
- },
68
- {
69
- role: 'user',
70
- content: behaviorDescription,
71
- },
72
- ],
73
- };
74
- const result = await llm.ChatCompletion(chatParams);
75
- if (result && result.data) {
76
- const llmResponse = result.data.choices[0].message.content;
77
- if (llmResponse) {
78
- try {
79
- const cleansed = (0, global_1.CleanJSON)(llmResponse);
80
- if (!cleansed)
81
- throw new Error('Invalid JSON response from AI: ' + llmResponse);
82
- const parsed = JSON.parse(cleansed);
83
- if (parsed.code && parsed.code.length > 0) {
84
- const trimmed = parsed.code.trim();
85
- return {
86
- code: trimmed,
87
- explanation: parsed.explanation
88
- };
89
- }
90
- else if (parsed.code !== undefined && parsed.code !== null) {
91
- return {
92
- code: '',
93
- explanation: parsed.explanation
94
- };
95
- }
96
- else {
97
- throw new Error('Invalid response from AI, no code property found in response: ' + llmResponse);
98
- }
99
- }
100
- catch (e) {
101
- (0, core_1.LogError)(e);
102
- throw new Error('Error parsing JSON response from AI: ' + llmResponse);
103
- }
104
- }
105
- else
106
- throw new Error('Null response from AI');
107
- }
108
- else
109
- throw new Error('No result returned from AI');
110
- }
111
- catch (e) {
112
- (0, core_1.LogError)(e);
113
- throw e;
114
- }
115
- }
116
- GenerateSysPrompt(entityInfo, behaviorTypePrompt, behaviorType) {
117
- const prompt = `You are an expert in TypeScript coding and business applications. You take great pride in easy to read, commented, and BEAUTIFULLY formatted code.
118
- You will be provided a system administrator's request for how to handle a specific type of behavior for the ${entityInfo.Name} entity in our system.
119
-
120
- The type of behavior is ${behaviorType.Name} and is described as follows:
121
- <BEHAVIOR_SPECIFIC_INFO>
122
- ${behaviorTypePrompt}
123
- </BEHAVIOR_SPECIFIC_INFO>
124
-
125
- The next message, which will be a user message in the conversation, will contain the sys admin's requested behavior for this entity.
126
-
127
- Here is the entity's schema information. When generating code that use the getter/setter methods for fields inside the object instance make sure to use the CodeName for the related entity field which sometimes
128
- is different from the SQL Field Name if the SQL Field Name contains characters that are not valid in TypeScript variable names.
129
-
130
- ${entityInfo.Name} (${entityInfo.SchemaName}.${entityInfo.BaseView})
131
- ${entityInfo.Description ? `Description: ${entityInfo.Description}` : ''}
132
- Fields:
133
- ${entityInfo.Fields.map(f => {
134
- let ret = `${f.Name} (${f.Type}) (CodeName: ${f.CodeName})`;
135
- if (f.RelatedEntity) {
136
- ret += ` (fkey to ${f.RelatedEntityBaseView})`;
137
- }
138
- return ret;
139
- }).join(',')}
140
-
141
- <CRITICAL>
142
- I am a bot and can only understand JSON. Your response must be parsable into this type:
143
- const returnType = {
144
- code: string, // The typescript code you will create that will work in the context described above. MAKE SURE TO PRETTY FORMAT THIS WITH SPACE INDENTS AND LINE BREAKS IN THE CODE!
145
- explanation: string // an explanation for the system admin of how the code works and why it was written that way
146
- };
147
- </CRITICAL>
148
- **** REMEMBER **** I am a BOT, do not return anything other than JSON to me or I will choke on your response!
149
- `;
150
- return prompt;
151
- }
152
- };
153
- exports.EntityBehaviorEntity_Server = EntityBehaviorEntity_Server;
154
- exports.EntityBehaviorEntity_Server = EntityBehaviorEntity_Server = __decorate([
155
- (0, global_1.RegisterClass)(core_1.BaseEntity, 'Entity Behaviors', 3)
156
- ], EntityBehaviorEntity_Server);
157
- class EntityBehaviorTypeCodeGeneratorBase {
158
- }
159
- exports.EntityBehaviorTypeCodeGeneratorBase = EntityBehaviorTypeCodeGeneratorBase;
160
- let ValidateEntityBehaviorCodeGenerator = class ValidateEntityBehaviorCodeGenerator extends EntityBehaviorTypeCodeGeneratorBase {
161
- get Type() {
162
- return 'Prompt';
163
- }
164
- async GenerateCode(behaviorDescription, behaviorType, entityInfo) {
165
- throw new Error('Not implemented');
166
- }
167
- async GenerateSysPrompt(entityInfo, behaviorType) {
168
- return `
169
- Your job is to create TypeScript code that will be executed within a Validate() method in a TypeScript sub-class of BaseEntity.
170
- BaseEntity is an ORM style model entity that is being sub-classed for this entity specifically and we want to incorporate the logic for
171
- the Validate method requested into TypeScript code that we will insert into an override of the BaseClass Validate method. It is important that you
172
- call super.Validate() at some point in your code to incorporate the base class Validation.
173
-
174
- For example, you might define the Validate() function as follows, and in your generated code you would get rid of the comments I have below and replace with your own relevant comments.
175
-
176
- public Validate(): ValidationResult {
177
- const result = super.Validate();
178
-
179
- // The above super.Validate() may have returned a false or true Success property. Either way, do your custom
180
- // validation here to add to
181
-
182
- // ADD YOUR CUSTOM VALIDATION LOGIC HERE and update result.Success to false if anything fails and for each
183
- // failed valdiation condition add the ValidationErrorInfo to the Errors array of the result variable.
184
-
185
- return result;
186
- }
187
-
188
- Validate must return a ValidationResult as defined below. Make sure your return type code complies with these strong type definitions.
189
- class ValidationErrorInfo {
190
- Source: string
191
- Message: string
192
- Value: string
193
- Type: ValidationErrorType
194
- }
195
- const ValidationErrorType = {
196
- Failure: ''Failure'',
197
- Warning: ''Warning'',
198
- } as const;
199
-
200
- class ValidationResult {
201
- Success: boolean
202
- Errors: ValidationErrorInfo[] = []
203
- }
204
-
205
- <IMPORTANT>The code you must return is ONLY the Validate() function, do not return anything else inside the code property in the JSON object!</IMPORTANT>
206
- `;
207
- }
208
- };
209
- exports.ValidateEntityBehaviorCodeGenerator = ValidateEntityBehaviorCodeGenerator;
210
- exports.ValidateEntityBehaviorCodeGenerator = ValidateEntityBehaviorCodeGenerator = __decorate([
211
- (0, global_1.RegisterClass)(EntityBehaviorTypeCodeGeneratorBase, 'Validation', 1)
212
- ], ValidateEntityBehaviorCodeGenerator);
213
- //# sourceMappingURL=EntityBehavior.server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityBehavior.server.js","sourceRoot":"","sources":["../../src/entitySubclasses/EntityBehavior.server.ts"],"names":[],"mappings":"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"}