@memberjunction/server 2.112.0 → 2.113.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 (250) hide show
  1. package/dist/agents/skip-agent.d.ts +4 -4
  2. package/dist/agents/skip-agent.d.ts.map +1 -1
  3. package/dist/agents/skip-agent.js +951 -808
  4. package/dist/agents/skip-agent.js.map +1 -1
  5. package/dist/agents/skip-sdk.d.ts +1 -1
  6. package/dist/agents/skip-sdk.d.ts.map +1 -1
  7. package/dist/agents/skip-sdk.js +43 -53
  8. package/dist/agents/skip-sdk.js.map +1 -1
  9. package/dist/apolloServer/index.js +1 -1
  10. package/dist/auth/AuthProviderFactory.d.ts +1 -1
  11. package/dist/auth/AuthProviderFactory.d.ts.map +1 -1
  12. package/dist/auth/AuthProviderFactory.js +3 -1
  13. package/dist/auth/AuthProviderFactory.js.map +1 -1
  14. package/dist/auth/BaseAuthProvider.d.ts +1 -1
  15. package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
  16. package/dist/auth/BaseAuthProvider.js +2 -3
  17. package/dist/auth/BaseAuthProvider.js.map +1 -1
  18. package/dist/auth/IAuthProvider.d.ts +1 -1
  19. package/dist/auth/IAuthProvider.d.ts.map +1 -1
  20. package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
  21. package/dist/auth/exampleNewUserSubClass.js +1 -1
  22. package/dist/auth/exampleNewUserSubClass.js.map +1 -1
  23. package/dist/auth/index.d.ts +1 -1
  24. package/dist/auth/index.d.ts.map +1 -1
  25. package/dist/auth/index.js +6 -6
  26. package/dist/auth/index.js.map +1 -1
  27. package/dist/auth/initializeProviders.js +1 -1
  28. package/dist/auth/initializeProviders.js.map +1 -1
  29. package/dist/auth/newUsers.d.ts +1 -1
  30. package/dist/auth/newUsers.d.ts.map +1 -1
  31. package/dist/auth/newUsers.js +7 -7
  32. package/dist/auth/newUsers.js.map +1 -1
  33. package/dist/auth/providers/Auth0Provider.d.ts +1 -1
  34. package/dist/auth/providers/Auth0Provider.d.ts.map +1 -1
  35. package/dist/auth/providers/Auth0Provider.js +1 -1
  36. package/dist/auth/providers/Auth0Provider.js.map +1 -1
  37. package/dist/auth/providers/CognitoProvider.d.ts +1 -1
  38. package/dist/auth/providers/CognitoProvider.d.ts.map +1 -1
  39. package/dist/auth/providers/CognitoProvider.js +6 -3
  40. package/dist/auth/providers/CognitoProvider.js.map +1 -1
  41. package/dist/auth/providers/GoogleProvider.d.ts +1 -1
  42. package/dist/auth/providers/GoogleProvider.d.ts.map +1 -1
  43. package/dist/auth/providers/GoogleProvider.js +1 -1
  44. package/dist/auth/providers/GoogleProvider.js.map +1 -1
  45. package/dist/auth/providers/MSALProvider.d.ts +1 -1
  46. package/dist/auth/providers/MSALProvider.d.ts.map +1 -1
  47. package/dist/auth/providers/MSALProvider.js +1 -1
  48. package/dist/auth/providers/MSALProvider.js.map +1 -1
  49. package/dist/auth/providers/OktaProvider.d.ts +1 -1
  50. package/dist/auth/providers/OktaProvider.d.ts.map +1 -1
  51. package/dist/auth/providers/OktaProvider.js +1 -1
  52. package/dist/auth/providers/OktaProvider.js.map +1 -1
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +10 -22
  55. package/dist/config.js.map +1 -1
  56. package/dist/context.d.ts +1 -1
  57. package/dist/context.d.ts.map +1 -1
  58. package/dist/context.js +7 -9
  59. package/dist/context.js.map +1 -1
  60. package/dist/entitySubclasses/entityPermissions.server.d.ts +1 -1
  61. package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
  62. package/dist/entitySubclasses/entityPermissions.server.js +1 -1
  63. package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
  64. package/dist/generated/generated.d.ts +788 -658
  65. package/dist/generated/generated.d.ts.map +1 -1
  66. package/dist/generated/generated.js +2050 -3054
  67. package/dist/generated/generated.js.map +1 -1
  68. package/dist/generic/KeyInputOutputTypes.d.ts +1 -1
  69. package/dist/generic/KeyInputOutputTypes.d.ts.map +1 -1
  70. package/dist/generic/KeyInputOutputTypes.js +1 -1
  71. package/dist/generic/KeyInputOutputTypes.js.map +1 -1
  72. package/dist/generic/ResolverBase.d.ts +1 -1
  73. package/dist/generic/ResolverBase.d.ts.map +1 -1
  74. package/dist/generic/ResolverBase.js +10 -15
  75. package/dist/generic/ResolverBase.js.map +1 -1
  76. package/dist/generic/RunViewResolver.d.ts +1 -1
  77. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  78. package/dist/generic/RunViewResolver.js +15 -15
  79. package/dist/generic/RunViewResolver.js.map +1 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +13 -18
  82. package/dist/index.js.map +1 -1
  83. package/dist/resolvers/ActionResolver.d.ts +2 -2
  84. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  85. package/dist/resolvers/ActionResolver.js +30 -28
  86. package/dist/resolvers/ActionResolver.js.map +1 -1
  87. package/dist/resolvers/AskSkipResolver.d.ts +2 -2
  88. package/dist/resolvers/AskSkipResolver.d.ts.map +1 -1
  89. package/dist/resolvers/AskSkipResolver.js +50 -60
  90. package/dist/resolvers/AskSkipResolver.js.map +1 -1
  91. package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
  92. package/dist/resolvers/ComponentRegistryResolver.js +38 -36
  93. package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
  94. package/dist/resolvers/CreateQueryResolver.d.ts +1 -1
  95. package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
  96. package/dist/resolvers/CreateQueryResolver.js +40 -43
  97. package/dist/resolvers/CreateQueryResolver.js.map +1 -1
  98. package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
  99. package/dist/resolvers/DatasetResolver.js +1 -1
  100. package/dist/resolvers/DatasetResolver.js.map +1 -1
  101. package/dist/resolvers/EntityRecordNameResolver.d.ts +1 -1
  102. package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
  103. package/dist/resolvers/EntityRecordNameResolver.js +1 -1
  104. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  105. package/dist/resolvers/EntityResolver.d.ts.map +1 -1
  106. package/dist/resolvers/EntityResolver.js +1 -1
  107. package/dist/resolvers/EntityResolver.js.map +1 -1
  108. package/dist/resolvers/FileCategoryResolver.js +1 -1
  109. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  110. package/dist/resolvers/FileResolver.js +1 -1
  111. package/dist/resolvers/FileResolver.js.map +1 -1
  112. package/dist/resolvers/GetDataContextDataResolver.d.ts +1 -1
  113. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  114. package/dist/resolvers/GetDataContextDataResolver.js +5 -5
  115. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  116. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  117. package/dist/resolvers/GetDataResolver.js +6 -8
  118. package/dist/resolvers/GetDataResolver.js.map +1 -1
  119. package/dist/resolvers/MergeRecordsResolver.d.ts +3 -3
  120. package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
  121. package/dist/resolvers/MergeRecordsResolver.js +3 -3
  122. package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
  123. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts +1 -1
  124. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +1 -1
  125. package/dist/resolvers/PotentialDuplicateRecordResolver.js +1 -1
  126. package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
  127. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  128. package/dist/resolvers/QueryResolver.js +11 -11
  129. package/dist/resolvers/QueryResolver.js.map +1 -1
  130. package/dist/resolvers/ReportResolver.js +1 -1
  131. package/dist/resolvers/ReportResolver.js.map +1 -1
  132. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  133. package/dist/resolvers/RunAIAgentResolver.js +28 -27
  134. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  135. package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
  136. package/dist/resolvers/RunAIPromptResolver.js +31 -31
  137. package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
  138. package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
  139. package/dist/resolvers/RunTemplateResolver.js +9 -9
  140. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  141. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  142. package/dist/resolvers/SqlLoggingConfigResolver.js +10 -10
  143. package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
  144. package/dist/resolvers/SyncDataResolver.d.ts +1 -1
  145. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  146. package/dist/resolvers/SyncDataResolver.js +14 -15
  147. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  148. package/dist/resolvers/SyncRolesUsersResolver.d.ts +1 -1
  149. package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
  150. package/dist/resolvers/SyncRolesUsersResolver.js +44 -48
  151. package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
  152. package/dist/resolvers/TaskResolver.d.ts.map +1 -1
  153. package/dist/resolvers/TaskResolver.js +7 -7
  154. package/dist/resolvers/TaskResolver.js.map +1 -1
  155. package/dist/resolvers/TransactionGroupResolver.d.ts +1 -1
  156. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  157. package/dist/resolvers/TransactionGroupResolver.js +12 -12
  158. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  159. package/dist/resolvers/UserFavoriteResolver.d.ts +1 -1
  160. package/dist/resolvers/UserFavoriteResolver.d.ts.map +1 -1
  161. package/dist/resolvers/UserFavoriteResolver.js +1 -1
  162. package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
  163. package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
  164. package/dist/resolvers/UserViewResolver.js.map +1 -1
  165. package/dist/rest/EntityCRUDHandler.d.ts +1 -1
  166. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  167. package/dist/rest/EntityCRUDHandler.js +16 -14
  168. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  169. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  170. package/dist/rest/RESTEndpointHandler.js +25 -23
  171. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  172. package/dist/rest/ViewOperationsHandler.d.ts +1 -1
  173. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  174. package/dist/rest/ViewOperationsHandler.js +21 -17
  175. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  176. package/dist/scheduler/LearningCycleScheduler.d.ts.map +1 -1
  177. package/dist/scheduler/LearningCycleScheduler.js.map +1 -1
  178. package/dist/services/ScheduledJobsService.d.ts.map +1 -1
  179. package/dist/services/ScheduledJobsService.js +6 -4
  180. package/dist/services/ScheduledJobsService.js.map +1 -1
  181. package/dist/services/TaskOrchestrator.d.ts +1 -1
  182. package/dist/services/TaskOrchestrator.d.ts.map +1 -1
  183. package/dist/services/TaskOrchestrator.js +30 -30
  184. package/dist/services/TaskOrchestrator.js.map +1 -1
  185. package/dist/types.d.ts +3 -3
  186. package/dist/types.d.ts.map +1 -1
  187. package/dist/types.js +1 -0
  188. package/dist/types.js.map +1 -1
  189. package/dist/util.d.ts +1 -1
  190. package/dist/util.d.ts.map +1 -1
  191. package/dist/util.js +2 -2
  192. package/dist/util.js.map +1 -1
  193. package/package.json +39 -36
  194. package/src/agents/skip-agent.ts +1200 -1067
  195. package/src/agents/skip-sdk.ts +851 -877
  196. package/src/apolloServer/index.ts +2 -2
  197. package/src/auth/AuthProviderFactory.ts +14 -8
  198. package/src/auth/BaseAuthProvider.ts +4 -5
  199. package/src/auth/IAuthProvider.ts +2 -2
  200. package/src/auth/exampleNewUserSubClass.ts +2 -9
  201. package/src/auth/index.ts +26 -31
  202. package/src/auth/initializeProviders.ts +3 -3
  203. package/src/auth/newUsers.ts +134 -166
  204. package/src/auth/providers/Auth0Provider.ts +5 -5
  205. package/src/auth/providers/CognitoProvider.ts +10 -7
  206. package/src/auth/providers/GoogleProvider.ts +5 -4
  207. package/src/auth/providers/MSALProvider.ts +5 -5
  208. package/src/auth/providers/OktaProvider.ts +7 -6
  209. package/src/config.ts +54 -63
  210. package/src/context.ts +30 -42
  211. package/src/entitySubclasses/entityPermissions.server.ts +3 -3
  212. package/src/generated/generated.ts +40442 -48106
  213. package/src/generic/KeyInputOutputTypes.ts +6 -3
  214. package/src/generic/ResolverBase.ts +78 -119
  215. package/src/generic/RunViewResolver.ts +23 -27
  216. package/src/index.ts +48 -66
  217. package/src/resolvers/ActionResolver.ts +57 -46
  218. package/src/resolvers/AskSkipResolver.ts +533 -607
  219. package/src/resolvers/ComponentRegistryResolver.ts +562 -547
  220. package/src/resolvers/CreateQueryResolver.ts +655 -683
  221. package/src/resolvers/DatasetResolver.ts +6 -5
  222. package/src/resolvers/EntityCommunicationsResolver.ts +1 -1
  223. package/src/resolvers/EntityRecordNameResolver.ts +5 -9
  224. package/src/resolvers/EntityResolver.ts +7 -9
  225. package/src/resolvers/FileCategoryResolver.ts +2 -2
  226. package/src/resolvers/FileResolver.ts +4 -4
  227. package/src/resolvers/GetDataContextDataResolver.ts +118 -106
  228. package/src/resolvers/GetDataResolver.ts +205 -194
  229. package/src/resolvers/MergeRecordsResolver.ts +5 -5
  230. package/src/resolvers/PotentialDuplicateRecordResolver.ts +1 -1
  231. package/src/resolvers/QueryResolver.ts +78 -95
  232. package/src/resolvers/ReportResolver.ts +2 -2
  233. package/src/resolvers/RunAIAgentResolver.ts +828 -818
  234. package/src/resolvers/RunAIPromptResolver.ts +709 -693
  235. package/src/resolvers/RunTemplateResolver.ts +103 -105
  236. package/src/resolvers/SqlLoggingConfigResolver.ts +72 -69
  237. package/src/resolvers/SyncDataResolver.ts +352 -386
  238. package/src/resolvers/SyncRolesUsersResolver.ts +350 -387
  239. package/src/resolvers/TaskResolver.ts +115 -110
  240. package/src/resolvers/TransactionGroupResolver.ts +138 -143
  241. package/src/resolvers/UserFavoriteResolver.ts +8 -17
  242. package/src/resolvers/UserViewResolver.ts +12 -17
  243. package/src/rest/EntityCRUDHandler.ts +268 -291
  244. package/src/rest/RESTEndpointHandler.ts +776 -782
  245. package/src/rest/ViewOperationsHandler.ts +195 -191
  246. package/src/scheduler/LearningCycleScheduler.ts +52 -8
  247. package/src/services/ScheduledJobsService.ts +132 -129
  248. package/src/services/TaskOrchestrator.ts +776 -792
  249. package/src/types.ts +9 -15
  250. package/src/util.ts +109 -112
