@memberjunction/server 6.1.4 → 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 (435) 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/exampleNewUserSubClass.js +2 -1
  16. package/dist/auth/exampleNewUserSubClass.js.map +1 -1
  17. package/dist/auth/index.d.ts +20 -1
  18. package/dist/auth/index.d.ts.map +1 -1
  19. package/dist/auth/index.js +20 -10
  20. package/dist/auth/index.js.map +1 -1
  21. package/dist/auth/initializeProviders.d.ts +8 -0
  22. package/dist/auth/initializeProviders.d.ts.map +1 -1
  23. package/dist/auth/initializeProviders.js +21 -5
  24. package/dist/auth/initializeProviders.js.map +1 -1
  25. package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
  26. package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
  27. package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
  28. package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
  29. package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
  30. package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
  31. package/dist/auth/magicLink/MagicLinkService.js +65 -51
  32. package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
  33. package/dist/auth/magicLink/index.d.ts +2 -2
  34. package/dist/auth/magicLink/index.d.ts.map +1 -1
  35. package/dist/auth/magicLink/index.js +2 -2
  36. package/dist/auth/magicLink/index.js.map +1 -1
  37. package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
  38. package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
  39. package/dist/auth/magicLink/magicLinkCore.js +61 -61
  40. package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
  41. package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
  42. package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
  43. package/dist/auth/magicLink/redeemLanding.js +12 -4
  44. package/dist/auth/magicLink/redeemLanding.js.map +1 -1
  45. package/dist/auth/magicLink/types.d.ts +4 -4
  46. package/dist/auth/principals.d.ts +2 -0
  47. package/dist/auth/principals.d.ts.map +1 -1
  48. package/dist/auth/principals.js +6 -2
  49. package/dist/auth/principals.js.map +1 -1
  50. package/dist/cache.d.ts +2 -0
  51. package/dist/cache.d.ts.map +1 -1
  52. package/dist/cache.js +3 -1
  53. package/dist/cache.js.map +1 -1
  54. package/dist/config.d.ts +293 -2
  55. package/dist/config.d.ts.map +1 -1
  56. package/dist/config.js +11 -4
  57. package/dist/config.js.map +1 -1
  58. package/dist/context.d.ts +20 -0
  59. package/dist/context.d.ts.map +1 -1
  60. package/dist/context.js +27 -19
  61. package/dist/context.js.map +1 -1
  62. package/dist/directives/Public.d.ts +2 -0
  63. package/dist/directives/Public.d.ts.map +1 -1
  64. package/dist/directives/Public.js +3 -1
  65. package/dist/directives/Public.js.map +1 -1
  66. package/dist/directives/RequireSystemUser.d.ts +2 -0
  67. package/dist/directives/RequireSystemUser.d.ts.map +1 -1
  68. package/dist/directives/RequireSystemUser.js +3 -1
  69. package/dist/directives/RequireSystemUser.js.map +1 -1
  70. package/dist/generated/graphql-schemas/__mj.d.ts +266 -4
  71. package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
  72. package/dist/generated/graphql-schemas/__mj.js +1304 -0
  73. package/dist/generated/graphql-schemas/__mj.js.map +1 -1
  74. package/dist/generic/CacheInvalidationResolver.d.ts +8 -2
  75. package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
  76. package/dist/generic/CacheInvalidationResolver.js +7 -3
  77. package/dist/generic/CacheInvalidationResolver.js.map +1 -1
  78. package/dist/generic/FireAndForgetHeartbeat.d.ts +3 -1
  79. package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
  80. package/dist/generic/FireAndForgetHeartbeat.js +8 -4
  81. package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
  82. package/dist/generic/PushStatusResolver.d.ts +10 -1
  83. package/dist/generic/PushStatusResolver.d.ts.map +1 -1
  84. package/dist/generic/PushStatusResolver.js +11 -3
  85. package/dist/generic/PushStatusResolver.js.map +1 -1
  86. package/dist/generic/ResolverBase.d.ts +27 -1
  87. package/dist/generic/ResolverBase.d.ts.map +1 -1
  88. package/dist/generic/ResolverBase.js +64 -6
  89. package/dist/generic/ResolverBase.js.map +1 -1
  90. package/dist/index.d.ts +6 -0
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +29 -6
  93. package/dist/index.js.map +1 -1
  94. package/dist/integration/CustomColumnPromoter.d.ts +2 -0
  95. package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
  96. package/dist/integration/CustomColumnPromoter.js +5 -1
  97. package/dist/integration/CustomColumnPromoter.js.map +1 -1
  98. package/dist/integration/EntityMapLifecycle.d.ts +4 -0
  99. package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
  100. package/dist/integration/EntityMapLifecycle.js +10 -2
  101. package/dist/integration/EntityMapLifecycle.js.map +1 -1
  102. package/dist/logging/NoLog.d.ts +4 -0
  103. package/dist/logging/NoLog.d.ts.map +1 -1
  104. package/dist/logging/NoLog.js +10 -2
  105. package/dist/logging/NoLog.js.map +1 -1
  106. package/dist/logging/StartupLogger.d.ts +2 -0
  107. package/dist/logging/StartupLogger.d.ts.map +1 -1
  108. package/dist/logging/StartupLogger.js +5 -1
  109. package/dist/logging/StartupLogger.js.map +1 -1
  110. package/dist/logging/bootAudit.d.ts +11 -7
  111. package/dist/logging/bootAudit.d.ts.map +1 -1
  112. package/dist/logging/bootAudit.js +15 -7
  113. package/dist/logging/bootAudit.js.map +1 -1
  114. package/dist/logging/boundaryLogPayload.d.ts +4 -0
  115. package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
  116. package/dist/logging/boundaryLogPayload.js +5 -1
  117. package/dist/logging/boundaryLogPayload.js.map +1 -1
  118. package/dist/logging/secretRedactor.d.ts +2 -0
  119. package/dist/logging/secretRedactor.d.ts.map +1 -1
  120. package/dist/logging/secretRedactor.js +8 -4
  121. package/dist/logging/secretRedactor.js.map +1 -1
  122. package/dist/logging/shortenForLog.d.ts +2 -0
  123. package/dist/logging/shortenForLog.d.ts.map +1 -1
  124. package/dist/logging/shortenForLog.js +7 -3
  125. package/dist/logging/shortenForLog.js.map +1 -1
  126. package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
  127. package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
  128. package/dist/logging/variablesLoggingMiddleware.js +8 -6
  129. package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
  130. package/dist/metadataRefreshSignal.d.ts +19 -0
  131. package/dist/metadataRefreshSignal.d.ts.map +1 -0
  132. package/dist/metadataRefreshSignal.js +45 -0
  133. package/dist/metadataRefreshSignal.js.map +1 -0
  134. package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
  135. package/dist/multiTenancy/index.d.ts +8 -0
  136. package/dist/multiTenancy/index.d.ts.map +1 -1
  137. package/dist/multiTenancy/index.js +21 -5
  138. package/dist/multiTenancy/index.js.map +1 -1
  139. package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
  140. package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
  141. package/dist/realtimeWidget/WidgetRouter.js +14 -10
  142. package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
  143. package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
  144. package/dist/realtimeWidget/WidgetSessionService.js +27 -27
  145. package/dist/realtimeWidget/host-identity.d.ts +5 -1
  146. package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
  147. package/dist/realtimeWidget/host-identity.js +11 -3
  148. package/dist/realtimeWidget/host-identity.js.map +1 -1
  149. package/dist/realtimeWidget/index.d.ts +2 -2
  150. package/dist/realtimeWidget/index.d.ts.map +1 -1
  151. package/dist/realtimeWidget/index.js +2 -2
  152. package/dist/realtimeWidget/index.js.map +1 -1
  153. package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
  154. package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
  155. package/dist/realtimeWidget/visitorIdentity.js +16 -4
  156. package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
  157. package/dist/realtimeWidget/widgetCore.d.ts +48 -0
  158. package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
  159. package/dist/realtimeWidget/widgetCore.js +38 -10
  160. package/dist/realtimeWidget/widgetCore.js.map +1 -1
  161. package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
  162. package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
  163. package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
  164. package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
  165. package/dist/resolvers/AdhocQueryResolver.js +3 -3
  166. package/dist/resolvers/FetchEntityVectorsResolver.js +2 -2
  167. package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
  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/QuerySystemUserResolver.d.ts.map +1 -1
  185. package/dist/resolvers/QuerySystemUserResolver.js +2 -1
  186. package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
  187. package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
  188. package/dist/resolvers/RealtimeClientSessionResolver.d.ts +37 -0
  189. package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
  190. package/dist/resolvers/RealtimeClientSessionResolver.js +101 -11
  191. package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
  192. package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
  193. package/dist/resolvers/RunAIAgentResolver.d.ts +10 -4
  194. package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
  195. package/dist/resolvers/RunAIAgentResolver.js +74 -42
  196. package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
  197. package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
  198. package/dist/resolvers/RunAIPromptResolver.js +2 -2
  199. package/dist/resolvers/RunTestResolver.js +5 -5
  200. package/dist/resolvers/SearchEntitiesResolver.d.ts.map +1 -1
  201. package/dist/resolvers/SearchEntitiesResolver.js +3 -1
  202. package/dist/resolvers/SearchEntitiesResolver.js.map +1 -1
  203. package/dist/resolvers/SearchKnowledgeResolver.d.ts +1 -0
  204. package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
  205. package/dist/resolvers/SearchKnowledgeResolver.js +5 -0
  206. package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
  207. package/dist/resolvers/SearchKnowledgeSystemUserResolver.d.ts.map +1 -1
  208. package/dist/resolvers/SearchKnowledgeSystemUserResolver.js +1 -0
  209. package/dist/resolvers/SearchKnowledgeSystemUserResolver.js.map +1 -1
  210. package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
  211. package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
  212. package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
  213. package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
  214. package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
  215. package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
  216. package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
  217. package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
  218. package/dist/resolvers/TransactionGroupResolver.js +53 -4
  219. package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
  220. package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
  221. package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
  222. package/dist/resolvers/adhoc-query-helpers.js +10 -2
  223. package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
  224. package/dist/resolvers/artifact-routing.d.ts +8 -8
  225. package/dist/resolvers/artifact-routing.js +2 -2
  226. package/dist/resolvers/artifact-routing.js.map +1 -1
  227. package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
  228. package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
  229. package/dist/resolvers/meetingRecordingRegistration.js +24 -8
  230. package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
  231. package/dist/resolvers/peaksSidecar.d.ts +4 -0
  232. package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
  233. package/dist/resolvers/peaksSidecar.js +10 -2
  234. package/dist/resolvers/peaksSidecar.js.map +1 -1
  235. package/dist/rest/EntityCRUDHandler.d.ts +28 -0
  236. package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
  237. package/dist/rest/EntityCRUDHandler.js +20 -4
  238. package/dist/rest/EntityCRUDHandler.js.map +1 -1
  239. package/dist/rest/MediaStreamHandler.d.ts +2 -0
  240. package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
  241. package/dist/rest/MediaStreamHandler.js +10 -6
  242. package/dist/rest/MediaStreamHandler.js.map +1 -1
  243. package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
  244. package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
  245. package/dist/rest/OAuthCallbackHandler.js +15 -3
  246. package/dist/rest/OAuthCallbackHandler.js.map +1 -1
  247. package/dist/rest/RESTEndpointHandler.d.ts +6 -4
  248. package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
  249. package/dist/rest/RESTEndpointHandler.js +15 -11
  250. package/dist/rest/RESTEndpointHandler.js.map +1 -1
  251. package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
  252. package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
  253. package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
  254. package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
  255. package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
  256. package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
  257. package/dist/rest/SignatureWebhookHandler.js +5 -1
  258. package/dist/rest/SignatureWebhookHandler.js.map +1 -1
  259. package/dist/rest/UploadTokenManager.d.ts +24 -8
  260. package/dist/rest/UploadTokenManager.d.ts.map +1 -1
  261. package/dist/rest/UploadTokenManager.js +53 -21
  262. package/dist/rest/UploadTokenManager.js.map +1 -1
  263. package/dist/rest/ViewOperationsHandler.d.ts +20 -0
  264. package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
  265. package/dist/rest/ViewOperationsHandler.js +20 -4
  266. package/dist/rest/ViewOperationsHandler.js.map +1 -1
  267. package/dist/rest/mediaRange.d.ts +4 -0
  268. package/dist/rest/mediaRange.d.ts.map +1 -1
  269. package/dist/rest/mediaRange.js +10 -2
  270. package/dist/rest/mediaRange.js.map +1 -1
  271. package/dist/rest/setupRESTEndpoints.d.ts +4 -0
  272. package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
  273. package/dist/rest/setupRESTEndpoints.js +13 -7
  274. package/dist/rest/setupRESTEndpoints.js.map +1 -1
  275. package/dist/serverExtensionReservedRoots.d.ts +2 -0
  276. package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
  277. package/dist/serverExtensionReservedRoots.js +5 -1
  278. package/dist/serverExtensionReservedRoots.js.map +1 -1
  279. package/dist/services/MJStorageBlobStore.d.ts +41 -0
  280. package/dist/services/MJStorageBlobStore.d.ts.map +1 -0
  281. package/dist/services/MJStorageBlobStore.js +160 -0
  282. package/dist/services/MJStorageBlobStore.js.map +1 -0
  283. package/dist/services/TaskGraphActionRunner.d.ts +13 -8
  284. package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
  285. package/dist/services/TaskGraphActionRunner.js +16 -15
  286. package/dist/services/TaskGraphActionRunner.js.map +1 -1
  287. package/dist/types.d.ts +2 -0
  288. package/dist/types.d.ts.map +1 -1
  289. package/dist/types.js +7 -3
  290. package/dist/types.js.map +1 -1
  291. package/dist/util.d.ts +12 -3
  292. package/dist/util.d.ts.map +1 -1
  293. package/dist/util.js +19 -8
  294. package/dist/util.js.map +1 -1
  295. package/package.json +92 -92
  296. package/src/__tests__/FileResolverPeaks.test.ts +13 -13
  297. package/src/__tests__/ListOperationsResolver.test.ts +17 -17
  298. package/src/__tests__/MediaStreamHandler.test.ts +28 -28
  299. package/src/__tests__/NoLog.test.ts +11 -11
  300. package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
  301. package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
  302. package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
  303. package/src/__tests__/RealtimeClientSessionResolver.test.ts +229 -0
  304. package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
  305. package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
  306. package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
  307. package/src/__tests__/ResolverBase.isaPromotionCreate.test.ts +412 -0
  308. package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
  309. package/src/__tests__/SearchEntitiesResolver.readOnlyFallback.test.ts +78 -0
  310. package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
  311. package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
  312. package/src/__tests__/TransactionGroupResolver.refusals.test.ts +290 -0
  313. package/src/__tests__/WidgetSessionService.test.ts +8 -4
  314. package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
  315. package/src/__tests__/bootAudit.test.ts +11 -11
  316. package/src/__tests__/boundaryLogPayload.test.ts +6 -6
  317. package/src/__tests__/databaseAbstraction.test.ts +12 -6
  318. package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
  319. package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
  320. package/src/__tests__/magicLink.test.ts +73 -134
  321. package/src/__tests__/magicLinkService.consume.test.ts +224 -0
  322. package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
  323. package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
  324. package/src/__tests__/multiTenancy.security.test.ts +40 -40
  325. package/src/__tests__/multiTenancy.test.ts +18 -18
  326. package/src/__tests__/newUsers.test.ts +24 -23
  327. package/src/__tests__/principals.test.ts +22 -22
  328. package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
  329. package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
  330. package/src/__tests__/secretRedactor.test.ts +12 -12
  331. package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
  332. package/src/__tests__/subscriptionRedaction.test.ts +5 -5
  333. package/src/__tests__/unifiedAuth.test.ts +15 -9
  334. package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
  335. package/src/__tests__/widget.test.ts +45 -45
  336. package/src/__tests__/widgetGuestElevation.test.ts +7 -7
  337. package/src/__tests__/widgetHostIdentity.test.ts +14 -14
  338. package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
  339. package/src/agentSessions/SessionManager.ts +2 -2
  340. package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
  341. package/src/auth/AuthProviderCatalogRouter.ts +6 -1
  342. package/src/auth/__tests__/backward-compatibility.test.ts +3 -3
  343. package/src/auth/exampleNewUserSubClass.ts +2 -2
  344. package/src/auth/index.ts +43 -28
  345. package/src/auth/initializeProviders.ts +25 -5
  346. package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
  347. package/src/auth/magicLink/MagicLinkService.ts +71 -52
  348. package/src/auth/magicLink/index.ts +7 -7
  349. package/src/auth/magicLink/magicLinkCore.ts +96 -64
  350. package/src/auth/magicLink/redeemLanding.ts +14 -4
  351. package/src/auth/magicLink/types.ts +54 -54
  352. package/src/auth/newUsers.ts +1 -1
  353. package/src/auth/principals.ts +11 -2
  354. package/src/cache.ts +4 -1
  355. package/src/config.ts +14 -4
  356. package/src/context.ts +37 -24
  357. package/src/directives/Public.ts +4 -1
  358. package/src/directives/RequireSystemUser.ts +4 -1
  359. package/src/generated/graphql-schemas/__mj.ts +933 -5
  360. package/src/generic/CacheInvalidationResolver.ts +12 -4
  361. package/src/generic/FireAndForgetHeartbeat.ts +19 -14
  362. package/src/generic/PushStatusResolver.ts +21 -7
  363. package/src/generic/ResolverBase.ts +66 -5
  364. package/src/generic/RunViewResolver.ts +22 -22
  365. package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
  366. package/src/index.ts +34 -7
  367. package/src/integration/CustomColumnPromoter.ts +6 -1
  368. package/src/integration/EntityMapLifecycle.ts +20 -2
  369. package/src/logging/NoLog.ts +16 -2
  370. package/src/logging/StartupLogger.ts +6 -1
  371. package/src/logging/bootAudit.ts +26 -16
  372. package/src/logging/boundaryLogPayload.ts +8 -1
  373. package/src/logging/secretRedactor.ts +14 -9
  374. package/src/logging/shortenForLog.ts +8 -3
  375. package/src/logging/variablesLoggingMiddleware.ts +9 -6
  376. package/src/metadataRefreshSignal.ts +45 -0
  377. package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
  378. package/src/multiTenancy/index.ts +29 -5
  379. package/src/realtimeWidget/WidgetRouter.ts +15 -10
  380. package/src/realtimeWidget/WidgetSessionService.ts +76 -76
  381. package/src/realtimeWidget/host-identity.ts +24 -10
  382. package/src/realtimeWidget/index.ts +3 -3
  383. package/src/realtimeWidget/visitorIdentity.ts +39 -8
  384. package/src/realtimeWidget/widgetCore.ts +75 -10
  385. package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
  386. package/src/resolvers/AdhocQueryResolver.ts +3 -3
  387. package/src/resolvers/AgentSessionResolver.ts +3 -3
  388. package/src/resolvers/ColorResolver.ts +6 -6
  389. package/src/resolvers/ComponentRegistryResolver.ts +36 -36
  390. package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
  391. package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
  392. package/src/resolvers/FetchEntityVectorsResolver.ts +2 -2
  393. package/src/resolvers/FileResolver.ts +42 -42
  394. package/src/resolvers/GeoResolver.ts +4 -4
  395. package/src/resolvers/GetDataResolver.ts +50 -15
  396. package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
  397. package/src/resolvers/ListOperationsResolver.ts +78 -28
  398. package/src/resolvers/MCPResolver.ts +30 -15
  399. package/src/resolvers/QueryResolver.ts +13 -13
  400. package/src/resolvers/QuerySystemUserResolver.ts +2 -1
  401. package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
  402. package/src/resolvers/RealtimeClientSessionResolver.ts +126 -13
  403. package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
  404. package/src/resolvers/RunAIAgentResolver.ts +118 -76
  405. package/src/resolvers/RunAIPromptResolver.ts +22 -22
  406. package/src/resolvers/RunTemplateResolver.ts +4 -4
  407. package/src/resolvers/RunTestResolver.ts +25 -25
  408. package/src/resolvers/SearchEntitiesResolver.ts +3 -1
  409. package/src/resolvers/SearchKnowledgeResolver.ts +4 -0
  410. package/src/resolvers/SearchKnowledgeSystemUserResolver.ts +1 -0
  411. package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
  412. package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
  413. package/src/resolvers/TelemetryResolver.ts +79 -79
  414. package/src/resolvers/TransactionGroupResolver.ts +57 -4
  415. package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
  416. package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
  417. package/src/resolvers/adhoc-query-helpers.ts +19 -2
  418. package/src/resolvers/artifact-routing.ts +19 -19
  419. package/src/resolvers/meetingRecordingRegistration.ts +44 -10
  420. package/src/resolvers/peaksSidecar.ts +12 -2
  421. package/src/rest/EntityCRUDHandler.ts +24 -4
  422. package/src/rest/MediaStreamHandler.ts +11 -6
  423. package/src/rest/OAuthCallbackHandler.ts +25 -7
  424. package/src/rest/RESTEndpointHandler.ts +20 -15
  425. package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
  426. package/src/rest/SignatureWebhookHandler.ts +6 -1
  427. package/src/rest/UploadTokenManager.ts +66 -30
  428. package/src/rest/ViewOperationsHandler.ts +24 -4
  429. package/src/rest/mediaRange.ts +16 -6
  430. package/src/rest/setupRESTEndpoints.ts +24 -12
  431. package/src/serverExtensionReservedRoots.ts +6 -1
  432. package/src/services/MJStorageBlobStore.ts +209 -0
  433. package/src/services/TaskGraphActionRunner.ts +16 -15
  434. package/src/types.ts +21 -16
  435. package/src/util.ts +22 -9
