@memberjunction/server 3.4.0 → 4.1.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 (269) hide show
  1. package/README.md +689 -513
  2. package/dist/agents/skip-agent.d.ts +65 -0
  3. package/dist/agents/skip-agent.d.ts.map +1 -1
  4. package/dist/agents/skip-agent.js +63 -5
  5. package/dist/agents/skip-agent.js.map +1 -1
  6. package/dist/agents/skip-sdk.d.ts +163 -0
  7. package/dist/agents/skip-sdk.d.ts.map +1 -1
  8. package/dist/agents/skip-sdk.js +143 -12
  9. package/dist/agents/skip-sdk.js.map +1 -1
  10. package/dist/apolloServer/index.d.ts +0 -1
  11. package/dist/apolloServer/index.d.ts.map +1 -1
  12. package/dist/auth/APIKeyScopeAuth.d.ts +82 -0
  13. package/dist/auth/APIKeyScopeAuth.d.ts.map +1 -1
  14. package/dist/auth/APIKeyScopeAuth.js +78 -0
  15. package/dist/auth/APIKeyScopeAuth.js.map +1 -1
  16. package/dist/auth/AuthProviderFactory.d.ts +35 -0
  17. package/dist/auth/AuthProviderFactory.d.ts.map +1 -1
  18. package/dist/auth/AuthProviderFactory.js +51 -4
  19. package/dist/auth/AuthProviderFactory.js.map +1 -1
  20. package/dist/auth/BaseAuthProvider.d.ts +21 -0
  21. package/dist/auth/BaseAuthProvider.d.ts.map +1 -1
  22. package/dist/auth/BaseAuthProvider.js +24 -9
  23. package/dist/auth/BaseAuthProvider.js.map +1 -1
  24. package/dist/auth/IAuthProvider.d.ts +32 -0
  25. package/dist/auth/IAuthProvider.d.ts.map +1 -1
  26. package/dist/auth/exampleNewUserSubClass.d.ts +5 -1
  27. package/dist/auth/exampleNewUserSubClass.d.ts.map +1 -1
  28. package/dist/auth/exampleNewUserSubClass.js +21 -6
  29. package/dist/auth/exampleNewUserSubClass.js.map +1 -1
  30. package/dist/auth/index.d.ts +14 -0
  31. package/dist/auth/index.d.ts.map +1 -1
  32. package/dist/auth/index.js +35 -22
  33. package/dist/auth/index.js.map +1 -1
  34. package/dist/auth/initializeProviders.d.ts +3 -0
  35. package/dist/auth/initializeProviders.d.ts.map +1 -1
  36. package/dist/auth/initializeProviders.js +6 -0
  37. package/dist/auth/initializeProviders.js.map +1 -1
  38. package/dist/auth/newUsers.d.ts.map +1 -1
  39. package/dist/auth/newUsers.js +14 -3
  40. package/dist/auth/newUsers.js.map +1 -1
  41. package/dist/auth/providers/Auth0Provider.d.ts +9 -0
  42. package/dist/auth/providers/Auth0Provider.d.ts.map +1 -1
  43. package/dist/auth/providers/Auth0Provider.js +10 -0
  44. package/dist/auth/providers/Auth0Provider.js.map +1 -1
  45. package/dist/auth/providers/CognitoProvider.d.ts +9 -0
  46. package/dist/auth/providers/CognitoProvider.d.ts.map +1 -1
  47. package/dist/auth/providers/CognitoProvider.js +10 -0
  48. package/dist/auth/providers/CognitoProvider.js.map +1 -1
  49. package/dist/auth/providers/GoogleProvider.d.ts +9 -0
  50. package/dist/auth/providers/GoogleProvider.d.ts.map +1 -1
  51. package/dist/auth/providers/GoogleProvider.js +11 -1
  52. package/dist/auth/providers/GoogleProvider.js.map +1 -1
  53. package/dist/auth/providers/MSALProvider.d.ts +9 -0
  54. package/dist/auth/providers/MSALProvider.d.ts.map +1 -1
  55. package/dist/auth/providers/MSALProvider.js +10 -0
  56. package/dist/auth/providers/MSALProvider.js.map +1 -1
  57. package/dist/auth/providers/OktaProvider.d.ts +9 -0
  58. package/dist/auth/providers/OktaProvider.d.ts.map +1 -1
  59. package/dist/auth/providers/OktaProvider.js +10 -0
  60. package/dist/auth/providers/OktaProvider.js.map +1 -1
  61. package/dist/config.d.ts +12 -0
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js +42 -8
  64. package/dist/config.js.map +1 -1
  65. package/dist/context.d.ts +8 -1
  66. package/dist/context.d.ts.map +1 -1
  67. package/dist/context.js +26 -4
  68. package/dist/context.js.map +1 -1
  69. package/dist/directives/Public.js +2 -0
  70. package/dist/directives/Public.js.map +1 -1
  71. package/dist/entitySubclasses/entityPermissions.server.d.ts +7 -2
  72. package/dist/entitySubclasses/entityPermissions.server.d.ts.map +1 -1
  73. package/dist/entitySubclasses/entityPermissions.server.js +26 -8
  74. package/dist/entitySubclasses/entityPermissions.server.js.map +1 -1
  75. package/dist/generated/generated.d.ts +539 -2
  76. package/dist/generated/generated.d.ts.map +1 -1
  77. package/dist/generated/generated.js +9985 -14951
  78. package/dist/generated/generated.js.map +1 -1
  79. package/dist/generic/DeleteOptionsInput.d.ts +3 -0
  80. package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
  81. package/dist/generic/DeleteOptionsInput.js +3 -2
  82. package/dist/generic/DeleteOptionsInput.js.map +1 -1
  83. package/dist/generic/KeyInputOutputTypes.js +0 -6
  84. package/dist/generic/KeyInputOutputTypes.js.map +1 -1
  85. package/dist/generic/KeyValuePairInput.d.ts +4 -0
  86. package/dist/generic/KeyValuePairInput.d.ts.map +1 -1
  87. package/dist/generic/KeyValuePairInput.js +4 -2
  88. package/dist/generic/KeyValuePairInput.js.map +1 -1
  89. package/dist/generic/PushStatusResolver.js +0 -3
  90. package/dist/generic/PushStatusResolver.js.map +1 -1
  91. package/dist/generic/ResolverBase.d.ts +58 -0
  92. package/dist/generic/ResolverBase.d.ts.map +1 -1
  93. package/dist/generic/ResolverBase.js +203 -18
  94. package/dist/generic/ResolverBase.js.map +1 -1
  95. package/dist/generic/RunViewResolver.d.ts +22 -0
  96. package/dist/generic/RunViewResolver.d.ts.map +1 -1
  97. package/dist/generic/RunViewResolver.js +42 -108
  98. package/dist/generic/RunViewResolver.js.map +1 -1
  99. package/dist/index.d.ts +12 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +94 -37
  102. package/dist/index.js.map +1 -1
  103. package/dist/orm.d.ts.map +1 -1
  104. package/dist/orm.js +2 -1
  105. package/dist/orm.js.map +1 -1
  106. package/dist/resolvers/APIKeyResolver.d.ts +74 -0
  107. package/dist/resolvers/APIKeyResolver.d.ts.map +1 -1
  108. package/dist/resolvers/APIKeyResolver.js +49 -10
  109. package/dist/resolvers/APIKeyResolver.js.map +1 -1
  110. package/dist/resolvers/ActionResolver.d.ts +189 -0
  111. package/dist/resolvers/ActionResolver.d.ts.map +1 -1
  112. package/dist/resolvers/ActionResolver.js +152 -21
  113. package/dist/resolvers/ActionResolver.js.map +1 -1
  114. package/dist/resolvers/ColorResolver.js +0 -5
  115. package/dist/resolvers/ColorResolver.js.map +1 -1
  116. package/dist/resolvers/ComponentRegistryResolver.d.ts +65 -0
  117. package/dist/resolvers/ComponentRegistryResolver.d.ts.map +1 -1
  118. package/dist/resolvers/ComponentRegistryResolver.js +118 -40
  119. package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
  120. package/dist/resolvers/CreateQueryResolver.d.ts +47 -0
  121. package/dist/resolvers/CreateQueryResolver.d.ts.map +1 -1
  122. package/dist/resolvers/CreateQueryResolver.js +92 -116
  123. package/dist/resolvers/CreateQueryResolver.js.map +1 -1
  124. package/dist/resolvers/DatasetResolver.js +2 -14
  125. package/dist/resolvers/DatasetResolver.js.map +1 -1
  126. package/dist/resolvers/EntityCommunicationsResolver.d.ts +40 -0
  127. package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
  128. package/dist/resolvers/EntityCommunicationsResolver.js +2 -36
  129. package/dist/resolvers/EntityCommunicationsResolver.js.map +1 -1
  130. package/dist/resolvers/EntityRecordNameResolver.js +0 -7
  131. package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
  132. package/dist/resolvers/FileCategoryResolver.d.ts +1 -1
  133. package/dist/resolvers/FileCategoryResolver.d.ts.map +1 -1
  134. package/dist/resolvers/FileCategoryResolver.js +15 -3
  135. package/dist/resolvers/FileCategoryResolver.js.map +1 -1
  136. package/dist/resolvers/FileResolver.d.ts +16 -0
  137. package/dist/resolvers/FileResolver.d.ts.map +1 -1
  138. package/dist/resolvers/FileResolver.js +59 -74
  139. package/dist/resolvers/FileResolver.js.map +1 -1
  140. package/dist/resolvers/GetDataContextDataResolver.d.ts +18 -1
  141. package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
  142. package/dist/resolvers/GetDataContextDataResolver.js +17 -9
  143. package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
  144. package/dist/resolvers/GetDataResolver.d.ts +19 -0
  145. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  146. package/dist/resolvers/GetDataResolver.js +35 -35
  147. package/dist/resolvers/GetDataResolver.js.map +1 -1
  148. package/dist/resolvers/InfoResolver.d.ts +2 -2
  149. package/dist/resolvers/InfoResolver.d.ts.map +1 -1
  150. package/dist/resolvers/InfoResolver.js +17 -20
  151. package/dist/resolvers/InfoResolver.js.map +1 -1
  152. package/dist/resolvers/MCPResolver.d.ts +325 -1
  153. package/dist/resolvers/MCPResolver.d.ts.map +1 -1
  154. package/dist/resolvers/MCPResolver.js +931 -24
  155. package/dist/resolvers/MCPResolver.js.map +1 -1
  156. package/dist/resolvers/MergeRecordsResolver.js +3 -29
  157. package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
  158. package/dist/resolvers/PotentialDuplicateRecordResolver.d.ts.map +1 -1
  159. package/dist/resolvers/PotentialDuplicateRecordResolver.js +0 -3
  160. package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
  161. package/dist/resolvers/QueryResolver.d.ts +20 -0
  162. package/dist/resolvers/QueryResolver.d.ts.map +1 -1
  163. package/dist/resolvers/QueryResolver.js +44 -36
  164. package/dist/resolvers/QueryResolver.js.map +1 -1
  165. package/dist/resolvers/ReportResolver.d.ts +3 -0
  166. package/dist/resolvers/ReportResolver.d.ts.map +1 -1
  167. package/dist/resolvers/ReportResolver.js +9 -10
  168. package/dist/resolvers/ReportResolver.js.map +1 -1
  169. package/dist/resolvers/RunAIAgentResolver.d.ts +54 -0
  170. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  171. package/dist/resolvers/RunAIAgentResolver.js +116 -40
  172. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  173. package/dist/resolvers/RunAIPromptResolver.d.ts +42 -0
  174. package/dist/resolvers/RunAIPromptResolver.d.ts.map +1 -1
  175. package/dist/resolvers/RunAIPromptResolver.js +95 -22
  176. package/dist/resolvers/RunAIPromptResolver.js.map +1 -1
  177. package/dist/resolvers/RunTemplateResolver.js +9 -6
  178. package/dist/resolvers/RunTemplateResolver.js.map +1 -1
  179. package/dist/resolvers/RunTestResolver.d.ts +12 -0
  180. package/dist/resolvers/RunTestResolver.d.ts.map +1 -1
  181. package/dist/resolvers/RunTestResolver.js +35 -21
  182. package/dist/resolvers/RunTestResolver.js.map +1 -1
  183. package/dist/resolvers/SqlLoggingConfigResolver.d.ts +312 -0
  184. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  185. package/dist/resolvers/SqlLoggingConfigResolver.js +295 -45
  186. package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
  187. package/dist/resolvers/SyncDataResolver.d.ts +21 -0
  188. package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
  189. package/dist/resolvers/SyncDataResolver.js +36 -22
  190. package/dist/resolvers/SyncDataResolver.js.map +1 -1
  191. package/dist/resolvers/SyncRolesUsersResolver.d.ts +14 -0
  192. package/dist/resolvers/SyncRolesUsersResolver.d.ts.map +1 -1
  193. package/dist/resolvers/SyncRolesUsersResolver.js +54 -21
  194. package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
  195. package/dist/resolvers/TaskResolver.d.ts +13 -0
  196. package/dist/resolvers/TaskResolver.d.ts.map +1 -1
  197. package/dist/resolvers/TaskResolver.js +22 -7
  198. package/dist/resolvers/TaskResolver.js.map +1 -1
  199. package/dist/resolvers/TelemetryResolver.d.ts +22 -0
  200. package/dist/resolvers/TelemetryResolver.d.ts.map +1 -1
  201. package/dist/resolvers/TelemetryResolver.js +45 -79
  202. package/dist/resolvers/TelemetryResolver.js.map +1 -1
  203. package/dist/resolvers/TransactionGroupResolver.js +11 -13
  204. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  205. package/dist/resolvers/UserFavoriteResolver.js +3 -12
  206. package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
  207. package/dist/resolvers/UserResolver.js +10 -0
  208. package/dist/resolvers/UserResolver.js.map +1 -1
  209. package/dist/resolvers/UserViewResolver.js +4 -0
  210. package/dist/resolvers/UserViewResolver.js.map +1 -1
  211. package/dist/resolvers/VersionHistoryResolver.d.ts +39 -0
  212. package/dist/resolvers/VersionHistoryResolver.d.ts.map +1 -0
  213. package/dist/resolvers/VersionHistoryResolver.js +208 -0
  214. package/dist/resolvers/VersionHistoryResolver.js.map +1 -0
  215. package/dist/rest/EntityCRUDHandler.d.ts +19 -0
  216. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  217. package/dist/rest/EntityCRUDHandler.js +55 -0
  218. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  219. package/dist/rest/OAuthCallbackHandler.d.ts +143 -0
  220. package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -0
  221. package/dist/rest/OAuthCallbackHandler.js +634 -0
  222. package/dist/rest/OAuthCallbackHandler.js.map +1 -0
  223. package/dist/rest/RESTEndpointHandler.d.ts +120 -0
  224. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  225. package/dist/rest/RESTEndpointHandler.js +213 -24
  226. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  227. package/dist/rest/ViewOperationsHandler.d.ts +19 -0
  228. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  229. package/dist/rest/ViewOperationsHandler.js +39 -0
  230. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  231. package/dist/rest/index.d.ts +1 -0
  232. package/dist/rest/index.d.ts.map +1 -1
  233. package/dist/rest/index.js +1 -0
  234. package/dist/rest/index.js.map +1 -1
  235. package/dist/rest/setupRESTEndpoints.d.ts +35 -0
  236. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  237. package/dist/rest/setupRESTEndpoints.js +15 -1
  238. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  239. package/dist/services/ScheduledJobsService.d.ts +31 -0
  240. package/dist/services/ScheduledJobsService.d.ts.map +1 -1
  241. package/dist/services/ScheduledJobsService.js +38 -4
  242. package/dist/services/ScheduledJobsService.js.map +1 -1
  243. package/dist/services/TaskOrchestrator.d.ts +73 -0
  244. package/dist/services/TaskOrchestrator.d.ts.map +1 -1
  245. package/dist/services/TaskOrchestrator.js +137 -15
  246. package/dist/services/TaskOrchestrator.js.map +1 -1
  247. package/dist/types.d.ts +14 -0
  248. package/dist/types.d.ts.map +1 -1
  249. package/dist/types.js +0 -13
  250. package/dist/types.js.map +1 -1
  251. package/dist/util.d.ts +37 -1
  252. package/dist/util.d.ts.map +1 -1
  253. package/dist/util.js +55 -8
  254. package/dist/util.js.map +1 -1
  255. package/package.json +83 -78
  256. package/src/auth/exampleNewUserSubClass.ts +1 -5
  257. package/src/auth/newUsers.ts +4 -2
  258. package/src/entitySubclasses/entityPermissions.server.ts +1 -3
  259. package/src/generated/generated.ts +4707 -2664
  260. package/src/index.ts +73 -62
  261. package/src/resolvers/FileCategoryResolver.ts +1 -1
  262. package/src/resolvers/InfoResolver.ts +10 -6
  263. package/src/resolvers/MCPResolver.ts +910 -10
  264. package/src/resolvers/PotentialDuplicateRecordResolver.ts +0 -4
  265. package/src/resolvers/VersionHistoryResolver.ts +177 -0
  266. package/src/rest/OAuthCallbackHandler.ts +766 -0
  267. package/src/rest/RESTEndpointHandler.ts +58 -35
  268. package/src/rest/index.ts +2 -1
  269. package/src/rest/setupRESTEndpoints.ts +13 -12