@@ -1,8 +1,9 @@
1
1
  import { JwtPayload } from 'jsonwebtoken';
2
2
  import { RegisterClass } from '@memberjunction/global';
3
- import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/global';
3
+ import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
4
4
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
5
5
 
6
+
6
7
  /**
7
8
  * AWS Cognito authentication provider implementation
8
9
  */
@@ -17,19 +18,21 @@ export class CognitoProvider extends BaseAuthProvider {
17
18
  */
18
19
  extractUserInfo(payload: JwtPayload): AuthUserInfo {
19
20
  // Cognito uses custom claims with 'cognito:' prefix for some fields
20
- const email = (payload.email as string | undefined) || (payload['cognito:username'] as string | undefined);
21
+ const email = payload.email as string | undefined ||
22
+ payload['cognito:username'] as string | undefined;
21
23
  const fullName = payload.name as string | undefined;
22
24
  const firstName = payload.given_name as string | undefined;
23
25
  const lastName = payload.family_name as string | undefined;
24
- const preferredUsername =
25
- (payload['cognito:username'] as string | undefined) || (payload.preferred_username as string | undefined) || email;
26
+ const preferredUsername = payload['cognito:username'] as string | undefined ||
27
+ payload.preferred_username as string | undefined ||
28
+ email;
26
29
 
27
30
  return {
28
31
  email,
29
32
  firstName: firstName || fullName?.split(' ')[0],
30
33
  lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
31
34
  fullName,
32
- preferredUsername,
35
+ preferredUsername
33
36
  };
34
37
  }
35
38
 
@@ -41,7 +44,7 @@ export class CognitoProvider extends BaseAuthProvider {
41
44
  const hasClientId = !!this.config.clientId;
42
45
  const hasRegion = !!this.config.region;
43
46
  const hasUserPoolId = !!this.config.userPoolId;
44
-
47
+
45
48
  return baseValid && hasClientId && hasRegion && hasUserPoolId;
46
49
  }
47
- }
50
+ }
@@ -1,8 +1,9 @@
1
1
  import { JwtPayload } from 'jsonwebtoken';