@@ -23,10 +23,10 @@ import { LogError, Metadata, UserInfo } from '@memberjunction/core';
23
23
  import { MJFileEntity } from '@memberjunction/core-entities';
24
24
  import { FileStorageEngine } from '@memberjunction/storage';
25
25
  import type { FileStorageBase, ByteRange } from '@memberjunction/storage';
26
- import { getSystemUser } from '../auth/index.js';
26
+ import { GetSystemUser } from '../auth/index.js';
27
27
  import { MediaAccessKeyManager } from './MediaAccessKeys.js';
28
28
  import { UploadTokenManager } from './UploadTokenManager.js';
29
- import { parseRange, parseRangeHeaderLoose } from './mediaRange.js';
29
+ import { ParseRange, ParseRangeHeaderLoose } from './mediaRange.js';
30
30
 
31
31
  /** A located bytes source for a file: the driver + the provider key to read. */
32
32
  interface FileBytesSource {
@@ -41,7 +41,7 @@ interface FileBytesSource {
41
41
  * - `GET /media/:fileId` and `GET /media/:fileId/:filename` (Range streaming)
42
42
  * - `POST /media/upload-stage` (Raw binary upload staging)
43
43
  */
44
- export function createMediaStreamRouter(): Router {
44
+ export function CreateMediaStreamRouter(): Router {
45
45
  const router = express.Router();
46
46
 
47
47
  router.post(
@@ -61,6 +61,11 @@ export function createMediaStreamRouter(): Router {
61
61
  return router;
62
62
  }
63
63
 
64
+ /** @deprecated Use {@link CreateMediaStreamRouter}. */
65
+ export function createMediaStreamRouter(): Router {
66
+ return CreateMediaStreamRouter();
67
+ }
68
+
64
69
  /**
65
70
  * Authenticated raw binary upload staging handler (`POST /media/upload-stage`).
66
71
  *
@@ -203,7 +208,7 @@ function verifyMediaToken(token: string, fileId: string): { fileId: string; user
203
208
  * provider indistinguishable from a deleted file.
204
209
  */
205
210
  async function resolveFileBytesSource(fileId: string): Promise<FileBytesSource | null> {
206
- const systemUser: UserInfo = await getSystemUser();
211
+ const systemUser: UserInfo = await GetSystemUser();
207
212
 
208
213
  // The /media route runs pre-auth on the server's own provider; access was already authorized
209
214
  // at token-mint time, so this load only locates the bytes.
@@ -261,7 +266,7 @@ async function streamOrBuffer(req: Request, res: Response, source: FileBytesSour
261
266
 
262
267
  /** True-streaming path: `GetObjectStream` + pipe, with 206 when a Range was honored. */
263
268
  async function serveViaStream(res: Response, source: FileBytesSource, rangeHeader: string | undefined): Promise<void> {
264
- const range = rangeHeader ? parseRangeHeaderLoose(rangeHeader) : undefined;
269
+ const range = rangeHeader ? ParseRangeHeaderLoose(rangeHeader) : undefined;
265
270
  // Omit End for an open-ended range so the driver streams to EOF (per ByteRange semantics).
266
271
  const streamRange: ByteRange | undefined = range
267
272
  ? (range.end == null ? { Start: range.start } : { Start: range.start, End: range.end })
@@ -315,7 +320,7 @@ async function serveViaBuffer(res: Response, source: FileBytesSource, rangeHeade
315
320
  return;
316
321
  }
317
322
 
318
- const range = parseRange(rangeHeader, total);
323
+ const range = ParseRange(rangeHeader, total);
319
324
  if (!range) {
320
325
  // Unsatisfiable range — per RFC 7233, 416 + Content-Range with the total size.
321
326
  res.setHeader('Content-Range', `bytes */${total}`);
@@ -33,11 +33,11 @@ const ENTITY_OAUTH_AUTHORIZATION_STATES = 'MJ: O Auth Authorization States';
33
33
  */
34
34
  export interface OAuthCallbackHandlerOptions {
35
35
  /** Base URL for this MJAPI instance (for redirects) */
36
- publicUrl: string;
36
+ publicUrl: string; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it
37
37
  /** URL to redirect to after successful authorization */
38
- successRedirectUrl?: string;
38
+ successRedirectUrl?: string; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it
39
39
  /** URL to redirect to after failed authorization */
40
- errorRedirectUrl?: string;
40
+ errorRedirectUrl?: string; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it
41
41
  /**
42
42
  * Origins a caller-supplied `frontendReturnUrl` is allowed to point at, so the OAuth callback
43
43
  * cannot be turned into an open redirect from the trusted MJAPI origin. Normally wired to
@@ -54,7 +54,7 @@ export interface OAuthCallbackHandlerOptions {
54
54
  * dependency on configuration loading — importing the config module validates the whole config
55
55
  * as a side effect, which makes this handler unimportable in any context without one.
56
56
  */
57
- allowedFrontendOrigins: string[];
57
+ allowedFrontendOrigins: string[]; // case-violation-ok-legacy-back-compat: renaming it broke a use the checker could not see from the declaration — the compile proved it
58
58
  }
59
59
 
60
60
  /**
@@ -863,16 +863,26 @@ export class OAuthCallbackHandler {
863
863
  /**
864
864
  * Gets the router for unauthenticated callback endpoint.
865
865
  */
866
- public getCallbackRouter(): express.Router {
866
+ public GetCallbackRouter(): express.Router {
867
867
  return this.callbackRouter;
868
868
  }
869
869
 
870
+ /** @deprecated Use {@link GetCallbackRouter}. */
871
+ public getCallbackRouter(): express.Router {
872
+ return this.GetCallbackRouter();
873
+ }
874
+
870
875
  /**
871
876
  * Gets the router for authenticated OAuth endpoints.
872
877
  */
873
- public getAuthenticatedRouter(): express.Router {
878
+ public GetAuthenticatedRouter(): express.Router {
874
879
  return this.authenticatedRouter;
875
880
  }
881
+
882
+ /** @deprecated Use {@link GetAuthenticatedRouter}. */
883
+ public getAuthenticatedRouter(): express.Router {
884
+ return this.GetAuthenticatedRouter();
885
+ }
876
886
  }
877
887
 
878
888
  /**
@@ -881,7 +891,7 @@ export class OAuthCallbackHandler {
881
891
  * @param options - Handler configuration
882
892
  * @returns Object with callback and authenticated routers
883
893
  */
884
- export function createOAuthCallbackHandler(options: OAuthCallbackHandlerOptions): {
894
+ export function CreateOAuthCallbackHandler(options: OAuthCallbackHandlerOptions): {
885
895
  callbackRouter: express.Router;
886
896
  authenticatedRouter: express.Router;
887
897
  } {
@@ -891,3 +901,11 @@ export function createOAuthCallbackHandler(options: OAuthCallbackHandlerOptions)
891
901
  authenticatedRouter: handler.getAuthenticatedRouter()
892
902
  };
893
903
  }
904
+
905
+ /** @deprecated Use {@link CreateOAuthCallbackHandler}. */
906
+ export function createOAuthCallbackHandler(options: OAuthCallbackHandlerOptions): {
907
+ callbackRouter: express.Router;
908
+ authenticatedRouter: express.Router;
909
+ } {
910
+ return CreateOAuthCallbackHandler(options);
911
+ }
@@ -16,7 +16,7 @@ export interface RESTEndpointHandlerOptions {
16
16
  * If provided, only these entities will be accessible through the REST API
17
17
  * Supports wildcards using '*' (e.g., 'User*' matches 'User', 'UserRole', etc.)
18
18
  */
19
- includeEntities?: string[];
19
+ IncludeEntities?: string[];
20
20
 
21
21
  /**
22
22
  * Array of entity names to exclude from the API (case-insensitive)
@@ -24,20 +24,20 @@ export interface RESTEndpointHandlerOptions {
24
24
  * Supports wildcards using '*' (e.g., 'Secret*' matches 'Secret', 'SecretKey', etc.)
25
25
  * Note: Exclude patterns always override include patterns
26
26
  */
27
- excludeEntities?: string[];
27
+ ExcludeEntities?: string[];
28
28
 
29
29
  /**
30
30
  * Array of schema names to include in the API (case-insensitive)
31
31
  * If provided, only entities in these schemas will be accessible through the REST API
32
32
  */
33
- includeSchemas?: string[];
33
+ IncludeSchemas?: string[];
34
34
 
35
35
  /**
36
36
  * Array of schema names to exclude from the API (case-insensitive)
37
37
  * Entities in these schemas will not be accessible through the REST API
38
38
  * Note: Exclude patterns always override include patterns
39
39
  */
40
- excludeSchemas?: string[];
40
+ ExcludeSchemas?: string[];
41
41
  }
42
42
 
43
43
  /**
@@ -85,21 +85,21 @@ export class RESTEndpointHandler {
85
85
  const schemaName = entity.SchemaName.toLowerCase();
86
86
 
87
87
  // 1. Check schema exclusions first (these take highest precedence)
88
- if (this.options.excludeSchemas && this.options.excludeSchemas.length > 0) {
89
- if (this.options.excludeSchemas.some(schema => schema.toLowerCase() === schemaName)) {
88
+ if (this.options.ExcludeSchemas && this.options.ExcludeSchemas.length > 0) {
89
+ if (this.options.ExcludeSchemas.some(schema => schema.toLowerCase() === schemaName)) {
90
90
  return false;
91
91
  }
92
92
  }
93
93
 
94
94
  // 2. Check entity exclusions next (these override entity inclusions)
95
- if (this.options.excludeEntities && this.options.excludeEntities.length > 0) {
95
+ if (this.options.ExcludeEntities && this.options.ExcludeEntities.length > 0) {
96
96
  // Check for direct match
97
- if (this.options.excludeEntities.includes(name)) {
97
+ if (this.options.ExcludeEntities.includes(name)) {
98
98
  return false;
99
99
  }
100
100
 
101
101
  // Check for wildcard matches
102
- for (const pattern of this.options.excludeEntities) {
102
+ for (const pattern of this.options.ExcludeEntities) {
103
103
  if (pattern.includes('*')) {
104
104
  const regex = new RegExp('^' + pattern.toLowerCase().replace(/\*/g, '.*') + '$');
105
105
  if (regex.test(name)) {
@@ -110,21 +110,21 @@ export class RESTEndpointHandler {
110
110
  }
111
111
 
112
112
  // 3. Check schema inclusions (if specified, only entities from these schemas are allowed)
113
- if (this.options.includeSchemas && this.options.includeSchemas.length > 0) {
114
- if (!this.options.includeSchemas.some(schema => schema.toLowerCase() === schemaName)) {
113
+ if (this.options.IncludeSchemas && this.options.IncludeSchemas.length > 0) {
114
+ if (!this.options.IncludeSchemas.some(schema => schema.toLowerCase() === schemaName)) {
115
115
  return false;
116
116
  }
117
117
  }
118
118
 
119
119
  // 4. Check entity inclusions
120
- if (this.options.includeEntities && this.options.includeEntities.length > 0) {
120
+ if (this.options.IncludeEntities && this.options.IncludeEntities.length > 0) {
121
121
  // Check for direct match
122
- if (this.options.includeEntities.includes(name)) {
122
+ if (this.options.IncludeEntities.includes(name)) {
123
123
  return true;
124
124
  }
125
125
 
126
126
  // Check for wildcard matches
127
- for (const pattern of this.options.includeEntities) {
127
+ for (const pattern of this.options.IncludeEntities) {
128
128
  if (pattern.includes('*')) {
129
129
  const regex = new RegExp('^' + pattern.toLowerCase().replace(/\*/g, '.*') + '$');
130
130
  if (regex.test(name)) {
@@ -804,7 +804,12 @@ export class RESTEndpointHandler {
804
804
  /**
805
805
  * Get the Express router with all configured routes
806
806
  */
807
- public getRouter(): express.Router {
807
+ public GetRouter(): express.Router {
808
808
  return this.router;
809
809
  }
810
+
811
+ /** @deprecated Use {@link GetRouter}. */
812
+ public getRouter(): express.Router {
813
+ return this.GetRouter();
814
+ }
810
815
  }
@@ -8,7 +8,7 @@ import { LogError, LogStatus } from '@memberjunction/core';
8
8
  * BEFORE any request body parsing occurs. This prevents anonymous/unauthorized callers
9
9
  * from causing body-parser memory allocations.
10
10
  */
11
- export function requireTicket(req: Request, res: Response, next: NextFunction): void {
11
+ export function RequireTicket(req: Request, res: Response, next: NextFunction): void {
12
12
  const ticketId = (req.query['ticket'] as string) || '';
13
13
  if (!ticketId) {
14
14
  res.status(401).json({ error: 'Unauthorized: missing ticket' });
@@ -26,6 +26,11 @@ export function requireTicket(req: Request, res: Response, next: NextFunction):
26
26
  next();
27
27
  }
28
28
 
29
+ /** @deprecated Use {@link RequireTicket}. */
30
+ export function requireTicket(req: Request, res: Response, next: NextFunction): void {
31
+ return RequireTicket(req, res, next);
32
+ }
33
+
29
34
  /**
30
35
  * Builds the Express router handling the Realtime WebRTC SDP exchange:
31
36
  * `POST /realtime/sdp-exchange?ticket=<ticketId>`
@@ -36,12 +41,12 @@ export function requireTicket(req: Request, res: Response, next: NextFunction):
36
41
  * BEFORE body parsing, delegates to `driver.ExchangeWebRtcSdp` to exchange the SDP offer for an
37
42
  * answer with upstream using the server's API key, and returns the answer SDP.
38
43
  */
39
- export function createRealtimeSdpBrokerRouter(): Router {
44
+ export function CreateRealtimeSdpBrokerRouter(): Router {
40
45
  const router = express.Router();
41
46
 
42
47
  router.post(
43
48
  '/',
44
- requireTicket,
49
+ RequireTicket,
45
50
  express.json({ limit: '2mb' }),
46
51
  async (req: Request, res: Response): Promise<void> => {
47
52
  const entry = res.locals.ticketEntry as RealtimeProxyTicketEntry;
@@ -95,7 +100,12 @@ export function createRealtimeSdpBrokerRouter(): Router {
95
100
  return router;
96
101
  }
97
102
 
103
+ /** @deprecated Use {@link CreateRealtimeSdpBrokerRouter}. */
104
+ export function createRealtimeSdpBrokerRouter(): Router {
105
+ return CreateRealtimeSdpBrokerRouter();
106
+ }
107
+
98
108
  /**
99
109
  * @deprecated Use `createRealtimeSdpBrokerRouter` instead.
100
110
  */
101
- export const createOpenAILiveBrokerRouter = createRealtimeSdpBrokerRouter;
111
+ export const createOpenAILiveBrokerRouter = CreateRealtimeSdpBrokerRouter;
@@ -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
+ }