@@ -9,16 +9,23 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { RegisterClass } from '@memberjunction/global';
11
11
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
12
+ /**
13
+ * Google Identity Platform authentication provider implementation
14
+ */
12
15
  let GoogleProvider = class GoogleProvider extends BaseAuthProvider {
13
16
  constructor(config) {
14
17
  super(config);
15
18
  }
19
+ /**
20
+ * Extracts user information from Google JWT payload
21
+ */
16
22
  extractUserInfo(payload) {
23
+ // Google uses standard OIDC claims
17
24
  const email = payload.email;
18
25
  const fullName = payload.name;
19
26
  const firstName = payload.given_name;
20
27
  const lastName = payload.family_name;
21
- const preferredUsername = email;
28
+ const preferredUsername = email; // Google typically uses email as username
22
29
  return {
23
30
  email,
24
31
  firstName: firstName || fullName?.split(' ')[0],
@@ -27,6 +34,9 @@ let GoogleProvider = class GoogleProvider extends BaseAuthProvider {
27
34
  preferredUsername
28
35
  };
29
36
  }
37
+ /**
38
+ * Validates Google-specific configuration
39
+ */
30
40
  validateConfig() {
31
41
  const baseValid = super.validateConfig();
32
42
  const hasClientId = !!this.config.clientId;
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/GoogleProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOnD,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,gBAAgB;IAClD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAKD,eAAe,CAAC,OAAmB;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,KAAK,CAAC;QAEhC,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAKD,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,OAAO,SAAS,IAAI,WAAW,CAAC;IAClC,CAAC;CACF,CAAA;AAlCY,cAAc;IAD1B,aAAa,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;GAC7B,cAAc,CAkC1B"}
1
+ {"version":3,"file":"GoogleProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/GoogleProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,gBAAgB;IAClD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,mCAAmC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,CAAC;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,0CAA0C;QAE3E,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,OAAO,SAAS,IAAI,WAAW,CAAC;IAClC,CAAC;CACF,CAAA;AAlCY,cAAc;IAD1B,aAAa,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;GAC7B,cAAc,CAkC1B"}
@@ -1,9 +1,18 @@
1
1
  import { JwtPayload } from 'jsonwebtoken';
2
2
  import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
3
3
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
4
+ /**
5
+ * Microsoft Authentication Library (MSAL) provider implementation
6
+ */
4
7
  export declare class MSALProvider extends BaseAuthProvider {
5
8
  constructor(config: AuthProviderConfig);
9
+ /**
10
+ * Extracts user information from MSAL/Azure AD JWT payload
11
+ */
6
12
  extractUserInfo(payload: JwtPayload): AuthUserInfo;
13
+ /**
14
+ * Validates MSAL-specific configuration
15
+ */
7
16
  validateConfig(): boolean;
8
17
  }
9
18
  //# sourceMappingURL=MSALProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MSALProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/MSALProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,qBACa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,kBAAkB;IAOtC,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAoBlD,cAAc,IAAI,OAAO;CAO1B"}
1
+ {"version":3,"file":"MSALProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/MSALProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,qBACa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAiBlD;;OAEG;IACH,cAAc,IAAI,OAAO;CAO1B"}
@@ -9,11 +9,18 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { RegisterClass } from '@memberjunction/global';
11
11
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
12
+ /**
13
+ * Microsoft Authentication Library (MSAL) provider implementation
14
+ */
12
15
  let MSALProvider = class MSALProvider extends BaseAuthProvider {
13
16
  constructor(config) {
14
17
  super(config);
15
18
  }
19
+ /**
20
+ * Extracts user information from MSAL/Azure AD JWT payload
21
+ */
16
22
  extractUserInfo(payload) {
23
+ // MSAL/Azure AD uses some custom claims
17
24
  const email = payload.email || payload.preferred_username;
18
25
  const fullName = payload.name;
19
26
  const firstName = payload.given_name;
@@ -27,6 +34,9 @@ let MSALProvider = class MSALProvider extends BaseAuthProvider {
27
34
  preferredUsername
28
35
  };
29
36
  }
37
+ /**
38
+ * Validates MSAL-specific configuration
39
+ */
30
40
  validateConfig() {
31
41
  const baseValid = super.validateConfig();
32
42
  const hasClientId = !!this.config.clientId;
@@ -1 +1 @@
1
- {"version":3,"file":"MSALProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/MSALProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAMnD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gBAAgB;IAChD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAKD,eAAe,CAAC,OAAmB;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,IAAI,OAAO,CAAC,kBAAwC,CAAC;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,CAAC;QAE3E,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAKD,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,OAAO,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;;GAC3B,YAAY,CAmCxB"}
1
+ {"version":3,"file":"MSALProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/MSALProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gBAAgB;IAChD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,wCAAwC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,IAAI,OAAO,CAAC,kBAAwC,CAAC;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,CAAC;QAE3E,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,OAAO,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC;IACjD,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;;GAC3B,YAAY,CAmCxB"}
@@ -1,9 +1,18 @@
1
1
  import { JwtPayload } from 'jsonwebtoken';
2
2
  import { AuthProviderConfig, AuthUserInfo } from '@memberjunction/core';
3
3
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
4
+ /**
5
+ * Okta authentication provider implementation
6
+ */
4
7
  export declare class OktaProvider extends BaseAuthProvider {
5
8
  constructor(config: AuthProviderConfig);
9
+ /**
10
+ * Extracts user information from Okta JWT payload
11
+ */
6
12
  extractUserInfo(payload: JwtPayload): AuthUserInfo;
13
+ /**
14
+ * Validates Okta-specific configuration
15
+ */
7
16
  validateConfig(): boolean;
8
17
  }
9
18
  //# sourceMappingURL=OktaProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OktaProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/OktaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM1D,qBACa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,kBAAkB;IAOtC,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAoBlD,cAAc,IAAI,OAAO;CAO1B"}
1
+ {"version":3,"file":"OktaProvider.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/OktaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AACH,qBACa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,kBAAkB;IAItC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAiBlD;;OAEG;IACH,cAAc,IAAI,OAAO;CAO1B"}
@@ -9,11 +9,18 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import { RegisterClass } from '@memberjunction/global';
11
11
  import { BaseAuthProvider } from '../BaseAuthProvider.js';
12
+ /**
13
+ * Okta authentication provider implementation
14
+ */
12
15
  let OktaProvider = class OktaProvider extends BaseAuthProvider {
13
16
  constructor(config) {
14
17
  super(config);
15
18
  }
19
+ /**
20
+ * Extracts user information from Okta JWT payload
21
+ */
16
22
  extractUserInfo(payload) {
23
+ // Okta uses standard OIDC claims plus some custom ones
17
24
  const email = payload.email || payload.preferred_username;
18
25
  const fullName = payload.name;
19
26
  const firstName = payload.given_name;
@@ -27,6 +34,9 @@ let OktaProvider = class OktaProvider extends BaseAuthProvider {
27
34
  preferredUsername
28
35
  };
29
36
  }
37
+ /**
38
+ * Validates Okta-specific configuration
39
+ */
30
40
  validateConfig() {
31
41
  const baseValid = super.validateConfig();
32
42
  const hasClientId = !!this.config.clientId;
@@ -1 +1 @@
1
- {"version":3,"file":"OktaProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/OktaProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOnD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gBAAgB;IAChD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAKD,eAAe,CAAC,OAAmB;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,IAAI,OAAO,CAAC,kBAAwC,CAAC;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,IAAI,KAAK,CAAC;QAEpF,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAKD,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,OAAO,SAAS,IAAI,WAAW,IAAI,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;;GAC3B,YAAY,CAmCxB"}
1
+ {"version":3,"file":"OktaProvider.js","sourceRoot":"","sources":["../../../src/auth/providers/OktaProvider.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,gBAAgB;IAChD,YAAY,MAA0B;QACpC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAmB;QACjC,uDAAuD;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAA2B,IAAI,OAAO,CAAC,kBAAwC,CAAC;QACtG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA0B,CAAC;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAgC,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAiC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,kBAAwC,IAAI,KAAK,CAAC;QAEpF,OAAO;YACL,KAAK;YACL,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ;YACR,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,OAAO,SAAS,IAAI,WAAW,IAAI,SAAS,CAAC;IAC/C,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC;;GAC3B,YAAY,CAmCxB"}
package/dist/config.d.ts CHANGED
@@ -1015,6 +1015,18 @@ export type ComponentRegistryConfig = z.infer<typeof componentRegistrySchema>;
1015
1015
  export type ScheduledJobsConfig = z.infer<typeof scheduledJobsSchema>;
1016
1016
  export type TelemetryConfig = z.infer<typeof telemetrySchema>;
1017
1017
  export type ConfigInfo = z.infer<typeof configInfoSchema>;
1018
+ /**
1019
+ * Default MJServer configuration values.
1020
+ * These provide sensible defaults for all optional settings, with environment variable overrides.
1021
+ *
1022
+ * Priority order (highest to lowest):
1023
+ * 1. User's mj.config.cjs overrides
1024
+ * 2. Environment variables (referenced here in defaults)
1025
+ * 3. Hardcoded default values
1026
+ *
1027
+ * This means minimal configs only need to override if they want something different
1028
+ * than both the environment variable AND the default value.
1029
+ */
1018
1030
  export declare const DEFAULT_SERVER_CONFIG: Partial<ConfigInfo>;
1019
1031
  export declare const configInfo: ConfigInfo;
1020
1032
  export declare const dbUsername: string, dbPassword: string, dbHost: string, dbDatabase: string, dbPort: number, dbTrustServerCertificate: "Y" | "N", dbInstanceName: string, graphqlPort: number, ___codeGenAPIURL: string, ___codeGenAPIPort: number, ___codeGenAPISubmissionDelay: number, graphqlRootPath: string, enableIntrospection: boolean, websiteRunFromPackage: number, userEmailMap: Record<string, string>, apiKey: string, baseUrl: string, publicUrl: string, mj_core_schema: string, dbReadOnlyUsername: string, dbReadOnlyPassword: string, RESTApiOptions: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -37,6 +37,10 @@ const restApiOptionsSchema = z.object({
37
37
  includeSchemas: z.array(z.string()).optional(),
38
38
  excludeSchemas: z.array(z.string()).optional(),
39
39
  });
40
+ /**
41
+ * Returns a new Zod object that accepts boolean, string, or number values and transforms them to boolean.
42
+ * @returns
43
+ */
40
44
  const zodBooleanWithTransforms = () => {
41
45
  return z
42
46
  .union([z.boolean(), z.string(), z.number()])
@@ -58,7 +62,7 @@ const zodBooleanWithTransforms = () => {
58
62
  });
59
63
  };
60
64
  const askSkipInfoSchema = z.object({
61
- url: z.string().optional(),
65
+ url: z.string().optional(), // Base URL for Skip API
62
66
  apiKey: z.string().optional(),
63
67
  orgID: z.string().optional(),
64
68
  organizationInfo: z.string().optional(),
@@ -89,7 +93,7 @@ const sqlLoggingSchema = z.object({
89
93
  allowedLogDirectory: z.string().optional().default('./logs/sql'),
90
94
  maxActiveSessions: z.number().optional().default(5),
91
95
  autoCleanupEmptyFiles: z.boolean().optional().default(true),
92
- sessionTimeout: z.number().optional().default(3600000),
96
+ sessionTimeout: z.number().optional().default(3600000), // 1 hour
93
97
  });
94
98
  const authProviderSchema = z.object({
95
99
  name: z.string(),
@@ -101,7 +105,7 @@ const authProviderSchema = z.object({
101
105
  clientSecret: z.string().optional(),
102
106
  tenantId: z.string().optional(),
103
107
  domain: z.string().optional(),
104
- }).passthrough();
108
+ }).passthrough(); // Allow additional provider-specific fields
105
109
  const componentRegistrySchema = z.object({
106
110
  id: z.string().optional(),
107
111
  name: z.string().optional(),
@@ -115,16 +119,17 @@ const componentRegistrySchema = z.object({
115
119
  backoffMultiplier: z.number().optional(),
116
120
  }).optional(),
117
121
  headers: z.record(z.string()).optional(),
118
- }).passthrough();
122
+ }).passthrough(); // Allow additional fields
119
123
  const scheduledJobsSchema = z.object({
120
124
  enabled: z.boolean().optional().default(false),
121
125
  systemUserEmail: z.string().optional().default('system@memberjunction.org'),
122
126
  maxConcurrentJobs: z.number().optional().default(5),
123
- defaultLockTimeout: z.number().optional().default(600000),
124
- staleLockCleanupInterval: z.number().optional().default(300000),
127
+ defaultLockTimeout: z.number().optional().default(600000), // 10 minutes in ms
128
+ staleLockCleanupInterval: z.number().optional().default(300000), // 5 minutes in ms
125
129
  });
126
130
  const telemetrySchema = z.object({
127
- enabled: zodBooleanWithTransforms().default(process.env.MJ_TELEMETRY_ENABLED !== 'false'),
131
+ enabled: zodBooleanWithTransforms().default(process.env.MJ_TELEMETRY_ENABLED !== 'false' // Enabled by default unless explicitly disabled
132
+ ),
128
133
  level: z.enum(['minimal', 'standard', 'verbose', 'debug']).optional().default('standard'),
129
134
  });
130
135
  const configInfoSchema = z.object({
@@ -140,7 +145,7 @@ const configInfoSchema = z.object({
140
145
  telemetry: telemetrySchema.optional().default({}),
141
146
  apiKey: z.string().optional(),
142
147
  baseUrl: z.string().default('http://localhost'),
143
- publicUrl: z.string().optional().default(process.env.MJAPI_PUBLIC_URL || ''),
148
+ publicUrl: z.string().optional().default(process.env.MJAPI_PUBLIC_URL || ''), // Public URL for callbacks (e.g., ngrok URL when developing)
144
149
  dbHost: z.string().default('localhost'),
145
150
  dbDatabase: z.string(),
146
151
  dbPort: z.number({ coerce: true }).default(1433),
@@ -166,7 +171,20 @@ const configInfoSchema = z.object({
166
171
  .optional(),
167
172
  mjCoreSchema: z.string(),
168
173
  });
174
+ /**
175
+ * Default MJServer configuration values.
176
+ * These provide sensible defaults for all optional settings, with environment variable overrides.
177
+ *
178
+ * Priority order (highest to lowest):
179
+ * 1. User's mj.config.cjs overrides
180
+ * 2. Environment variables (referenced here in defaults)
181
+ * 3. Hardcoded default values
182
+ *
183
+ * This means minimal configs only need to override if they want something different
184
+ * than both the environment variable AND the default value.
185
+ */
169
186
  export const DEFAULT_SERVER_CONFIG = {
187
+ // Database connection settings (environment-driven with defaults)
170
188
  dbHost: process.env.DB_HOST ?? 'localhost',
171
189
  dbPort: process.env.DB_PORT ? parseInt(process.env.DB_PORT, 10) : 1433,
172
190
  dbDatabase: process.env.DB_DATABASE,
@@ -177,6 +195,7 @@ export const DEFAULT_SERVER_CONFIG = {
177
195
  dbTrustServerCertificate: parseBooleanEnv(process.env.DB_TRUST_SERVER_CERTIFICATE) ? 'Y' : 'N',
178
196
  dbInstanceName: process.env.DB_INSTANCE_NAME,
179
197
  mjCoreSchema: process.env.MJ_CORE_SCHEMA ?? '__mj',
198
+ // GraphQL server settings (environment-driven with defaults)
180
199
  graphqlPort: process.env.GRAPHQL_PORT ? parseInt(process.env.GRAPHQL_PORT, 10) : 4000,
181
200
  graphqlRootPath: process.env.GRAPHQL_ROOT_PATH ?? '/',
182
201
  baseUrl: process.env.GRAPHQL_BASE_URL ?? 'http://localhost',
@@ -184,6 +203,7 @@ export const DEFAULT_SERVER_CONFIG = {
184
203
  enableIntrospection: process.env.ENABLE_INTROSPECTION === 'true',
185
204
  apiKey: process.env.MJ_API_KEY,
186
205
  websiteRunFromPackage: process.env.WEBSITE_RUN_FROM_PACKAGE ? parseInt(process.env.WEBSITE_RUN_FROM_PACKAGE, 10) : undefined,
206
+ // User handling defaults
187
207
  userHandling: {
188
208
  autoCreateNewUsers: true,
189
209
  newUserLimitedToAuthorizedDomains: false,
@@ -195,6 +215,7 @@ export const DEFAULT_SERVER_CONFIG = {
195
215
  CreateUserApplicationRecords: true,
196
216
  UserApplications: []
197
217
  },
218
+ // Database settings (with environment variable for cache refresh)
198
219
  databaseSettings: {
199
220
  connectionTimeout: 45000,
200
221
  requestTimeout: 30000,
@@ -208,12 +229,15 @@ export const DEFAULT_SERVER_CONFIG = {
208
229
  acquireTimeoutMillis: 30000,
209
230
  }
210
231
  },
232
+ // Viewing system defaults
211
233
  viewingSystem: {
212
234
  enableSmartFilters: true,
213
235
  },
236
+ // REST API defaults
214
237
  restApiOptions: {
215
238
  enabled: false,
216
239
  },
240
+ // Ask Skip configuration (environment-driven)
217
241
  askSkip: {
218
242
  url: process.env.ASK_SKIP_URL,
219
243
  chatURL: process.env.ASK_SKIP_CHAT_URL,
@@ -231,6 +255,7 @@ export const DEFAULT_SERVER_CONFIG = {
231
255
  includeEntitiesFromExcludedSchemas: [],
232
256
  },
233
257
  },
258
+ // SQL logging defaults
234
259
  sqlLogging: {
235
260
  enabled: true,
236
261
  defaultOptions: {
@@ -247,6 +272,7 @@ export const DEFAULT_SERVER_CONFIG = {
247
272
  autoCleanupEmptyFiles: true,
248
273
  sessionTimeout: 3600000
249
274
  },
275
+ // Scheduled jobs defaults
250
276
  scheduledJobs: {
251
277
  enabled: true,
252
278
  systemUserEmail: 'not.set@nowhere.com',
@@ -254,11 +280,14 @@ export const DEFAULT_SERVER_CONFIG = {
254
280
  defaultLockTimeout: 600000,
255
281
  staleLockCleanupInterval: 300000
256
282
  },
283
+ // Telemetry defaults
257
284
  telemetry: {
258
285
  enabled: true,
259
286
  level: 'standard'
260
287
  },
288
+ // Auth providers (environment-driven)
261
289
  authProviders: [
290
+ // Microsoft Azure AD / Entra ID
262
291
  process.env.TENANT_ID && process.env.WEB_CLIENT_ID ? {
263
292
  name: 'azure',
264
293
  type: 'msal',
@@ -268,6 +297,7 @@ export const DEFAULT_SERVER_CONFIG = {
268
297
  clientId: process.env.WEB_CLIENT_ID,
269
298
  tenantId: process.env.TENANT_ID
270
299
  } : null,
300
+ // Auth0
271
301
  process.env.AUTH0_DOMAIN && process.env.AUTH0_CLIENT_ID ? {
272
302
  name: 'auth0',
273
303
  type: 'auth0',
@@ -284,14 +314,18 @@ export const configInfo = loadConfig();
284
314
  export const { dbUsername, dbPassword, dbHost, dbDatabase, dbPort, dbTrustServerCertificate, dbInstanceName, graphqlPort, ___codeGenAPIURL, ___codeGenAPIPort, ___codeGenAPISubmissionDelay, graphqlRootPath, enableIntrospection, websiteRunFromPackage, userEmailMap, apiKey, baseUrl, publicUrl, mjCoreSchema: mj_core_schema, dbReadOnlyUsername, dbReadOnlyPassword, restApiOptions: RESTApiOptions, } = configInfo;
285
315
  export function loadConfig() {
286
316
  const configSearchResult = explorer.search(process.cwd());
317
+ // Start with DEFAULT_SERVER_CONFIG as base
287
318
  let mergedConfig = DEFAULT_SERVER_CONFIG;
319
+ // If user config exists, merge it with defaults
288
320
  if (configSearchResult && !configSearchResult.isEmpty) {
289
321
  LogStatus(`Config file found at ${configSearchResult.filepath}`);
322
+ // Merge user config with defaults (user config takes precedence)
290
323
  mergedConfig = mergeConfigs(DEFAULT_SERVER_CONFIG, configSearchResult.config);
291
324
  }
292
325
  else {
293
326
  LogStatus(`No config file found, using DEFAULT_SERVER_CONFIG`);
294
327
  }
328
+ // Validate the merged configuration
295
329
  const configParsing = configInfoSchema.safeParse(mergedConfig);
296
330
  if (!configParsing.success) {
297
331
  LogError('Error parsing config file', null, JSON.stringify(configParsing.error.issues, null, 2));
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,15 +1,22 @@
1
- /// <reference types="node" />
2
1
  import { IncomingMessage } from 'http';
3
2
  import 'reflect-metadata';
4
3
  import { Subject } from 'rxjs';
5
4
  import sql from 'mssql';
6
5
  import { DataSourceInfo, UserPayload } from './types.js';
7
6
  import { SQLServerDataProvider } from '@memberjunction/sqlserver-dataprovider';
7
+ /**
8
+ * Request context for API key usage logging.
9
+ */
8
10
  export interface RequestContext {
11
+ /** The API endpoint path (e.g., '/graphql', '/mcp') */
9
12
  endpoint: string;
13
+ /** HTTP method (e.g., 'POST', 'GET') */
10
14
  method: string;
15
+ /** GraphQL operation name if available */
11
16
  operationName?: string;
17
+ /** Client IP address */
12
18
  ipAddress?: string;
19
+ /** User-Agent header */
13
20
  userAgent?: string;
14
21
  }
15
22
  export declare const getUserPayload: (bearerToken: string, sessionId: string, dataSources: DataSourceInfo[], requestDomain?: string, systemApiKey?: string, userApiKey?: string, requestContext?: RequestContext) => Promise<UserPayload>;
@@ -1 +1 @@
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,GAAG,MAAM,OAAO,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzD,OAAO,EAAE,qBAAqB,EAA0C,MAAM,wCAAwC,CAAC;AAgCvH,MAAM,WAAW,cAAc;IAE7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gBACZ,MAAM,kCAEN,cAAc,EAAE,kBACb,MAAM,iBACP,MAAM,eACR,MAAM,mBACF,cAAc,KAC9B,QAAQ,WAAW,CAkIrB,CAAC;AAEF,eAAO,MAAM,eAAe,gDACoB;IAAE,cAAc,EAAE,QAAQ,OAAO,CAAC,CAAC;IAAC,UAAU,EAAE,IAAI,cAAc,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,eACjI;IAAE,GAAG,EAAE,eAAe,CAAA;CAAE;;;;;;;;EAoFvC,CAAC"}
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,GAAG,MAAM,OAAO,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzD,OAAO,EAAE,qBAAqB,EAA0C,MAAM,wCAAwC,CAAC;AA6BvH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,GACzB,aAAa,MAAM,EACnB,iBAAqB,EACrB,aAAa,cAAc,EAAE,EAC7B,gBAAgB,MAAM,EACtB,eAAe,MAAM,EACrB,aAAa,MAAM,EACnB,iBAAiB,cAAc,KAC9B,OAAO,CAAC,WAAW,CAkIrB,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,6CAA6C;IAAE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,MAC1I,SAAS;IAAE,GAAG,EAAE,eAAe,CAAA;CAAE;;;;;;cAmEd,YAAY,GAAG,WAAW;;EAiBnD,CAAC"}
package/dist/context.js CHANGED
@@ -20,6 +20,7 @@ const verifyAsync = async (issuer, token) => new Promise((resolve, reject) => {
20
20
  jwt.verify(token, getSigningKeys(issuer), options, (err, jwt) => {
21
21
  if (jwt && typeof jwt !== 'string' && !err) {
22
22
  const payload = jwt.payload ?? jwt;
23
+ // Use provider to extract user info for logging
23
24
  const userInfo = extractUserInfoFromPayload(payload);
24
25
  console.log(`Valid token: ${userInfo.fullName || 'Unknown'} (${userInfo.email || userInfo.preferredUsername || 'Unknown'})`);
25
26
  resolve(payload);
@@ -34,22 +35,28 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
34
35
  try {
35
36
  const readOnlyDataSource = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
36
37
  const readWriteDataSource = GetReadWriteDataSource(dataSources);
38
+ // Check for user API key first (X-API-Key header with mj_sk_* format)
39
+ // This authenticates as the specific user who owns the API key
37
40
  if (userApiKey && userApiKey !== String(undefined)) {
41
+ // Use system user as context for validation operations
38
42
  const systemUser = await getSystemUser(readOnlyDataSource);
39
43
  const apiKeyEngine = GetAPIKeyEngine();
40
44
  const validationResult = await apiKeyEngine.ValidateAPIKey({
41
45
  RawKey: userApiKey,
42
- ApplicationName: 'MJAPI',
46
+ ApplicationName: 'MJAPI', // Check if key is bound to this application
43
47
  Endpoint: requestContext?.endpoint ?? '/api',
44
48
  Method: requestContext?.method ?? 'POST',
45
49
  Operation: requestContext?.operationName ?? null,
46
- StatusCode: 200,
47
- ResponseTimeMs: undefined,
50
+ StatusCode: 200, // Auth succeeded if we get here
51
+ ResponseTimeMs: undefined, // Not available at auth time
48
52
  IPAddress: requestContext?.ipAddress ?? null,
49
53
  UserAgent: requestContext?.userAgent ?? null,
50
54
  }, systemUser);
51
55
  if (validationResult.IsValid && validationResult.User) {
56
+ // Get the user from UserCache to ensure UserRoles is properly populated
57
+ // The validationResult.User from APIKeyEngine doesn't include UserRoles
52
58
  const cachedUser = UserCache.Instance.Users.find(u => u.ID === validationResult.User.ID);
59
+ // Use cached user if available, otherwise fall back to the validation result
53
60
  const userRecord = cachedUser || validationResult.User;
54
61
  return {
55
62
  userRecord,
@@ -59,8 +66,11 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
59
66
  apiKeyHash: validationResult.APIKeyHash,
60
67
  };
61
68
  }
69
+ // MJ API key validation failed - use generic message to prevent enumeration
62
70
  throw new AuthenticationError('Invalid API key');
63
71
  }
72
+ // Check for system API key (x-mj-api-key header)
73
+ // This authenticates as the system user for system-level operations
64
74
  if (systemApiKey && systemApiKey != String(undefined)) {
65
75
  if (systemApiKey === apiKey) {
66
76
  const systemUser = await getSystemUser(readOnlyDataSource);
@@ -85,6 +95,7 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
85
95
  }
86
96
  const expiryDate = new Date((payload.exp ?? 0) * 1000);
87
97
  if (expiryDate.getTime() <= Date.now()) {
98
+ // Log at warn level since token expiration is expected behavior (long-lived browser sessions)
88
99
  console.warn(`Token expired at ${expiryDate.toISOString()} - client should refresh`);
89
100
  throw new TokenExpiredError(expiryDate);
90
101
  }
@@ -94,6 +105,7 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
94
105
  console.warn('No issuer claim on token');
95
106
  throw new AuthenticationError('Missing issuer claim on token');
96
107
  }
108
+ // Verify issuer is supported
97
109
  const factory = AuthProviderFactory.getInstance();
98
110
  if (!factory.getByIssuer(issuer)) {
99
111
  console.warn(`Unsupported issuer: ${issuer}`);
@@ -102,6 +114,7 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
102
114
  await verifyAsync(issuer, token);
103
115
  authCache.set(token, true);
104
116
  }
117
+ // Use provider to extract user information
105
118
  const userInfo = extractUserInfoFromPayload(payload);
106
119
  const email = userInfo.email ? ((userEmailMap ?? {})[userInfo.email] ?? userInfo.email) : userInfo.preferredUsername;
107
120
  const userRecord = await verifyUserRecord(email, userInfo.firstName, userInfo.lastName, requestDomain, readWriteDataSource);
@@ -124,18 +137,25 @@ export const getUserPayload = async (bearerToken, sessionId = 'default', dataSou
124
137
  }
125
138
  };
126
139
  export const contextFunction = ({ setupComplete$, dataSource, dataSources }) => async ({ req }) => {
127
- await firstValueFrom(setupComplete$);
140
+ await firstValueFrom(setupComplete$); // wait for setup to complete before processing the request
141
+ // Extract request data first (synchronous operations)
128
142
  const sessionIdRaw = req.headers['x-session-id'];
129
143
  const requestDomain = url.parse(req.headers.origin || '');
130
144
  const sessionId = sessionIdRaw ? sessionIdRaw.toString() : '';
131
145
  const bearerToken = req.headers.authorization ?? '';
146
+ // Two types of API keys:
147
+ // - x-mj-api-key: System API key for system-level operations (authenticates as system user)
148
+ // - X-API-Key: User API key (mj_sk_*) for user-authenticated operations
132
149
  const systemApiKey = String(req.headers['x-mj-api-key']);
133
150
  const userApiKey = String(req.headers['x-api-key']);
151
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
134
152
  const reqAny = req;
135
153
  const operationName = reqAny.body?.operationName;
136
154
  if (operationName !== 'IntrospectionQuery') {
137
155
  console.log({ operationName, variables: reqAny.body?.variables || undefined });
138
156
  }
157
+ // Build request context for API key logging
158
+ // Note: responseTimeMs is not available at auth time, only endpoint/method/ip/ua
139
159
  const expressReq = req;
140
160
  const requestContext = {
141
161
  endpoint: expressReq.path || expressReq.url || '/api',
@@ -148,6 +168,7 @@ export const contextFunction = ({ setupComplete$, dataSource, dataSources }) =>
148
168
  if (Metadata.Provider.Entities.length === 0) {
149
169
  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!!!');
150
170
  }
171
+ // now create a new instance of SQLServerDataProvider for each request
151
172
  const config = new SQLServerProviderConfigData(dataSource, mj_core_schema, 0, undefined, undefined, false);
152
173
  const p = new SQLServerDataProvider();
153
174
  await p.Config(config);
@@ -161,6 +182,7 @@ export const contextFunction = ({ setupComplete$, dataSource, dataSources }) =>
161
182
  }
162
183
  }
163
184
  catch (e) {
185
+ // no read only data source available, so rp will remain null, this is OK!
164
186
  }
165
187
  const providers = [{
166
188
  provider: p,