@memberjunction/server 6.2.0-edge.0 → 6.2.0-edge.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 (403) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/agentSessions/ReturningVisitorRecap.d.ts +2 -0
  3. package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
  4. package/dist/agentSessions/ReturningVisitorRecap.js +5 -1
  5. package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
  6. package/dist/agentSessions/SessionManager.js +2 -2
  7. package/dist/agentSessions/remoteBrowserGoalEngine.d.ts +8 -0
  8. package/dist/agentSessions/remoteBrowserGoalEngine.d.ts.map +1 -1
  9. package/dist/agentSessions/remoteBrowserGoalEngine.js +21 -5
  10. package/dist/agentSessions/remoteBrowserGoalEngine.js.map +1 -1
  11. package/dist/auth/AuthProviderCatalogRouter.d.ts +2 -0
  12. package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
  13. package/dist/auth/AuthProviderCatalogRouter.js +5 -1
  14. package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
  15. package/dist/auth/index.d.ts +20 -1
  16. package/dist/auth/index.d.ts.map +1 -1
  17. package/dist/auth/index.js +20 -10
  18. package/dist/auth/index.js.map +1 -1
  19. package/dist/auth/initializeProviders.d.ts +8 -0
  20. package/dist/auth/initializeProviders.d.ts.map +1 -1
  21. package/dist/auth/initializeProviders.js +21 -5
  22. package/dist/auth/initializeProviders.js.map +1 -1
  23. package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
  24. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  25. package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
  26. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  27. package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
  28. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  29. package/dist/auth/magicLink/MagicLinkService.js +65 -51
  30. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  31. package/dist/auth/magicLink/index.d.ts +2 -2
  32. package/dist/auth/magicLink/index.d.ts.map +1 -1
  33. package/dist/auth/magicLink/index.js +2 -2
  34. package/dist/auth/magicLink/index.js.map +1 -1
  35. package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
  36. package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
  37. package/dist/auth/magicLink/magicLinkCore.js +61 -61
  38. package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
  39. package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
  40. package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
  41. package/dist/auth/magicLink/redeemLanding.js +12 -4
  42. package/dist/auth/magicLink/redeemLanding.js.map +1 -1
  43. package/dist/auth/magicLink/types.d.ts +4 -4
  44. package/dist/auth/principals.d.ts +2 -0
  45. package/dist/auth/principals.d.ts.map +1 -1
  46. package/dist/auth/principals.js +6 -2
  47. package/dist/auth/principals.js.map +1 -1
  48. package/dist/cache.d.ts +2 -0
  49. package/dist/cache.d.ts.map +1 -1
  50. package/dist/cache.js +3 -1
  51. package/dist/cache.js.map +1 -1
  52. package/dist/config.d.ts +346 -2
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js +34 -4
  55. package/dist/config.js.map +1 -1
  56. package/dist/context.d.ts +20 -0
  57. package/dist/context.d.ts.map +1 -1
  58. package/dist/context.js +27 -19
  59. package/dist/context.js.map +1 -1
  60. package/dist/directives/Public.d.ts +2 -0
  61. package/dist/directives/Public.d.ts.map +1 -1
  62. package/dist/directives/Public.js +3 -1
  63. package/dist/directives/Public.js.map +1 -1
  64. package/dist/directives/RequireSystemUser.d.ts +2 -0
  65. package/dist/directives/RequireSystemUser.d.ts.map +1 -1
  66. package/dist/directives/RequireSystemUser.js +3 -1
  67. package/dist/directives/RequireSystemUser.js.map +1 -1
  68. package/dist/generated/graphql-schemas/__mj.d.ts +11 -0
  69. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  70. package/dist/generated/graphql-schemas/__mj.js +48 -0
  71. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  72. package/dist/generic/CacheInvalidationResolver.d.ts +94 -4
  73. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  74. package/dist/generic/CacheInvalidationResolver.js +122 -3
  75. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  76. package/dist/generic/DeleteOptionsInput.d.ts +8 -1
  77. package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
  78. package/dist/generic/DeleteOptionsInput.js +1 -1
  79. package/dist/generic/DeleteOptionsInput.js.map +1 -1
  80. package/dist/generic/FireAndForgetHeartbeat.d.ts +3 -1
  81. package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
  82. package/dist/generic/FireAndForgetHeartbeat.js +8 -4
  83. package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
  84. package/dist/generic/PushStatusResolver.d.ts +10 -1
  85. package/dist/generic/PushStatusResolver.d.ts.map +1 -1
  86. package/dist/generic/PushStatusResolver.js +11 -3
  87. package/dist/generic/PushStatusResolver.js.map +1 -1
  88. package/dist/generic/ResolverBase.d.ts +5 -1
  89. package/dist/generic/ResolverBase.d.ts.map +1 -1
  90. package/dist/generic/ResolverBase.js +15 -8
  91. package/dist/generic/ResolverBase.js.map +1 -1
  92. package/dist/index.d.ts +6 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +30 -9
  95. package/dist/index.js.map +1 -1
  96. package/dist/integration/CustomColumnPromoter.d.ts +2 -0
  97. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  98. package/dist/integration/CustomColumnPromoter.js +5 -1
  99. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  100. package/dist/integration/EntityMapLifecycle.d.ts +4 -0
  101. package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
  102. package/dist/integration/EntityMapLifecycle.js +10 -2
  103. package/dist/integration/EntityMapLifecycle.js.map +1 -1
  104. package/dist/logging/NoLog.d.ts +4 -0
  105. package/dist/logging/NoLog.d.ts.map +1 -1
  106. package/dist/logging/NoLog.js +10 -2
  107. package/dist/logging/NoLog.js.map +1 -1
  108. package/dist/logging/StartupLogger.d.ts +2 -0
  109. package/dist/logging/StartupLogger.d.ts.map +1 -1
  110. package/dist/logging/StartupLogger.js +5 -1
  111. package/dist/logging/StartupLogger.js.map +1 -1
  112. package/dist/logging/bootAudit.d.ts +11 -7
  113. package/dist/logging/bootAudit.d.ts.map +1 -1
  114. package/dist/logging/bootAudit.js +15 -7
  115. package/dist/logging/bootAudit.js.map +1 -1
  116. package/dist/logging/boundaryLogPayload.d.ts +4 -0
  117. package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
  118. package/dist/logging/boundaryLogPayload.js +5 -1
  119. package/dist/logging/boundaryLogPayload.js.map +1 -1
  120. package/dist/logging/secretRedactor.d.ts +2 -0
  121. package/dist/logging/secretRedactor.d.ts.map +1 -1
  122. package/dist/logging/secretRedactor.js +8 -4
  123. package/dist/logging/secretRedactor.js.map +1 -1
  124. package/dist/logging/shortenForLog.d.ts +2 -0
  125. package/dist/logging/shortenForLog.d.ts.map +1 -1
  126. package/dist/logging/shortenForLog.js +7 -3
  127. package/dist/logging/shortenForLog.js.map +1 -1
  128. package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
  129. package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
  130. package/dist/logging/variablesLoggingMiddleware.js +8 -6
  131. package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
  132. package/dist/metadataRefreshSignal.d.ts +19 -0
  133. package/dist/metadataRefreshSignal.d.ts.map +1 -0
  134. package/dist/metadataRefreshSignal.js +45 -0
  135. package/dist/metadataRefreshSignal.js.map +1 -0
  136. package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
  137. package/dist/multiTenancy/index.d.ts +8 -0
  138. package/dist/multiTenancy/index.d.ts.map +1 -1
  139. package/dist/multiTenancy/index.js +21 -5
  140. package/dist/multiTenancy/index.js.map +1 -1
  141. package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
  142. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
  143. package/dist/realtimeWidget/WidgetRouter.js +14 -10
  144. package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
  145. package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
  146. package/dist/realtimeWidget/WidgetSessionService.js +27 -27
  147. package/dist/realtimeWidget/host-identity.d.ts +5 -1
  148. package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
  149. package/dist/realtimeWidget/host-identity.js +11 -3
  150. package/dist/realtimeWidget/host-identity.js.map +1 -1
  151. package/dist/realtimeWidget/index.d.ts +2 -2
  152. package/dist/realtimeWidget/index.d.ts.map +1 -1
  153. package/dist/realtimeWidget/index.js +2 -2
  154. package/dist/realtimeWidget/index.js.map +1 -1
  155. package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
  156. package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
  157. package/dist/realtimeWidget/visitorIdentity.js +16 -4
  158. package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
  159. package/dist/realtimeWidget/widgetCore.d.ts +48 -0
  160. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
  161. package/dist/realtimeWidget/widgetCore.js +38 -10
  162. package/dist/realtimeWidget/widgetCore.js.map +1 -1
  163. package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
  164. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  165. package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
  166. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  167. package/dist/resolvers/AdhocQueryResolver.js +3 -3
  168. package/dist/resolvers/FileResolver.js +3 -3
  169. package/dist/resolvers/GeoResolver.d.ts +2 -2
  170. package/dist/resolvers/GeoResolver.js +4 -4
  171. package/dist/resolvers/GetDataResolver.d.ts +14 -0
  172. package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
  173. package/dist/resolvers/GetDataResolver.js +43 -15
  174. package/dist/resolvers/GetDataResolver.js.map +1 -1
  175. package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -2
  176. package/dist/resolvers/ListOperationsResolver.d.ts +20 -0
  177. package/dist/resolvers/ListOperationsResolver.d.ts.map +1 -1
  178. package/dist/resolvers/ListOperationsResolver.js +68 -28
  179. package/dist/resolvers/ListOperationsResolver.js.map +1 -1
  180. package/dist/resolvers/MCPResolver.d.ts +11 -1
  181. package/dist/resolvers/MCPResolver.d.ts.map +1 -1
  182. package/dist/resolvers/MCPResolver.js +7 -3
  183. package/dist/resolvers/MCPResolver.js.map +1 -1
  184. package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
  185. package/dist/resolvers/RealtimeClientSessionResolver.js +3 -3
  186. package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
  187. package/dist/resolvers/RunAIAgentResolver.d.ts +10 -4
  188. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  189. package/dist/resolvers/RunAIAgentResolver.js +69 -38
  190. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  191. package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
  192. package/dist/resolvers/RunAIPromptResolver.js +2 -2
  193. package/dist/resolvers/RunTestResolver.js +5 -5
  194. package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
  195. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  196. package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
  197. package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
  198. package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
  199. package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
  200. package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
  201. package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
  202. package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
  203. package/dist/resolvers/adhoc-query-helpers.js +10 -2
  204. package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
  205. package/dist/resolvers/artifact-routing.d.ts +8 -8
  206. package/dist/resolvers/artifact-routing.js +2 -2
  207. package/dist/resolvers/artifact-routing.js.map +1 -1
  208. package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
  209. package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
  210. package/dist/resolvers/meetingRecordingRegistration.js +24 -8
  211. package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
  212. package/dist/resolvers/peaksSidecar.d.ts +4 -0
  213. package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
  214. package/dist/resolvers/peaksSidecar.js +10 -2
  215. package/dist/resolvers/peaksSidecar.js.map +1 -1
  216. package/dist/rest/EntityCRUDHandler.d.ts +28 -0
  217. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  218. package/dist/rest/EntityCRUDHandler.js +20 -4
  219. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  220. package/dist/rest/MediaStreamHandler.d.ts +2 -0
  221. package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
  222. package/dist/rest/MediaStreamHandler.js +10 -6
  223. package/dist/rest/MediaStreamHandler.js.map +1 -1
  224. package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
  225. package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
  226. package/dist/rest/OAuthCallbackHandler.js +15 -3
  227. package/dist/rest/OAuthCallbackHandler.js.map +1 -1
  228. package/dist/rest/RESTEndpointHandler.d.ts +6 -4
  229. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  230. package/dist/rest/RESTEndpointHandler.js +15 -11
  231. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  232. package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
  233. package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
  234. package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
  235. package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
  236. package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
  237. package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
  238. package/dist/rest/SignatureWebhookHandler.js +5 -1
  239. package/dist/rest/SignatureWebhookHandler.js.map +1 -1
  240. package/dist/rest/UploadTokenManager.d.ts +24 -8
  241. package/dist/rest/UploadTokenManager.d.ts.map +1 -1
  242. package/dist/rest/UploadTokenManager.js +53 -21
  243. package/dist/rest/UploadTokenManager.js.map +1 -1
  244. package/dist/rest/ViewOperationsHandler.d.ts +20 -0
  245. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  246. package/dist/rest/ViewOperationsHandler.js +20 -4
  247. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  248. package/dist/rest/mediaRange.d.ts +4 -0
  249. package/dist/rest/mediaRange.d.ts.map +1 -1
  250. package/dist/rest/mediaRange.js +10 -2
  251. package/dist/rest/mediaRange.js.map +1 -1
  252. package/dist/rest/setupRESTEndpoints.d.ts +4 -0
  253. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  254. package/dist/rest/setupRESTEndpoints.js +13 -7
  255. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  256. package/dist/serverExtensionReservedRoots.d.ts +2 -0
  257. package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
  258. package/dist/serverExtensionReservedRoots.js +5 -1
  259. package/dist/serverExtensionReservedRoots.js.map +1 -1
  260. package/dist/services/TaskGraphActionRunner.d.ts +13 -8
  261. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  262. package/dist/services/TaskGraphActionRunner.js +16 -15
  263. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  264. package/dist/types.d.ts +2 -0
  265. package/dist/types.d.ts.map +1 -1
  266. package/dist/types.js +7 -3
  267. package/dist/types.js.map +1 -1
  268. package/dist/util.d.ts +6 -0
  269. package/dist/util.d.ts.map +1 -1
  270. package/dist/util.js +13 -5
  271. package/dist/util.js.map +1 -1
  272. package/package.json +92 -92
  273. package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -0
  274. package/src/__tests__/FileResolverPeaks.test.ts +13 -13
  275. package/src/__tests__/ListOperationsResolver.test.ts +17 -17
  276. package/src/__tests__/MediaStreamHandler.test.ts +28 -28
  277. package/src/__tests__/NoLog.test.ts +11 -11
  278. package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
  279. package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
  280. package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
  281. package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
  282. package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
  283. package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
  284. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
  285. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
  286. package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
  287. package/src/__tests__/WidgetSessionService.test.ts +8 -4
  288. package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
  289. package/src/__tests__/bootAudit.test.ts +11 -11
  290. package/src/__tests__/boundaryLogPayload.test.ts +6 -6
  291. package/src/__tests__/cacheInvalidationRecordData.test.ts +177 -0
  292. package/src/__tests__/databaseAbstraction.test.ts +12 -6
  293. package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
  294. package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
  295. package/src/__tests__/magicLink.test.ts +73 -134
  296. package/src/__tests__/magicLinkService.consume.test.ts +224 -0
  297. package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
  298. package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
  299. package/src/__tests__/multiTenancy.security.test.ts +40 -40
  300. package/src/__tests__/multiTenancy.test.ts +18 -18
  301. package/src/__tests__/newUsers.test.ts +24 -23
  302. package/src/__tests__/principals.test.ts +22 -22
  303. package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
  304. package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
  305. package/src/__tests__/secretRedactor.test.ts +12 -12
  306. package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
  307. package/src/__tests__/subscriptionRedaction.test.ts +5 -5
  308. package/src/__tests__/unifiedAuth.test.ts +15 -9
  309. package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
  310. package/src/__tests__/widget.test.ts +45 -45
  311. package/src/__tests__/widgetGuestElevation.test.ts +7 -7
  312. package/src/__tests__/widgetHostIdentity.test.ts +14 -14
  313. package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
  314. package/src/agentSessions/SessionManager.ts +2 -2
  315. package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
  316. package/src/auth/AuthProviderCatalogRouter.ts +6 -1
  317. package/src/auth/__tests__/backward-compatibility.test.ts +3 -3
  318. package/src/auth/index.ts +43 -28
  319. package/src/auth/initializeProviders.ts +25 -5
  320. package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
  321. package/src/auth/magicLink/MagicLinkService.ts +71 -52
  322. package/src/auth/magicLink/index.ts +7 -7
  323. package/src/auth/magicLink/magicLinkCore.ts +96 -64
  324. package/src/auth/magicLink/redeemLanding.ts +14 -4
  325. package/src/auth/magicLink/types.ts +54 -54
  326. package/src/auth/newUsers.ts +1 -1
  327. package/src/auth/principals.ts +11 -2
  328. package/src/cache.ts +4 -1
  329. package/src/config.ts +37 -4
  330. package/src/context.ts +37 -24
  331. package/src/directives/Public.ts +4 -1
  332. package/src/directives/RequireSystemUser.ts +4 -1
  333. package/src/generated/graphql-schemas/__mj.ts +37 -0
  334. package/src/generic/CacheInvalidationResolver.ts +148 -4
  335. package/src/generic/DeleteOptionsInput.ts +9 -2
  336. package/src/generic/FireAndForgetHeartbeat.ts +19 -14
  337. package/src/generic/PushStatusResolver.ts +21 -7
  338. package/src/generic/ResolverBase.ts +16 -8
  339. package/src/generic/RunViewResolver.ts +22 -22
  340. package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
  341. package/src/index.ts +35 -9
  342. package/src/integration/CustomColumnPromoter.ts +6 -1
  343. package/src/integration/EntityMapLifecycle.ts +20 -2
  344. package/src/logging/NoLog.ts +16 -2
  345. package/src/logging/StartupLogger.ts +6 -1
  346. package/src/logging/bootAudit.ts +26 -16
  347. package/src/logging/boundaryLogPayload.ts +8 -1
  348. package/src/logging/secretRedactor.ts +14 -9
  349. package/src/logging/shortenForLog.ts +8 -3
  350. package/src/logging/variablesLoggingMiddleware.ts +9 -6
  351. package/src/metadataRefreshSignal.ts +45 -0
  352. package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
  353. package/src/multiTenancy/index.ts +29 -5
  354. package/src/realtimeWidget/WidgetRouter.ts +15 -10
  355. package/src/realtimeWidget/WidgetSessionService.ts +76 -76
  356. package/src/realtimeWidget/host-identity.ts +24 -10
  357. package/src/realtimeWidget/index.ts +3 -3
  358. package/src/realtimeWidget/visitorIdentity.ts +39 -8
  359. package/src/realtimeWidget/widgetCore.ts +75 -10
  360. package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
  361. package/src/resolvers/AdhocQueryResolver.ts +3 -3
  362. package/src/resolvers/AgentSessionResolver.ts +3 -3
  363. package/src/resolvers/ColorResolver.ts +6 -6
  364. package/src/resolvers/ComponentRegistryResolver.ts +36 -36
  365. package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
  366. package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
  367. package/src/resolvers/FileResolver.ts +42 -42
  368. package/src/resolvers/GeoResolver.ts +4 -4
  369. package/src/resolvers/GetDataResolver.ts +50 -15
  370. package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
  371. package/src/resolvers/ListOperationsResolver.ts +78 -28
  372. package/src/resolvers/MCPResolver.ts +30 -15
  373. package/src/resolvers/QueryResolver.ts +13 -13
  374. package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
  375. package/src/resolvers/RealtimeClientSessionResolver.ts +3 -3
  376. package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
  377. package/src/resolvers/RunAIAgentResolver.ts +113 -72
  378. package/src/resolvers/RunAIPromptResolver.ts +22 -22
  379. package/src/resolvers/RunTemplateResolver.ts +4 -4
  380. package/src/resolvers/RunTestResolver.ts +25 -25
  381. package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
  382. package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
  383. package/src/resolvers/TelemetryResolver.ts +79 -79
  384. package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
  385. package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
  386. package/src/resolvers/adhoc-query-helpers.ts +19 -2
  387. package/src/resolvers/artifact-routing.ts +19 -19
  388. package/src/resolvers/meetingRecordingRegistration.ts +44 -10
  389. package/src/resolvers/peaksSidecar.ts +12 -2
  390. package/src/rest/EntityCRUDHandler.ts +24 -4
  391. package/src/rest/MediaStreamHandler.ts +11 -6
  392. package/src/rest/OAuthCallbackHandler.ts +25 -7
  393. package/src/rest/RESTEndpointHandler.ts +20 -15
  394. package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
  395. package/src/rest/SignatureWebhookHandler.ts +6 -1
  396. package/src/rest/UploadTokenManager.ts +66 -30
  397. package/src/rest/ViewOperationsHandler.ts +24 -4
  398. package/src/rest/mediaRange.ts +16 -6
  399. package/src/rest/setupRESTEndpoints.ts +24 -12
  400. package/src/serverExtensionReservedRoots.ts +6 -1
  401. package/src/services/TaskGraphActionRunner.ts +16 -15
  402. package/src/types.ts +21 -16
  403. package/src/util.ts +16 -6