2
2
  import { RegisterClass } from '@memberjunction/global';
3
- import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/global';
3
+ import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
4
4
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
5
5
 
6
+
6
7
  /**
7
8
  * Google Identity Platform authentication provider implementation
8
9
  */
@@ -28,7 +29,7 @@ export class GoogleProvider extends BaseAuthProvider {
28
29
  firstName: firstName || fullName?.split(' ')[0],
29
30
  lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
30
31
  fullName,
31
- preferredUsername,
32
+ preferredUsername
32
33
  };
33
34
  }
34
35
 
@@ -38,7 +39,7 @@ export class GoogleProvider extends BaseAuthProvider {
38
39
  validateConfig(): boolean {
39
40
  const baseValid = super.validateConfig();
40
41
  const hasClientId = !!this.config.clientId;
41
-
42
+
42
43
  return baseValid && hasClientId;
43
44
  }
44
- }
45
+ }
@@ -1,6 +1,6 @@
1
1
  import { JwtPayload } from 'jsonwebtoken';
2
2
  import { RegisterClass } from '@memberjunction/global';
3
- import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/global';
3
+ import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
4
4
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
5
5
 
6
6
  /**
@@ -17,7 +17,7 @@ export class MSALProvider extends BaseAuthProvider {
17
17
  */
18
18
  extractUserInfo(payload: JwtPayload): AuthUserInfo {
19
19
  // MSAL/Azure AD uses some custom claims
20
- const email = (payload.email as string | undefined) || (payload.preferred_username as string | undefined);
20
+ const email = payload.email as string | undefined || payload.preferred_username as string | undefined;
21
21
  const fullName = payload.name as string | undefined;
22
22
  const firstName = payload.given_name as string | undefined;
23
23
  const lastName = payload.family_name as string | undefined;
@@ -28,7 +28,7 @@ export class MSALProvider extends BaseAuthProvider {
28
28
  firstName: firstName || fullName?.split(' ')[0],
29
29
  lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
30
30
  fullName,
31
- preferredUsername,
31
+ preferredUsername
32
32
  };
33
33
  }
34
34
 
@@ -39,7 +39,7 @@ export class MSALProvider extends BaseAuthProvider {
39
39
  const baseValid = super.validateConfig();
40
40
  const hasClientId = !!this.config.clientId;
41
41
  const hasTenantId = !!this.config.tenantId;
42
-
42
+
43
43
  return baseValid && hasClientId && hasTenantId;
44
44
  }
45
- }
45
+ }
@@ -1,8 +1,9 @@
1
1
  import { JwtPayload } from 'jsonwebtoken';