@@ -21,7 +21,7 @@ import { SignatureEngine } from '@memberjunction/esignature/server';
21
21
  * Build an Express router exposing the eSignature webhook. Mount it unauthenticated:
22
22
  * `app.use('/esignature', createSignatureWebhookHandler())`.
23
23
  */
24
- export function createSignatureWebhookHandler(): express.Router {
24
+ export function CreateSignatureWebhookHandler(): express.Router {
25
25
  const router = express.Router();
26
26
 
27
27
  // Capture the raw body so drivers that HMAC-verify over the exact bytes can do so.
@@ -36,6 +36,11 @@ export function createSignatureWebhookHandler(): express.Router {
36
36
  return router;
37
37
  }
38
38
 
39
+ /** @deprecated Use {@link CreateSignatureWebhookHandler}. */
40
+ export function createSignatureWebhookHandler(): express.Router {
41
+ return CreateSignatureWebhookHandler();
42
+ }
43
+
39
44
  /** Stash the raw request bytes on the request for signature verification by the driver. */
40
45
  function captureRawBody(req: express.Request, _res: express.Response, buf: Buffer): void {
41
46
  (req as RawBodyRequest).rawBody = buf;
@@ -22,15 +22,15 @@ import { randomBytes } from 'node:crypto';
22
22
  * An ephemeral in-memory staged upload record.
23
23
  */
24
24
  export interface StagedUploadEntry {
25
- token: string;
26
- buffer: Buffer;
27
- fileName: string;
28
- mimeType: string;
29
- contentLength: number;
30
- userId: string;
31
- createdAt: number;
32
- expiresAt: number;
33
- timer: NodeJS.Timeout;
25
+ token: string; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
26
+ Buffer: Buffer;
27
+ fileName: string; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
28
+ mimeType: string; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
29
+ ContentLength: number;
30
+ userId: string; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
31
+ CreatedAt: number;
32
+ expiresAt: number; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
33
+ Timer: NodeJS.Timeout;
34
34
  }
35
35
 
36
36
  /**
@@ -47,10 +47,46 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
47
47
  private readonly _staged = new Map<string, StagedUploadEntry>();
48
48
  private _totalMemoryBytes = 0;
49
49
 
50
- public defaultTtlSeconds = 300; // 5 minutes
51
- public maxFileSizeBytes = 100 * 1024 * 1024; // 100 MB
52
- public maxUserMemoryBytes = 150 * 1024 * 1024; // 150 MB per user
53
- public maxPoolMemoryBytes = 500 * 1024 * 1024; // 500 MB
50
+ public DefaultTtlSeconds = 300;
51
+
52
+ /** @deprecated Use {@link DefaultTtlSeconds}. */
53
+ public get defaultTtlSeconds() {
54
+ return this.DefaultTtlSeconds;
55
+ }
56
+ /** @deprecated Use {@link DefaultTtlSeconds}. */
57
+ public set defaultTtlSeconds(value) {
58
+ this.DefaultTtlSeconds = value;
59
+ } // 5 minutes
60
+ public MaxFileSizeBytes = 100 * 1024 * 1024;
61
+
62
+ /** @deprecated Use {@link MaxFileSizeBytes}. */
63
+ public get maxFileSizeBytes() {
64
+ return this.MaxFileSizeBytes;
65
+ }
66
+ /** @deprecated Use {@link MaxFileSizeBytes}. */
67
+ public set maxFileSizeBytes(value) {
68
+ this.MaxFileSizeBytes = value;
69
+ } // 100 MB
70
+ public MaxUserMemoryBytes = 150 * 1024 * 1024;
71
+
72
+ /** @deprecated Use {@link MaxUserMemoryBytes}. */
73
+ public get maxUserMemoryBytes() {
74
+ return this.MaxUserMemoryBytes;
75
+ }
76
+ /** @deprecated Use {@link MaxUserMemoryBytes}. */
77
+ public set maxUserMemoryBytes(value) {
78
+ this.MaxUserMemoryBytes = value;
79
+ } // 150 MB per user
80
+ public MaxPoolMemoryBytes = 500 * 1024 * 1024;
81
+
82
+ /** @deprecated Use {@link MaxPoolMemoryBytes}. */
83
+ public get maxPoolMemoryBytes() {
84
+ return this.MaxPoolMemoryBytes;
85
+ }
86
+ /** @deprecated Use {@link MaxPoolMemoryBytes}. */
87
+ public set maxPoolMemoryBytes(value) {
88
+ this.MaxPoolMemoryBytes = value;
89
+ } // 500 MB
54
90
 
55
91
  // Public constructor required by BaseSingleton
56
92
  public constructor() {
@@ -68,7 +104,7 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
68
104
  let total = 0;
69
105
  for (const entry of this._staged.values()) {
70
106
  if (UUIDsEqual(entry.userId, userId)) {
71
- total += entry.contentLength;
107
+ total += entry.ContentLength;
72
108
  }
73
109
  }
74
110
  return total;
@@ -88,27 +124,27 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
88
124
  }): string {
89
125
  const size = params.buffer.length;
90
126
 
91
- if (size > this.maxFileSizeBytes) {
127
+ if (size > this.MaxFileSizeBytes) {
92
128
  throw new Error(
93
- `Staged upload exceeds maximum allowed file size of ${Math.round(this.maxFileSizeBytes / (1024 * 1024))}MB (received ${Math.round(size / (1024 * 1024))}MB).`
129
+ `Staged upload exceeds maximum allowed file size of ${Math.round(this.MaxFileSizeBytes / (1024 * 1024))}MB (received ${Math.round(size / (1024 * 1024))}MB).`
94
130
  );
95
131
  }
96
132
 
97
133
  const userCurrentBytes = this.GetUserMemoryBytes(params.userId);
98
- if (userCurrentBytes + size > this.maxUserMemoryBytes) {
134
+ if (userCurrentBytes + size > this.MaxUserMemoryBytes) {
99
135
  throw new Error(
100
- `Per-user upload memory quota reached (${Math.round(userCurrentBytes / (1024 * 1024))}MB / ${Math.round(this.maxUserMemoryBytes / (1024 * 1024))}MB used). Please wait for active uploads to finalize.`
136
+ `Per-user upload memory quota reached (${Math.round(userCurrentBytes / (1024 * 1024))}MB / ${Math.round(this.MaxUserMemoryBytes / (1024 * 1024))}MB used). Please wait for active uploads to finalize.`
101
137
  );
102
138
  }
103
139
 
104
- if (this._totalMemoryBytes + size > this.maxPoolMemoryBytes) {
140
+ if (this._totalMemoryBytes + size > this.MaxPoolMemoryBytes) {
105
141
  throw new Error(
106
- `Staged upload memory capacity reached (${Math.round(this._totalMemoryBytes / (1024 * 1024))}MB / ${Math.round(this.maxPoolMemoryBytes / (1024 * 1024))}MB used). Please try again shortly.`
142
+ `Staged upload memory capacity reached (${Math.round(this._totalMemoryBytes / (1024 * 1024))}MB / ${Math.round(this.MaxPoolMemoryBytes / (1024 * 1024))}MB used). Please try again shortly.`
107
143
  );
108
144
  }
109
145
 
110
146
  const token = 'upt_' + randomBytes(32).toString('hex');
111
- const ttl = params.ttlSeconds || this.defaultTtlSeconds;
147
+ const ttl = params.ttlSeconds || this.DefaultTtlSeconds;
112
148
  const now = Date.now();
113
149
  const expiresAt = now + ttl * 1000;
114
150
 
@@ -123,14 +159,14 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
123
159
 
124
160
  const entry: StagedUploadEntry = {
125
161
  token,
126
- buffer: params.buffer,
162
+ Buffer: params.buffer,
127
163
  fileName: params.fileName,
128
164
  mimeType: params.mimeType,
129
- contentLength: size,
165
+ ContentLength: size,
130
166
  userId: params.userId,
131
- createdAt: now,
167
+ CreatedAt: now,
132
168
  expiresAt,
133
- timer,
169
+ Timer: timer,
134
170
  };
135
171
 
136
172
  this._staged.set(token, entry);
@@ -168,10 +204,10 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
168
204
  this.Evict(token);
169
205
 
170
206
  return {
171
- buffer: entry.buffer,
207
+ buffer: entry.Buffer,
172
208
  fileName: entry.fileName,
173
209
  mimeType: entry.mimeType,
174
- contentLength: entry.contentLength,
210
+ contentLength: entry.ContentLength,
175
211
  };
176
212
  }
177
213
 
@@ -184,9 +220,9 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
184
220
  return false;
185
221
  }
186
222
 
187
- clearTimeout(entry.timer);
223
+ clearTimeout(entry.Timer);
188
224
  this._staged.delete(token);
189
- this._totalMemoryBytes = Math.max(0, this._totalMemoryBytes - entry.contentLength);
225
+ this._totalMemoryBytes = Math.max(0, this._totalMemoryBytes - entry.ContentLength);
190
226
  return true;
191
227
  }
192
228
 
@@ -203,7 +239,7 @@ export class UploadTokenManager extends BaseSingleton<UploadTokenManager> {
203
239
  /** Clears all active staged uploads. */
204
240
  public Clear(): void {
205
241
  for (const [, entry] of this._staged) {
206
- clearTimeout(entry.timer);
242
+ clearTimeout(entry.Timer);
207
243
  }
208
244
  this._staged.clear();
209
245
  this._totalMemoryBytes = 0;
@@ -11,7 +11,7 @@ export class ViewOperationsHandler {
11
11
  /**
12
12
  * Run a view and return results
13
13
  */
14
- static async runView(params: RunViewParams, user: UserInfo): Promise<{ success: boolean, result?: RunViewResult, error?: string }> {
14
+ static async RunView(params: RunViewParams, user: UserInfo): Promise<{ success: boolean, result?: RunViewResult, error?: string }> {
15
15
  try {
16
16
  // Validate entity exists
17
17
  const md = new Metadata(); // global-provider-ok: REST endpoint — no per-request provider injection in REST middleware yet
@@ -45,11 +45,16 @@ export class ViewOperationsHandler {
45
45
  return { success: false, error: (error as Error)?.message || 'Unknown error' };
46
46
  }
47
47
  }
48
+
49
+ /** @deprecated Use {@link RunView}. */
50
+ static async runView(params: RunViewParams, user: UserInfo): Promise<{ success: boolean, result?: RunViewResult, error?: string }> {
51
+ return this.RunView(params, user);
52
+ }
48
53
 
49
54
  /**
50
55
  * Run multiple views in batch
51
56
  */
52
- static async runViews(paramsArray: RunViewParams[], user: UserInfo): Promise<{ success: boolean, results?: RunViewResult[], error?: string }> {
57
+ static async RunViews(paramsArray: RunViewParams[], user: UserInfo): Promise<{ success: boolean, results?: RunViewResult[], error?: string }> {
53
58
  try {
54
59
  // Validate and sanitize each set of parameters
55
60
  const md = new Metadata(); // global-provider-ok: REST endpoint — no per-request provider injection in REST middleware yet
@@ -86,11 +91,16 @@ export class ViewOperationsHandler {
86
91
  return { success: false, error: (error as Error)?.message || 'Unknown error' };
87
92
  }
88
93
  }
94
+
95
+ /** @deprecated Use {@link RunViews}. */
96
+ static async runViews(paramsArray: RunViewParams[], user: UserInfo): Promise<{ success: boolean, results?: RunViewResult[], error?: string }> {
97
+ return this.RunViews(paramsArray, user);
98
+ }
89
99
 
90
100
  /**
91
101
  * List entities with optional filtering
92
102
  */
93
- static async listEntities(params: RunViewParams, user: UserInfo): Promise<RunViewResult> {
103
+ static async ListEntities(params: RunViewParams, user: UserInfo): Promise<RunViewResult> {
94
104
  try {
95
105
  // Check entity exists and user has permission
96
106
  const md = new Metadata(); // global-provider-ok: REST endpoint — no per-request provider injection in REST middleware yet
@@ -115,11 +125,16 @@ export class ViewOperationsHandler {
115
125
  throw error;
116
126
  }
117
127
  }
128
+
129
+ /** @deprecated Use {@link ListEntities}. */
130
+ static async listEntities(params: RunViewParams, user: UserInfo): Promise<RunViewResult> {
131
+ return this.ListEntities(params, user);
132
+ }
118
133
 
119
134
  /**
120
135
  * Get available views for an entity
121
136
  */
122
- static async getEntityViews(entityName: string, user: UserInfo): Promise<{ success: boolean, views?: any[], error?: string }> {
137
+ static async GetEntityViews(entityName: string, user: UserInfo): Promise<{ success: boolean, views?: any[], error?: string }> {
123
138
  try {
124
139
  // Validate entity exists
125
140
  const md = new Metadata(); // global-provider-ok: REST endpoint — no per-request provider injection in REST middleware yet
@@ -171,6 +186,11 @@ export class ViewOperationsHandler {
171
186
  return { success: false, error: (error as Error)?.message || 'Unknown error' };
172
187
  }
173
188
  }
189
+
190
+ /** @deprecated Use {@link GetEntityViews}. */
191
+ static async getEntityViews(entityName: string, user: UserInfo): Promise<{ success: boolean, views?: any[], error?: string }> {
192
+ return this.GetEntityViews(entityName, user);
193
+ }
174
194
 
175
195
  /**
176
196
  * Sanitize and validate RunViewParams
@@ -15,8 +15,8 @@
15
15
 
16
16
  /** A parsed, validated `Range` request against a known total size. */
17
17
  export interface ParsedRange {
18
- start: number;
19
- end: number;
18
+ start: number; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
19
+ end: number; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
20
20
  }
21
21
 
22
22
  /**
@@ -24,8 +24,8 @@ export interface ParsedRange {
24
24
  * for an open-ended `bytes=start-` request, matching `ByteRange`'s "omit End = EOF".
25
25
  */
26
26
  export interface ParsedOpenRange {
27
- start: number;
28
- end?: number;
27
+ start: number; // case-violation-ok-legacy-back-compat: the old name is also read off a value typed `any`, where a rename would compile and silently return undefined
28
+ end?: number; // case-violation-ok-legacy-back-compat: optional, and the old name is also read off a value the checker cannot type; renaming it stays assignable and silently yields undefined
29
29
  }
30
30
 
31
31
  /**
@@ -34,7 +34,7 @@ export interface ParsedOpenRange {
34
34
  * suffix-only (those we leave to the driver as a full read). `end` is left undefined when
35
35
  * open-ended (`bytes=start-`) so the driver streams to EOF.
36
36
  */
37
- export function parseRangeHeaderLoose(rangeHeader: string): ParsedOpenRange | undefined {
37
+ export function ParseRangeHeaderLoose(rangeHeader: string): ParsedOpenRange | undefined {
38
38
  const match = /^bytes=(\d+)-(\d*)$/.exec(rangeHeader.trim());
39
39
  if (!match) {
40
40
  return undefined;
@@ -53,12 +53,17 @@ export function parseRangeHeaderLoose(rangeHeader: string): ParsedOpenRange | un
53
53
  return { start, end };
54
54
  }
55
55
 
56
+ /** @deprecated Use {@link ParseRangeHeaderLoose}. */
57
+ export function parseRangeHeaderLoose(rangeHeader: string): ParsedOpenRange | undefined {
58
+ return ParseRangeHeaderLoose(rangeHeader);
59
+ }
60
+
56
61
  /**
57
62
  * Parses a single-range `bytes=start-end` header against a known total (buffer path),
58
63
  * clamping `end` to the last byte. Returns undefined when unsatisfiable (→ 416) or
59
64
  * malformed/multi-range.
60
65
  */
61
- export function parseRange(rangeHeader: string, total: number): ParsedRange | undefined {
66
+ export function ParseRange(rangeHeader: string, total: number): ParsedRange | undefined {
62
67
  const match = /^bytes=(\d+)-(\d*)$/.exec(rangeHeader.trim());
63
68
  if (!match) {
64
69
  return undefined;
@@ -74,3 +79,8 @@ export function parseRange(rangeHeader: string, total: number): ParsedRange | un
74
79
  }
75
80
  return { start, end };
76
81
  }
82
+
83
+ /** @deprecated Use {@link ParseRange}. */
84
+ export function parseRange(rangeHeader: string, total: number): ParsedRange | undefined {
85
+ return ParseRange(rangeHeader, total);
86
+ }
@@ -3,7 +3,10 @@ import BodyParser from 'body-parser';
3
3
  import { LogStatusEx } from '@memberjunction/core';
4
4
  import { RESTEndpointHandler } from './RESTEndpointHandler.js';
5
5
 
6
- export const ___REST_API_BASE_PATH = '/api/v1';
6
+ export const REST_API_BASE_PATH = '/api/v1';
7
+
8
+ /** @deprecated Use {@link REST_API_BASE_PATH}. */
9
+ export const ___REST_API_BASE_PATH = REST_API_BASE_PATH;
7
10
 
8
11
  /**
9
12
  * Configuration options for REST API endpoints
@@ -12,14 +15,14 @@ export interface RESTApiOptions {
12
15
  /**
13
16
  * Whether to enable REST API endpoints (default: false)
14
17
  */
15
- enabled: boolean;
18
+ enabled: boolean; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub
16
19
 
17
20
  /**
18
21
  * Array of entity names to include in the API (case-insensitive)
19
22
  * If provided, only these entities will be accessible through the REST API
20
23
  * Supports wildcards using '*' (e.g., 'User*' matches 'User', 'UserRole', etc.)
21
24
  */
22
- includeEntities?: string[];
25
+ includeEntities?: string[]; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub
23
26
 
24
27
  /**
25
28
  * Array of entity names to exclude from the API (case-insensitive)
@@ -27,20 +30,20 @@ export interface RESTApiOptions {
27
30
  * Supports wildcards using '*' (e.g., 'Secret*' matches 'Secret', 'SecretKey', etc.)
28
31
  * Note: Exclude patterns always override include patterns
29
32
  */
30
- excludeEntities?: string[];
33
+ excludeEntities?: string[]; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub
31
34
 
32
35
  /**
33
36
  * Array of schema names to include in the API (case-insensitive)
34
37
  * If provided, only entities in these schemas will be accessible through the REST API
35
38
  */
36
- includeSchemas?: string[];
39
+ includeSchemas?: string[]; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub
37
40
 
38
41
  /**
39
42
  * Array of schema names to exclude from the API (case-insensitive)
40
43
  * Entities in these schemas will not be accessible through the REST API
41
44
  * Note: Exclude patterns always override include patterns
42
45
  */
43
- excludeSchemas?: string[];
46
+ excludeSchemas?: string[]; // case-violation-ok-legacy-back-compat: the type is named in an exported signature, so consumers build object literals against it; an interface has no runtime carrier for a stub
44
47
  }
45
48
 
46
49
  /**
@@ -56,7 +59,7 @@ export const DEFAULT_REST_API_OPTIONS: RESTApiOptions = {
56
59
  * @param options Configuration options for REST API
57
60
  * @param authMiddleware Optional authentication middleware to use
58
61
  */
59
- export function setupRESTEndpoints(
62
+ export function SetupRESTEndpoints(
60
63
  app: express.Application,
61
64
  options?: Partial<RESTApiOptions>,
62
65
  authMiddleware?: express.RequestHandler
@@ -71,14 +74,14 @@ export function setupRESTEndpoints(
71
74
  return;
72
75
  }
73
76
 
74
- const basePath = ___REST_API_BASE_PATH;
77
+ const basePath = REST_API_BASE_PATH;
75
78
 
76
79
  // Create REST endpoint handler with entity and schema filters
77
80
  const restHandler = new RESTEndpointHandler({
78
- includeEntities: config.includeEntities ? config.includeEntities.map(e => e.toLowerCase()) : undefined,
79
- excludeEntities: config.excludeEntities ? config.excludeEntities.map(e => e.toLowerCase()) : undefined,
80
- includeSchemas: config.includeSchemas ? config.includeSchemas.map(s => s.toLowerCase()) : undefined,
81
- excludeSchemas: config.excludeSchemas ? config.excludeSchemas.map(s => s.toLowerCase()) : undefined
81
+ IncludeEntities: config.includeEntities ? config.includeEntities.map(e => e.toLowerCase()) : undefined,
82
+ ExcludeEntities: config.excludeEntities ? config.excludeEntities.map(e => e.toLowerCase()) : undefined,
83
+ IncludeSchemas: config.includeSchemas ? config.includeSchemas.map(s => s.toLowerCase()) : undefined,
84
+ ExcludeSchemas: config.excludeSchemas ? config.excludeSchemas.map(s => s.toLowerCase()) : undefined
82
85
  });
83
86
 
84
87
  // Mount REST API at the specified base path with authentication
@@ -90,4 +93,13 @@ export function setupRESTEndpoints(
90
93
  }
91
94
 
92
95
  LogStatusEx({ message: `REST API endpoints have been set up at ${basePath}`, verboseOnly: true });
96
+ }
97
+
98
+ /** @deprecated Use {@link SetupRESTEndpoints}. */
99
+ export function setupRESTEndpoints(
100
+ app: express.Application,
101
+ options?: Partial<RESTApiOptions>,
102
+ authMiddleware?: express.RequestHandler
103
+ ): void {
104
+ return SetupRESTEndpoints(app, options, authMiddleware);
93
105
  }
@@ -40,7 +40,7 @@ export const CORE_CONSTANT_RESERVED_SERVER_EXTENSION_ROOTS: readonly string[] =
40
40
  * static `/graphql` baseline) is still protected. `/` as graphqlRootPath is
41
41
  * already reserved as the server root and does not prefix-match every path.
42
42
  */
43
- export function coreReservedServerExtensionRoots(graphqlRootPath: string): string[] {
43
+ export function CoreReservedServerExtensionRoots(graphqlRootPath: string): string[] {
44
44
  const graphql = typeof graphqlRootPath === 'string' ? graphqlRootPath.trim() : '';
45
45
  return [
46
46
  ...(graphql ? [graphql] : []),
@@ -48,3 +48,8 @@ export function coreReservedServerExtensionRoots(graphqlRootPath: string): strin
48
48
  ...CORE_STATIC_RESERVED_SERVER_EXTENSION_ROOTS,
49
49
  ];
50
50
  }
51
+
52
+ /** @deprecated Use {@link CoreReservedServerExtensionRoots}. */
53
+ export function coreReservedServerExtensionRoots(graphqlRootPath: string): string[] {
54
+ return CoreReservedServerExtensionRoots(graphqlRootPath);
55
+ }
@@ -75,25 +75,26 @@ export class TaskGraphActionRunner implements TaskActionRunner {
75
75
  }
76
76
 
77
77
  /**
78
- * Rebuilds the action's parameters from the task's stored payload.
78
+ * Rebuilds the action's parameters from the task's input, one parameter per key.
79
79
  *
80
- * **The values here have been through redaction**, because `Task.InputPayload` is persistent,
81
- * user-visible storage and nothing writes a raw `ActionParam[]` there. A parameter the binding
82
- * marked as not-logged therefore arrives absent rather than secret — the action sees a missing
83
- * value, which is the honest consequence of choosing not to persist it, and the reason durable
84
- * dispatch is opt-in per binding rather than the default.
80
+ * For a **durable entity-action** graph the input was written by `RedactParamsToRecord`
81
+ * (`@memberjunction/actions-base`) at deferral time, so its values have been through redaction:
82
+ * a parameter the binding marked as not-logged arrives absent rather than secret — the action
83
+ * sees a missing value, which is the honest consequence of choosing not to persist it, and the
84
+ * reason durable dispatch is opt-in per binding rather than the default. Every other graph's
85
+ * input is whatever its spec authored. This method re-applies no redaction rule in either case.
85
86
  *
86
- * Dependency outputs are merged underneath the task's own input so a node's explicit parameters
87
- * always win over an upstream node that happened to emit the same key.
87
+ * `InputPayload` already carries the dependency outputs: the dispatcher merges them underneath
88
+ * the task's own input (`mergedPayload`) before calling this runner, so a node's explicit
89
+ * parameters win and a step with an input mapping gets exactly the parameters it declared.
90
+ * `DependencyOutputs` is keyed by upstream task ID, not by parameter name, so it is deliberately
91
+ * not read here — spreading it would hand the action one extra parameter per dependency, named
92
+ * by a GUID and holding that task's whole output.
88
93
  */
89
94
  private buildParams(params: TaskActionRunParams): ActionParam[] {
90
- const merged: Record<string, unknown> = {};
91
- for (const [name, value] of params.DependencyOutputs) {
92
- merged[name] = value;
95
+ if (!params.InputPayload || typeof params.InputPayload !== 'object') {
96
+ return [];
93
97
  }
94
- if (params.InputPayload && typeof params.InputPayload === 'object') {
95
- Object.assign(merged, params.InputPayload as Record<string, unknown>);
96
- }
97
- return Object.entries(merged).map(([Name, Value]) => ({ Name, Value, Type: 'Input' }));
98
+ return Object.entries(params.InputPayload as Record<string, unknown>).map(([Name, Value]) => ({ Name, Value, Type: 'Input' }));
98
99
  }
99
100
  }
package/src/types.ts CHANGED
@@ -2,7 +2,7 @@ import { AggregateExpression, CompositeKey, DatabaseProviderBase, UserInfo } fro
2
2
  import { MJUserViewEntityExtended } from '@memberjunction/core-entities';
3
3
  import { GraphQLSchema } from 'graphql';
4
4
  import sql from 'mssql';
5
- import { getSystemUser } from './auth/index.js';
5
+ import { GetSystemUser } from './auth/index.js';
6
6
  import { MJEvent, MJEventType, MJGlobal } from '@memberjunction/global';
7
7
 
8
8
  /**
@@ -57,18 +57,18 @@ export type AppContext = {
57
57
  };
58
58
 
59
59
  export class ProviderInfo {
60
- provider: DatabaseProviderBase;
61
- type: 'Admin' | 'Read-Write' | 'Read-Only' | 'Other';
60
+ provider: DatabaseProviderBase; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
61
+ type: 'Admin' | 'Read-Write' | 'Read-Only' | 'Other'; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
62
62
  }
63
63
 
64
64
  export class DataSourceInfo {
65
- dataSource: sql.ConnectionPool;
66
- host: string;
67
- port: number;
68
- instance?: string;
69
- database: string;
70
- userName: string;
71
- type: "Admin" | "Read-Write" | "Read-Only" | "Other";
65
+ dataSource: sql.ConnectionPool; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
66
+ host: string; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
67
+ port: number; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
68
+ instance?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
69
+ database: string; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
70
+ userName: string; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
71
+ type: "Admin" | "Read-Write" | "Read-Only" | "Other"; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
72
72
 
73
73
  constructor(init: {dataSource: sql.ConnectionPool, type: "Admin" | "Read-Write" | "Read-Only" | "Other", host: string, port: number, database: string, userName: string} ) {
74
74
  this.dataSource = init.dataSource;
@@ -125,20 +125,20 @@ export type RunViewGenericParams = {
125
125
 
126
126
 
127
127
  export class MJServerEvent {
128
- type: 'setupComplete' | 'requestReceived' | 'requestCompleted' | 'requestFailed';
129
- dataSources: DataSourceInfo[];
130
- userPayload: UserPayload;
131
- systemUser: UserInfo;
128
+ type: 'setupComplete' | 'requestReceived' | 'requestCompleted' | 'requestFailed'; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
129
+ dataSources: DataSourceInfo[]; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
130
+ userPayload: UserPayload; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
131
+ systemUser: UserInfo; // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
132
132
  }
133
133
 
134
134
  export const MJ_SERVER_EVENT_CODE = 'MJ_SERVER_EVENT';
135
135
 
136
- export async function raiseEvent(type: MJServerEvent['type'], dataSources: DataSourceInfo[], userPayload: UserPayload, component?: any) {
136
+ export async function RaiseEvent(type: MJServerEvent['type'], dataSources: DataSourceInfo[], userPayload: UserPayload, component?: any) {
137
137
  const event = new MJServerEvent();
138
138
  event.type = type;
139
139
  event.dataSources = dataSources;
140
140
  event.userPayload = userPayload;
141
- event.systemUser = await getSystemUser();
141
+ event.systemUser = await GetSystemUser();
142
142
 
143
143
  const mje = new MJEvent();
144
144
  mje.args = event;
@@ -146,4 +146,9 @@ export async function raiseEvent(type: MJServerEvent['type'], dataSources: DataS
146
146
  mje.event = MJEventType.ComponentEvent;
147
147
  mje.eventCode = MJ_SERVER_EVENT_CODE;
148
148
  MJGlobal.Instance.RaiseEvent(mje);
149
+ }
150
+
151
+ /** @deprecated Use {@link RaiseEvent}. */
152
+ export async function raiseEvent(type: MJServerEvent['type'], dataSources: DataSourceInfo[], userPayload: UserPayload, component?: any) {
153
+ return RaiseEvent(type, dataSources, userPayload, component);
149
154
  }
package/src/util.ts CHANGED
@@ -23,7 +23,7 @@ type StreamCallback = (jsonObject: any) => void;
23
23
  * @param {StreamCallback} [streamCallback] - Optional callback for handling streaming JSON objects.
24
24
  * @returns {Promise<any[]>} - A promise that resolves to an array of all JSON objects received during the streaming process.
25
25
  */
26
- export async function sendPostRequest(url: string, payload: any, useCompression: boolean, headers: Record<string, string> | null, streamCallback?: StreamCallback): Promise<any[]> {
26
+ export async function SendPostRequest(url: string, payload: any, useCompression: boolean, headers: Record<string, string> | null, streamCallback?: StreamCallback): Promise<any[]> {
27
27
  return new Promise(async (resolve, reject) => {
28
28
  try {
29
29
  const { protocol, hostname, port, pathname } = new URL(url);
@@ -144,6 +144,11 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
144
144
  );
145
145
  }
146
146
 
147
+ /** @deprecated Use {@link SendPostRequest}. */
148
+ export async function sendPostRequest(url: string, payload: any, useCompression: boolean, headers: Record<string, string> | null, streamCallback?: StreamCallback): Promise<any[]> {
149
+ return SendPostRequest(url, payload, useCompression, headers, streamCallback);
150
+ }
151
+
147
152
 
148
153
  /**
149
154
  * Returns the read-only data source if it exists, otherwise returns the read-write data source if options is not provided or if options.allowFallbackToReadWrite is true.
@@ -154,14 +159,14 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
154
159
  export function GetReadOnlyDataSource(dataSources: DataSourceInfo[], options?: {allowFallbackToReadWrite: boolean}): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
155
160
  const readOnlyDataSource = dataSources.find((ds) => ds.type === 'Read-Only');
156
161
  if (readOnlyDataSource) {
157
- return extendConnectionPoolWithQuery(readOnlyDataSource.dataSource);
162
+ return ExtendConnectionPoolWithQuery(readOnlyDataSource.dataSource);
158
163
  }
159
164
  else if (!options || options.allowFallbackToReadWrite) {
160
165
  // default behavior for backward compatibility prior to MJ 2.22.3 where we introduced this functionality was to have a single
161
166
  // connection, so for back-compatability, if we don't have a read-only data source, we'll fall back to the read-write data source
162
167
  const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
163
168
  if (readWriteDataSource) {
164
- return extendConnectionPoolWithQuery(readWriteDataSource.dataSource);
169
+ return ExtendConnectionPoolWithQuery(readWriteDataSource.dataSource);
165
170
  }
166
171
  }
167
172
  throw new Error('No suitable data source found');
@@ -220,7 +225,7 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
220
225
  export function GetReadWriteDataSource(dataSources: DataSourceInfo[]): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
221
226
  const readWriteDataSource = dataSources.find((ds) => ds.type === 'Read-Write');
222
227
  if (readWriteDataSource) {
223
- return extendConnectionPoolWithQuery(readWriteDataSource.dataSource);
228
+ return ExtendConnectionPoolWithQuery(readWriteDataSource.dataSource);
224
229
  }
225
230
  throw new Error('No suitable read-write data source found');
226
231
  }
@@ -229,7 +234,7 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
229
234
  * Extends a ConnectionPool with a query method that returns results in the format expected by generated code
230
235
  * This provides backwards compatibility with code that expects TypeORM-style query results
231
236
  */
232
- export function extendConnectionPoolWithQuery(pool: sql.ConnectionPool): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
237
+ export function ExtendConnectionPoolWithQuery(pool: sql.ConnectionPool): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
233
238
  const extendedPool = pool as any;
234
239
  extendedPool.query = async (sqlQuery: string, parameters?: any): Promise<any[]> => {
235
240
  const request = new sql.Request(pool);
@@ -248,4 +253,9 @@ export async function sendPostRequest(url: string, payload: any, useCompression:
248
253
  return result.recordset || [];
249
254
  };
250
255
  return extendedPool;
251
- }
256
+ }
257
+
258
+ /** @deprecated Use {@link ExtendConnectionPoolWithQuery}. */
259
+ export function extendConnectionPoolWithQuery(pool: sql.ConnectionPool): sql.ConnectionPool & { query: (sql: string, params?: any) => Promise<any[]> } {
260
+ return ExtendConnectionPoolWithQuery(pool);
261
+ }