2
2
  import { RegisterClass } from '@memberjunction/global';
3
- import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/global';
3
+ import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
4
4
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
5
5
 
6
+
6
7
  /**
7
8
  * Okta authentication provider implementation
8
9
  */
@@ -17,18 +18,18 @@ export class OktaProvider extends BaseAuthProvider {
17
18
  */
18
19
  extractUserInfo(payload: JwtPayload): AuthUserInfo {
19
20
  // Okta uses standard OIDC claims plus some custom ones
20
- const email = (payload.email as string | undefined) || (payload.preferred_username as string | undefined);
21
+ const email = payload.email as string | undefined || payload.preferred_username as string | undefined;
21
22
  const fullName = payload.name as string | undefined;
22
23
  const firstName = payload.given_name as string | undefined;
23
24
  const lastName = payload.family_name as string | undefined;
24
- const preferredUsername = (payload.preferred_username as string | undefined) || email;
25
+ const preferredUsername = payload.preferred_username as string | undefined || email;
25
26
 
26
27
  return {
27
28
  email,
28
29
  firstName: firstName || fullName?.split(' ')[0],
29
30
  lastName: lastName || fullName?.split(' ')[1] || fullName?.split(' ')[0],
30
31
  fullName,
31
- preferredUsername,
32
+ preferredUsername
32
33
  };
33
34
  }
34
35
 
@@ -39,7 +40,7 @@ export class OktaProvider extends BaseAuthProvider {
39
40
  const baseValid = super.validateConfig();
40
41
  const hasClientId = !!this.config.clientId;
41
42
  const hasDomain = !!this.config.domain;
42
-
43
+
43
44
  return baseValid && hasClientId && hasDomain;
44
45
  }
45
- }
46
+ }
package/src/config.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { cosmiconfigSync } from 'cosmiconfig';
3
- import { LogError, LogStatus } from '@memberjunction/global';
3
+ import { LogError, LogStatus } from '@memberjunction/core';
4
4
 
5
5
  const explorer = cosmiconfigSync('mj', { searchStrategy: 'global' });
6
6
 
@@ -22,17 +22,14 @@ const databaseSettingsInfoSchema = z.object({
22
22
  metadataCacheRefreshInterval: z.number(),
23
23
  dbReadOnlyUsername: z.string().optional(),
24
24
  dbReadOnlyPassword: z.string().optional(),
25
- connectionPool: z
26
- .object({
27
- max: z.number().optional().default(50),
28
- min: z.number().optional().default(5),
29
- idleTimeoutMillis: z.number().optional().default(30000),
30
- acquireTimeoutMillis: z.number().optional().default(30000),
31
- })
32
- .optional()
33
- .default({}),
25
+ connectionPool: z.object({
26
+ max: z.number().optional().default(50),
27
+ min: z.number().optional().default(5),
28
+ idleTimeoutMillis: z.number().optional().default(30000),
29
+ acquireTimeoutMillis: z.number().optional().default(30000),
30
+ }).optional().default({}),
34
31
  });
35
-
32
+
36
33
  const viewingSystemInfoSchema = z.object({
37
34
  enableSmartFilters: z.boolean().optional(),
38
35
  });
@@ -47,25 +44,28 @@ const restApiOptionsSchema = z.object({
47
44
 
48
45
  /**
49
46
  * Returns a new Zod object that accepts boolean, string, or number values and transforms them to boolean.
50
- * @returns
47
+ * @returns
51
48
  */
52
49
  const zodBooleanWithTransforms = () => {
53
50
  return z
54
- .union([z.boolean(), z.string(), z.number()])
55
- .optional()
56
- .default(false)
57
- .transform((v) => {
58
- if (typeof v === 'string') {
59
- return v === '1' || v.toLowerCase() === 'true';
60
- } else if (typeof v === 'number') {
61
- return v === 1;
62
- } else if (typeof v === 'boolean') {
63
- return v;
64
- } else {
65
- return false;
66
- }
67
- });
68
- };
51
+ .union([z.boolean(), z.string(), z.number()])
52
+ .optional()
53
+ .default(false)
54
+ .transform((v) => {
55
+ if (typeof v === 'string') {
56
+ return v === '1' || v.toLowerCase() === 'true';
57
+ }
58
+ else if (typeof v === 'number') {
59
+ return v === 1;
60
+ }
61
+ else if (typeof v === 'boolean') {
62
+ return v;
63
+ }
64
+ else {
65
+ return false;
66
+ }
67
+ })
68
+ }
69
69
 
70
70
  const askSkipInfoSchema = z.object({
71
71
  url: z.string().optional(), // Base URL for Skip API
@@ -103,38 +103,32 @@ const sqlLoggingSchema = z.object({
103
103
  sessionTimeout: z.number().optional().default(3600000), // 1 hour
104
104
  });
105
105
 
106
- const authProviderSchema = z
107
- .object({
108
- name: z.string(),
109
- type: z.string(),
110
- issuer: z.string(),
111
- audience: z.string(),
112
- jwksUri: z.string(),
113
- clientId: z.string().optional(),
114
- clientSecret: z.string().optional(),
115
- tenantId: z.string().optional(),
116
- domain: z.string().optional(),
117
- })
118
- .passthrough(); // Allow additional provider-specific fields
119
-
120
- const componentRegistrySchema = z
121
- .object({
122
- id: z.string().optional(),
123
- name: z.string().optional(),
124
- apiKey: z.string().optional(),
125
- cache: z.boolean().optional().default(true),
126
- timeout: z.number().optional(),
127
- retryPolicy: z
128
- .object({
129
- maxRetries: z.number().optional(),
130
- initialDelay: z.number().optional(),
131
- maxDelay: z.number().optional(),
132
- backoffMultiplier: z.number().optional(),
133
- })
134
- .optional(),
135
- headers: z.record(z.string()).optional(),
136
- })
137
- .passthrough(); // Allow additional fields
106
+ const authProviderSchema = z.object({
107
+ name: z.string(),
108
+ type: z.string(),
109
+ issuer: z.string(),
110
+ audience: z.string(),
111
+ jwksUri: z.string(),
112
+ clientId: z.string().optional(),
113
+ clientSecret: z.string().optional(),
114
+ tenantId: z.string().optional(),
115
+ domain: z.string().optional(),
116
+ }).passthrough(); // Allow additional provider-specific fields
117
+
118
+ const componentRegistrySchema = z.object({
119
+ id: z.string().optional(),
120
+ name: z.string().optional(),
121
+ apiKey: z.string().optional(),
122
+ cache: z.boolean().optional().default(true),
123
+ timeout: z.number().optional(),
124
+ retryPolicy: z.object({
125
+ maxRetries: z.number().optional(),
126
+ initialDelay: z.number().optional(),
127
+ maxDelay: z.number().optional(),
128
+ backoffMultiplier: z.number().optional(),
129
+ }).optional(),
130
+ headers: z.record(z.string()).optional(),
131
+ }).passthrough(); // Allow additional fields
138
132
 
139
133
  const scheduledJobsSchema = z.object({
140
134
  enabled: z.boolean().optional().default(false),
@@ -157,10 +151,7 @@ const configInfoSchema = z.object({
157
151
 
158
152
  apiKey: z.string().optional(),
159
153
  baseUrl: z.string().default('http://localhost'),
160
- publicUrl: z
161
- .string()
162
- .optional()
163
- .default(process.env.MJAPI_PUBLIC_URL || ''), // Public URL for callbacks (e.g., ngrok URL when developing)
154
+ publicUrl: z.string().optional().default(process.env.MJAPI_PUBLIC_URL || ''), // Public URL for callbacks (e.g., ngrok URL when developing)
164
155
 
165
156
  dbHost: z.string().default('localhost'),
166
157
  dbDatabase: z.string(),
package/src/context.ts CHANGED
@@ -5,29 +5,22 @@ import 'reflect-metadata';
5
5
  import { Subject, firstValueFrom } from 'rxjs';
6
6
  import { AuthenticationError, AuthorizationError } from 'type-graphql';
7
7
  import sql from 'mssql';
8
- import {
9
- getSigningKeys,
10
- getSystemUser,
11
- getValidationOptions,
12
- verifyUserRecord,
13
- extractUserInfoFromPayload,
14
- TokenExpiredError,
15
- } from './auth/index.js';
8
+ import { getSigningKeys, getSystemUser, getValidationOptions, verifyUserRecord, extractUserInfoFromPayload, TokenExpiredError } from './auth/index.js';
16
9
  import { authCache } from './cache.js';
17
10
  import { userEmailMap, apiKey, mj_core_schema } from './config.js';
18
11
  import { DataSourceInfo, UserPayload } from './types.js';
19
12
  import { GetReadOnlyDataSource, GetReadWriteDataSource } from './util.js';
20
13
  import { v4 as uuidv4 } from 'uuid';
21
14
  import e from 'express';
22
- import { DatabaseProviderBase } from '@memberjunction/global';
15
+ import { DatabaseProviderBase } from '@memberjunction/core';
23
16
  import { SQLServerDataProvider, SQLServerProviderConfigData } from '@memberjunction/sqlserver-dataprovider';
24
17
  import { AuthProviderFactory } from './auth/AuthProviderFactory.js';
25
- import { Metadata } from '@memberjunction/global';
18
+ import { Metadata } from '@memberjunction/core';
26
19
 
27
20
  const verifyAsync = async (issuer: string, token: string): Promise<jwt.JwtPayload> =>
28
21
  new Promise((resolve, reject) => {
29
22
  const options = getValidationOptions(issuer);
30
-
23
+
31
24
  if (!options) {
32
25
  reject(new Error(`No validation options found for issuer ${issuer}`));
33
26
  return;
@@ -53,7 +46,7 @@ export const getUserPayload = async (
53
46
  sessionId = 'default',
54
47
  dataSources: DataSourceInfo[],
55
48
  requestDomain?: string,
56
- requestApiKey?: string
49
+ requestApiKey?: string
57
50
  ): Promise<UserPayload> => {
58
51
  try {
59
52
  const readOnlyDataSource = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
@@ -112,8 +105,14 @@ export const getUserPayload = async (
112
105
  // Use provider to extract user information
113
106
  const userInfo = extractUserInfoFromPayload(payload);
114
107
  const email = userInfo.email ? ((userEmailMap ?? {})[userInfo.email] ?? userInfo.email) : userInfo.preferredUsername;
115
-
116
- const userRecord = await verifyUserRecord(email, userInfo.firstName, userInfo.lastName, requestDomain, readWriteDataSource);
108
+
109
+ const userRecord = await verifyUserRecord(
110
+ email,
111
+ userInfo.firstName,
112
+ userInfo.lastName,
113
+ requestDomain,
114
+ readWriteDataSource
115
+ );
117
116
 
118
117
  if (!userRecord) {
119
118
  console.error(`User ${email} not found`);
@@ -134,15 +133,7 @@ export const getUserPayload = async (
134
133
  };
135
134
 
136
135
  export const contextFunction =
137
- ({
138
- setupComplete$,
139
- dataSource,
140
- dataSources,
141
- }: {
142
- setupComplete$: Subject<unknown>;
143
- dataSource: sql.ConnectionPool;
144
- dataSources: DataSourceInfo[];
145
- }) =>
136
+ ({ setupComplete$, dataSource, dataSources }: { setupComplete$: Subject<unknown>; dataSource: sql.ConnectionPool, dataSources: DataSourceInfo[] }) =>
146
137
  async ({ req }: { req: IncomingMessage }) => {
147
138
  await firstValueFrom(setupComplete$); // wait for setup to complete before processing the request
148
139
 
@@ -152,7 +143,7 @@ export const contextFunction =
152
143
  const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
153
144
  const bearerToken = req.headers.authorization ?? '';
154
145
  const apiKey = String(req.headers['x-mj-api-key']);
155
-
146
+
156
147
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
157
148
  const reqAny = req as any;
158
149
  const operationName: string | undefined = reqAny.body?.operationName;
@@ -165,13 +156,11 @@ export const contextFunction =
165
156
  sessionId,
166
157
  dataSources,
167
158
  requestDomain?.hostname ? requestDomain.hostname : undefined,
168
- apiKey
159
+ apiKey
169
160
  );
170
161
 
171
- if (Metadata.Provider.Entities.length === 0) {
172
- console.warn(
173
- 'WARNING: No entities found in global/shared metadata, this can often be due to the use of **global** Metadata/RunView/DB Providers in a multi-user environment. Check your code to make sure you are using the providers passed to you in AppContext by MJServer and not calling new Metadata() new RunView() new RunQuery() and similar patterns as those are unstable at times in multi-user server environments!!!'
174
- );
162
+ if (Metadata.Provider.Entities.length === 0 ) {
163
+ console.warn('WARNING: No entities found in global/shared metadata, this can often be due to the use of **global** Metadata/RunView/DB Providers in a multi-user environment. Check your code to make sure you are using the providers passed to you in AppContext by MJServer and not calling new Metadata() new RunView() new RunQuery() and similar patterns as those are unstable at times in multi-user server environments!!!');
175
164
  }
176
165
 
177
166
  // now create a new instance of SQLServerDataProvider for each request
@@ -187,29 +176,28 @@ export const contextFunction =
187
176
  const rConfig = new SQLServerProviderConfigData(readOnlyDataSource, mj_core_schema, 0, undefined, undefined, false);
188
177
  await rp.Config(rConfig);
189
178
  }
190
- } catch (e) {
179
+ }
180
+ catch (e) {
191
181
  // no read only data source available, so rp will remain null, this is OK!
192
182
  }
193
183
 
194
- const providers = [
195
- {
196
- provider: p,
197
- type: 'Read-Write' as 'Read-Write' | 'Read-Only',
198
- },
199
- ];
184
+ const providers = [{
185
+ provider: p,
186
+ type: 'Read-Write' as 'Read-Write' | 'Read-Only'
187
+ }];
200
188
  if (rp) {
201
189
  providers.push({
202
190
  provider: rp,
203
- type: 'Read-Only' as 'Read-Write' | 'Read-Only',
191
+ type: 'Read-Only' as 'Read-Write' | 'Read-Only'
204
192
  });
205
193
  }
206
194
 
207
- const contextResult = {
208
- dataSource,
209
- dataSources,
195
+ const contextResult = {
196
+ dataSource,
197
+ dataSources,
210
198
  userPayload: userPayload,
211
199
  providers,
212
200
  };
213
-
201
+
214
202
  return contextResult;
215
- };
203
+ };
@@ -1,5 +1,5 @@
1
1
  import { RegisterClass } from '@memberjunction/global';
2
- import { BaseEntity, EntityDeleteOptions, EntitySaveOptions } from '@memberjunction/global';
2
+ import { BaseEntity, EntityDeleteOptions, EntitySaveOptions } from '@memberjunction/core';
3
3
  import { EntityPermissionEntity } from '@memberjunction/core-entities';
4
4
  import axios from 'axios';
5
5
  import { ___codeGenAPIPort, ___codeGenAPISubmissionDelay, ___codeGenAPIURL } from '../config.js';
@@ -7,7 +7,7 @@ import { ___codeGenAPIPort, ___codeGenAPISubmissionDelay, ___codeGenAPIURL } fro
7
7
  /**
8
8
  * Server-side only class that extends the entity permissions object to watch for changes to entity permissions, build a queue of entities that have been changed, and then from time to time, submit
9
9
  * them to an API server that will execute the underlying permission changes at the database level.
10
- *
10
+ *
11
11
  * This class is within the memberjunction/server package because it is closely coupled to other aspects of what
12
12
  * happens in the server. That's why it is not in the core-entities-server package.
13
13
  */
@@ -104,4 +104,4 @@ export class EntityPermissionsEntity_Server extends EntityPermissionEntity {
104
104
  }
105
105
  }
106
106
 
107
- export function LoadEntityPermissionsServerSubClass() {}
107
+ export function LoadEntityPermissionsServerSubClass() {}