@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.d.ts +2 -0
- package/dist/agentSessions/ReturningVisitorRecap.d.ts.map +1 -1
- package/dist/agentSessions/ReturningVisitorRecap.js +5 -1
- package/dist/agentSessions/ReturningVisitorRecap.js.map +1 -1
- package/dist/agentSessions/SessionManager.js +2 -2
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts +8 -0
- package/dist/agentSessions/remoteBrowserGoalEngine.d.ts.map +1 -1
- package/dist/agentSessions/remoteBrowserGoalEngine.js +21 -5
- package/dist/agentSessions/remoteBrowserGoalEngine.js.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.d.ts +2 -0
- package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.js +5 -1
- package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
- package/dist/auth/index.d.ts +20 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +20 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +8 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +21 -5
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.d.ts +9 -0
- package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.js +22 -10
- package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.d.ts +17 -15
- package/dist/auth/magicLink/MagicLinkService.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +65 -51
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/magicLink/index.d.ts +2 -2
- package/dist/auth/magicLink/index.d.ts.map +1 -1
- package/dist/auth/magicLink/index.js +2 -2
- package/dist/auth/magicLink/index.js.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.d.ts +54 -33
- package/dist/auth/magicLink/magicLinkCore.d.ts.map +1 -1
- package/dist/auth/magicLink/magicLinkCore.js +61 -61
- package/dist/auth/magicLink/magicLinkCore.js.map +1 -1
- package/dist/auth/magicLink/redeemLanding.d.ts +4 -0
- package/dist/auth/magicLink/redeemLanding.d.ts.map +1 -1
- package/dist/auth/magicLink/redeemLanding.js +12 -4
- package/dist/auth/magicLink/redeemLanding.js.map +1 -1
- package/dist/auth/magicLink/types.d.ts +4 -4
- package/dist/auth/principals.d.ts +2 -0
- package/dist/auth/principals.d.ts.map +1 -1
- package/dist/auth/principals.js +6 -2
- package/dist/auth/principals.js.map +1 -1
- package/dist/cache.d.ts +2 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +3 -1
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +346 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -4
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +20 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +27 -19
- package/dist/context.js.map +1 -1
- package/dist/directives/Public.d.ts +2 -0
- package/dist/directives/Public.d.ts.map +1 -1
- package/dist/directives/Public.js +3 -1
- package/dist/directives/Public.js.map +1 -1
- package/dist/directives/RequireSystemUser.d.ts +2 -0
- package/dist/directives/RequireSystemUser.d.ts.map +1 -1
- package/dist/directives/RequireSystemUser.js +3 -1
- package/dist/directives/RequireSystemUser.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj.d.ts +11 -0
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +48 -0
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +94 -4
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
- package/dist/generic/CacheInvalidationResolver.js +122 -3
- package/dist/generic/CacheInvalidationResolver.js.map +1 -1
- package/dist/generic/DeleteOptionsInput.d.ts +8 -1
- package/dist/generic/DeleteOptionsInput.d.ts.map +1 -1
- package/dist/generic/DeleteOptionsInput.js +1 -1
- package/dist/generic/DeleteOptionsInput.js.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts +3 -1
- package/dist/generic/FireAndForgetHeartbeat.d.ts.map +1 -1
- package/dist/generic/FireAndForgetHeartbeat.js +8 -4
- package/dist/generic/FireAndForgetHeartbeat.js.map +1 -1
- package/dist/generic/PushStatusResolver.d.ts +10 -1
- package/dist/generic/PushStatusResolver.d.ts.map +1 -1
- package/dist/generic/PushStatusResolver.js +11 -3
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +5 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +15 -8
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -9
- package/dist/index.js.map +1 -1
- package/dist/integration/CustomColumnPromoter.d.ts +2 -0
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +5 -1
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/integration/EntityMapLifecycle.d.ts +4 -0
- package/dist/integration/EntityMapLifecycle.d.ts.map +1 -1
- package/dist/integration/EntityMapLifecycle.js +10 -2
- package/dist/integration/EntityMapLifecycle.js.map +1 -1
- package/dist/logging/NoLog.d.ts +4 -0
- package/dist/logging/NoLog.d.ts.map +1 -1
- package/dist/logging/NoLog.js +10 -2
- package/dist/logging/NoLog.js.map +1 -1
- package/dist/logging/StartupLogger.d.ts +2 -0
- package/dist/logging/StartupLogger.d.ts.map +1 -1
- package/dist/logging/StartupLogger.js +5 -1
- package/dist/logging/StartupLogger.js.map +1 -1
- package/dist/logging/bootAudit.d.ts +11 -7
- package/dist/logging/bootAudit.d.ts.map +1 -1
- package/dist/logging/bootAudit.js +15 -7
- package/dist/logging/bootAudit.js.map +1 -1
- package/dist/logging/boundaryLogPayload.d.ts +4 -0
- package/dist/logging/boundaryLogPayload.d.ts.map +1 -1
- package/dist/logging/boundaryLogPayload.js +5 -1
- package/dist/logging/boundaryLogPayload.js.map +1 -1
- package/dist/logging/secretRedactor.d.ts +2 -0
- package/dist/logging/secretRedactor.d.ts.map +1 -1
- package/dist/logging/secretRedactor.js +8 -4
- package/dist/logging/secretRedactor.js.map +1 -1
- package/dist/logging/shortenForLog.d.ts +2 -0
- package/dist/logging/shortenForLog.d.ts.map +1 -1
- package/dist/logging/shortenForLog.js +7 -3
- package/dist/logging/shortenForLog.js.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.d.ts +2 -0
- package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.js +8 -6
- package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
- package/dist/metadataRefreshSignal.d.ts +19 -0
- package/dist/metadataRefreshSignal.d.ts.map +1 -0
- package/dist/metadataRefreshSignal.js +45 -0
- package/dist/metadataRefreshSignal.js.map +1 -0
- package/dist/middleware/MJTenantFilterMiddleware.js +4 -4
- package/dist/multiTenancy/index.d.ts +8 -0
- package/dist/multiTenancy/index.d.ts.map +1 -1
- package/dist/multiTenancy/index.js +21 -5
- package/dist/multiTenancy/index.js.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.d.ts +5 -0
- package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.js +14 -10
- package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.d.ts +6 -6
- package/dist/realtimeWidget/WidgetSessionService.js +27 -27
- package/dist/realtimeWidget/host-identity.d.ts +5 -1
- package/dist/realtimeWidget/host-identity.d.ts.map +1 -1
- package/dist/realtimeWidget/host-identity.js +11 -3
- package/dist/realtimeWidget/host-identity.js.map +1 -1
- package/dist/realtimeWidget/index.d.ts +2 -2
- package/dist/realtimeWidget/index.d.ts.map +1 -1
- package/dist/realtimeWidget/index.js +2 -2
- package/dist/realtimeWidget/index.js.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts +21 -1
- package/dist/realtimeWidget/visitorIdentity.d.ts.map +1 -1
- package/dist/realtimeWidget/visitorIdentity.js +16 -4
- package/dist/realtimeWidget/visitorIdentity.js.map +1 -1
- package/dist/realtimeWidget/widgetCore.d.ts +48 -0
- package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetCore.js +38 -10
- package/dist/realtimeWidget/widgetCore.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +10 -6
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +14 -6
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +3 -3
- package/dist/resolvers/FileResolver.js +3 -3
- package/dist/resolvers/GeoResolver.d.ts +2 -2
- package/dist/resolvers/GeoResolver.js +4 -4
- package/dist/resolvers/GetDataResolver.d.ts +14 -0
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +43 -15
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +2 -2
- package/dist/resolvers/ListOperationsResolver.d.ts +20 -0
- package/dist/resolvers/ListOperationsResolver.d.ts.map +1 -1
- package/dist/resolvers/ListOperationsResolver.js +68 -28
- package/dist/resolvers/ListOperationsResolver.js.map +1 -1
- package/dist/resolvers/MCPResolver.d.ts +11 -1
- package/dist/resolvers/MCPResolver.d.ts.map +1 -1
- package/dist/resolvers/MCPResolver.js +7 -3
- package/dist/resolvers/MCPResolver.js.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
- package/dist/resolvers/RealtimeClientSessionResolver.js +3 -3
- package/dist/resolvers/RemoteBrowserActionResolver.js +5 -5
- package/dist/resolvers/RunAIAgentResolver.d.ts +10 -4
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +69 -38
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunAIPromptResolver.d.ts +1 -1
- package/dist/resolvers/RunAIPromptResolver.js +2 -2
- package/dist/resolvers/RunTestResolver.js +5 -5
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts +8 -4
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +5 -5
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +8 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.js +6 -2
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.d.ts +6 -0
- package/dist/resolvers/adhoc-query-helpers.d.ts.map +1 -1
- package/dist/resolvers/adhoc-query-helpers.js +10 -2
- package/dist/resolvers/adhoc-query-helpers.js.map +1 -1
- package/dist/resolvers/artifact-routing.d.ts +8 -8
- package/dist/resolvers/artifact-routing.js +2 -2
- package/dist/resolvers/artifact-routing.js.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.d.ts +10 -2
- package/dist/resolvers/meetingRecordingRegistration.d.ts.map +1 -1
- package/dist/resolvers/meetingRecordingRegistration.js +24 -8
- package/dist/resolvers/meetingRecordingRegistration.js.map +1 -1
- package/dist/resolvers/peaksSidecar.d.ts +4 -0
- package/dist/resolvers/peaksSidecar.d.ts.map +1 -1
- package/dist/resolvers/peaksSidecar.js +10 -2
- package/dist/resolvers/peaksSidecar.js.map +1 -1
- package/dist/rest/EntityCRUDHandler.d.ts +28 -0
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +20 -4
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/MediaStreamHandler.d.ts +2 -0
- package/dist/rest/MediaStreamHandler.d.ts.map +1 -1
- package/dist/rest/MediaStreamHandler.js +10 -6
- package/dist/rest/MediaStreamHandler.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.d.ts +9 -0
- package/dist/rest/OAuthCallbackHandler.d.ts.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +15 -3
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts +6 -4
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +15 -11
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts +5 -1
- package/dist/rest/RealtimeSdpBrokerHandler.d.ts.map +1 -1
- package/dist/rest/RealtimeSdpBrokerHandler.js +12 -4
- package/dist/rest/RealtimeSdpBrokerHandler.js.map +1 -1
- package/dist/rest/SignatureWebhookHandler.d.ts +2 -0
- package/dist/rest/SignatureWebhookHandler.d.ts.map +1 -1
- package/dist/rest/SignatureWebhookHandler.js +5 -1
- package/dist/rest/SignatureWebhookHandler.js.map +1 -1
- package/dist/rest/UploadTokenManager.d.ts +24 -8
- package/dist/rest/UploadTokenManager.d.ts.map +1 -1
- package/dist/rest/UploadTokenManager.js +53 -21
- package/dist/rest/UploadTokenManager.js.map +1 -1
- package/dist/rest/ViewOperationsHandler.d.ts +20 -0
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +20 -4
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/mediaRange.d.ts +4 -0
- package/dist/rest/mediaRange.d.ts.map +1 -1
- package/dist/rest/mediaRange.js +10 -2
- package/dist/rest/mediaRange.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +4 -0
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +13 -7
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/serverExtensionReservedRoots.d.ts +2 -0
- package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
- package/dist/serverExtensionReservedRoots.js +5 -1
- package/dist/serverExtensionReservedRoots.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +13 -8
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +16 -15
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -3
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +13 -5
- package/dist/util.js.map +1 -1
- package/package.json +92 -92
- package/src/__tests__/DeleteOptionsInput.wireShape.test.ts +62 -0
- package/src/__tests__/FileResolverPeaks.test.ts +13 -13
- package/src/__tests__/ListOperationsResolver.test.ts +17 -17
- package/src/__tests__/MediaStreamHandler.test.ts +28 -28
- package/src/__tests__/NoLog.test.ts +11 -11
- package/src/__tests__/PrimaryKeyAlwaysMapped.test.ts +10 -10
- package/src/__tests__/RESTEndpointHandler.test.ts +14 -14
- package/src/__tests__/RealtimeBridgeResolver.test.ts +4 -2
- package/src/__tests__/RealtimeSdpBrokerHandler.test.ts +6 -6
- package/src/__tests__/RefreshAdoptsNewColumns.test.ts +8 -8
- package/src/__tests__/RemoteBrowserGoalEngine.test.ts +18 -18
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
- package/src/__tests__/WidgetSessionService.test.ts +8 -4
- package/src/__tests__/adhoc-query-helpers.test.ts +21 -21
- package/src/__tests__/bootAudit.test.ts +11 -11
- package/src/__tests__/boundaryLogPayload.test.ts +6 -6
- package/src/__tests__/cacheInvalidationRecordData.test.ts +177 -0
- package/src/__tests__/databaseAbstraction.test.ts +12 -6
- package/src/__tests__/getDataTokenRedaction.test.ts +7 -7
- package/src/__tests__/initializeProviders.refresh.test.ts +4 -4
- package/src/__tests__/magicLink.test.ts +73 -134
- package/src/__tests__/magicLinkService.consume.test.ts +224 -0
- package/src/__tests__/meetingRecordingRegistration.test.ts +12 -12
- package/src/__tests__/metadataRefreshSignal.test.ts +78 -0
- package/src/__tests__/multiTenancy.security.test.ts +40 -40
- package/src/__tests__/multiTenancy.test.ts +18 -18
- package/src/__tests__/newUsers.test.ts +24 -23
- package/src/__tests__/principals.test.ts +22 -22
- package/src/__tests__/pushStatusResolver.filter.test.ts +8 -8
- package/src/__tests__/secretRedactor.failOpen.test.ts +12 -12
- package/src/__tests__/secretRedactor.test.ts +12 -12
- package/src/__tests__/serverExtensionReservedRoots.test.ts +7 -7
- package/src/__tests__/subscriptionRedaction.test.ts +5 -5
- package/src/__tests__/unifiedAuth.test.ts +15 -9
- package/src/__tests__/visitorIdentity.resolve.test.ts +6 -6
- package/src/__tests__/widget.test.ts +45 -45
- package/src/__tests__/widgetGuestElevation.test.ts +7 -7
- package/src/__tests__/widgetHostIdentity.test.ts +14 -14
- package/src/agentSessions/ReturningVisitorRecap.ts +12 -1
- package/src/agentSessions/SessionManager.ts +2 -2
- package/src/agentSessions/remoteBrowserGoalEngine.ts +30 -5
- package/src/auth/AuthProviderCatalogRouter.ts +6 -1
- package/src/auth/__tests__/backward-compatibility.test.ts +3 -3
- package/src/auth/index.ts +43 -28
- package/src/auth/initializeProviders.ts +25 -5
- package/src/auth/magicLink/MagicLinkRouter.ts +28 -10
- package/src/auth/magicLink/MagicLinkService.ts +71 -52
- package/src/auth/magicLink/index.ts +7 -7
- package/src/auth/magicLink/magicLinkCore.ts +96 -64
- package/src/auth/magicLink/redeemLanding.ts +14 -4
- package/src/auth/magicLink/types.ts +54 -54
- package/src/auth/newUsers.ts +1 -1
- package/src/auth/principals.ts +11 -2
- package/src/cache.ts +4 -1
- package/src/config.ts +37 -4
- package/src/context.ts +37 -24
- package/src/directives/Public.ts +4 -1
- package/src/directives/RequireSystemUser.ts +4 -1
- package/src/generated/graphql-schemas/__mj.ts +37 -0
- package/src/generic/CacheInvalidationResolver.ts +148 -4
- package/src/generic/DeleteOptionsInput.ts +9 -2
- package/src/generic/FireAndForgetHeartbeat.ts +19 -14
- package/src/generic/PushStatusResolver.ts +21 -7
- package/src/generic/ResolverBase.ts +16 -8
- package/src/generic/RunViewResolver.ts +22 -22
- package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
- package/src/index.ts +35 -9
- package/src/integration/CustomColumnPromoter.ts +6 -1
- package/src/integration/EntityMapLifecycle.ts +20 -2
- package/src/logging/NoLog.ts +16 -2
- package/src/logging/StartupLogger.ts +6 -1
- package/src/logging/bootAudit.ts +26 -16
- package/src/logging/boundaryLogPayload.ts +8 -1
- package/src/logging/secretRedactor.ts +14 -9
- package/src/logging/shortenForLog.ts +8 -3
- package/src/logging/variablesLoggingMiddleware.ts +9 -6
- package/src/metadataRefreshSignal.ts +45 -0
- package/src/middleware/MJTenantFilterMiddleware.ts +4 -4
- package/src/multiTenancy/index.ts +29 -5
- package/src/realtimeWidget/WidgetRouter.ts +15 -10
- package/src/realtimeWidget/WidgetSessionService.ts +76 -76
- package/src/realtimeWidget/host-identity.ts +24 -10
- package/src/realtimeWidget/index.ts +3 -3
- package/src/realtimeWidget/visitorIdentity.ts +39 -8
- package/src/realtimeWidget/widgetCore.ts +75 -10
- package/src/realtimeWidget/widgetGuestElevation.ts +25 -12
- package/src/resolvers/AdhocQueryResolver.ts +3 -3
- package/src/resolvers/AgentSessionResolver.ts +3 -3
- package/src/resolvers/ColorResolver.ts +6 -6
- package/src/resolvers/ComponentRegistryResolver.ts +36 -36
- package/src/resolvers/EntityCommunicationsResolver.ts +4 -4
- package/src/resolvers/ExecuteRemoteOperationResolver.ts +9 -9
- package/src/resolvers/FileResolver.ts +42 -42
- package/src/resolvers/GeoResolver.ts +4 -4
- package/src/resolvers/GetDataResolver.ts +50 -15
- package/src/resolvers/IntegrationDiscoveryResolver.ts +2 -2
- package/src/resolvers/ListOperationsResolver.ts +78 -28
- package/src/resolvers/MCPResolver.ts +30 -15
- package/src/resolvers/QueryResolver.ts +13 -13
- package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
- package/src/resolvers/RealtimeClientSessionResolver.ts +3 -3
- package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
- package/src/resolvers/RunAIAgentResolver.ts +113 -72
- package/src/resolvers/RunAIPromptResolver.ts +22 -22
- package/src/resolvers/RunTemplateResolver.ts +4 -4
- package/src/resolvers/RunTestResolver.ts +25 -25
- package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
- package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
- package/src/resolvers/TelemetryResolver.ts +79 -79
- package/src/resolvers/__tests__/GetDataResolver.tokens.test.ts +40 -38
- package/src/resolvers/__tests__/artifact-routing.test.ts +23 -23
- package/src/resolvers/adhoc-query-helpers.ts +19 -2
- package/src/resolvers/artifact-routing.ts +19 -19
- package/src/resolvers/meetingRecordingRegistration.ts +44 -10
- package/src/resolvers/peaksSidecar.ts +12 -2
- package/src/rest/EntityCRUDHandler.ts +24 -4
- package/src/rest/MediaStreamHandler.ts +11 -6
- package/src/rest/OAuthCallbackHandler.ts +25 -7
- package/src/rest/RESTEndpointHandler.ts +20 -15
- package/src/rest/RealtimeSdpBrokerHandler.ts +14 -4
- package/src/rest/SignatureWebhookHandler.ts +6 -1
- package/src/rest/UploadTokenManager.ts +66 -30
- package/src/rest/ViewOperationsHandler.ts +24 -4
- package/src/rest/mediaRange.ts +16 -6
- package/src/rest/setupRESTEndpoints.ts +24 -12
- package/src/serverExtensionReservedRoots.ts +6 -1
- package/src/services/TaskGraphActionRunner.ts +16 -15
- package/src/types.ts +21 -16
- package/src/util.ts +16 -6
|
@@ -34,7 +34,7 @@ import { buildProgressNote, CdpRemoteBrowserSession, type ComputerUseGoalProgres
|
|
|
34
34
|
* @param agentRunStepID Optional parent agent-run-step id (nests a child prompt step per prompt under it).
|
|
35
35
|
* @returns The MJ-aware params to hand to `MJComputerUseEngine.Run`.
|
|
36
36
|
*/
|
|
37
|
-
export function
|
|
37
|
+
export function BuildMJGoalParams(params: RunComputerUseParams, contextUser?: UserInfo, agentRunID?: string, agentRunStepID?: string): MJRunComputerUseParams {
|
|
38
38
|
const mjParams = Object.assign(new MJRunComputerUseParams(), params);
|
|
39
39
|
mjParams.ContextUser = contextUser;
|
|
40
40
|
mjParams.AgentRunId = agentRunID;
|
|
@@ -42,6 +42,11 @@ export function buildMJGoalParams(params: RunComputerUseParams, contextUser?: Us
|
|
|
42
42
|
return mjParams;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
/** @deprecated Use {@link BuildMJGoalParams}. */
|
|
46
|
+
export function buildMJGoalParams(params: RunComputerUseParams, contextUser?: UserInfo, agentRunID?: string, agentRunStepID?: string): MJRunComputerUseParams {
|
|
47
|
+
return BuildMJGoalParams(params, contextUser, agentRunID, agentRunStepID);
|
|
48
|
+
}
|
|
49
|
+
|
|
45
50
|
/**
|
|
46
51
|
* The MJ-aware goal engine bound in production. Extends {@link MJComputerUseEngine} (prompt-runner routing,
|
|
47
52
|
* vision-model auto-selection, credential resolution, media persistence) and satisfies the
|
|
@@ -75,7 +80,7 @@ export class MJProgressComputerUseEngine extends MJComputerUseEngine implements
|
|
|
75
80
|
* @returns The computer-use run result.
|
|
76
81
|
*/
|
|
77
82
|
public override async Run(params: RunComputerUseParams): Promise<ComputerUseResult> {
|
|
78
|
-
return super.Run(
|
|
83
|
+
return super.Run(BuildMJGoalParams(params, this.ContextUser, this.AgentRunID, this.AgentRunStepID));
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
protected override onStepComplete(step: StepRecord, params: MJRunComputerUseParams): void {
|
|
@@ -92,7 +97,7 @@ export class MJProgressComputerUseEngine extends MJComputerUseEngine implements
|
|
|
92
97
|
* @param configJson The session's `Config_` string.
|
|
93
98
|
* @returns The co-agent run id, or `undefined`.
|
|
94
99
|
*/
|
|
95
|
-
export function
|
|
100
|
+
export function ExtractCoAgentRunID(configJson: string | null | undefined): string | undefined {
|
|
96
101
|
if (!configJson) {
|
|
97
102
|
return undefined;
|
|
98
103
|
}
|
|
@@ -104,6 +109,11 @@ export function extractCoAgentRunID(configJson: string | null | undefined): stri
|
|
|
104
109
|
}
|
|
105
110
|
}
|
|
106
111
|
|
|
112
|
+
/** @deprecated Use {@link ExtractCoAgentRunID}. */
|
|
113
|
+
export function extractCoAgentRunID(configJson: string | null | undefined): string | undefined {
|
|
114
|
+
return ExtractCoAgentRunID(configJson);
|
|
115
|
+
}
|
|
116
|
+
|
|
107
117
|
/** Truncates a goal to a step-name-friendly length. */
|
|
108
118
|
function goalStepName(goal: string): string {
|
|
109
119
|
const trimmed = goal.trim();
|
|
@@ -122,7 +132,7 @@ function goalStepName(goal: string): string {
|
|
|
122
132
|
* @param goal The natural-language goal (becomes the step name).
|
|
123
133
|
* @returns The saved parent step (to finalize + nest under), or `null`.
|
|
124
134
|
*/
|
|
125
|
-
export async function
|
|
135
|
+
export async function BeginBrowserGoalStep(
|
|
126
136
|
provider: IMetadataProvider,
|
|
127
137
|
contextUser: UserInfo | undefined,
|
|
128
138
|
coAgentRunID: string | undefined,
|
|
@@ -152,6 +162,16 @@ export async function beginBrowserGoalStep(
|
|
|
152
162
|
}
|
|
153
163
|
}
|
|
154
164
|
|
|
165
|
+
/** @deprecated Use {@link BeginBrowserGoalStep}. */
|
|
166
|
+
export async function beginBrowserGoalStep(
|
|
167
|
+
provider: IMetadataProvider,
|
|
168
|
+
contextUser: UserInfo | undefined,
|
|
169
|
+
coAgentRunID: string | undefined,
|
|
170
|
+
goal: string,
|
|
171
|
+
): Promise<MJAIAgentRunStepEntity | null> {
|
|
172
|
+
return BeginBrowserGoalStep(provider, contextUser, coAgentRunID, goal);
|
|
173
|
+
}
|
|
174
|
+
|
|
155
175
|
/**
|
|
156
176
|
* Finalizes the parent browser-goal step from the goal outcome — `Completed`/`Failed` with an `OutputData`
|
|
157
177
|
* envelope of strategy/status/step-count/url. A no-op when `step` is `null`. Best-effort (logged, never thrown).
|
|
@@ -159,7 +179,7 @@ export async function beginBrowserGoalStep(
|
|
|
159
179
|
* @param step The parent step from {@link beginBrowserGoalStep} (or `null`).
|
|
160
180
|
* @param result The goal outcome.
|
|
161
181
|
*/
|
|
162
|
-
export async function
|
|
182
|
+
export async function FinalizeBrowserGoalStep(step: MJAIAgentRunStepEntity | null, result: RemoteBrowserGoalResult): Promise<void> {
|
|
163
183
|
if (!step) {
|
|
164
184
|
return;
|
|
165
185
|
}
|
|
@@ -177,6 +197,11 @@ export async function finalizeBrowserGoalStep(step: MJAIAgentRunStepEntity | nul
|
|
|
177
197
|
}
|
|
178
198
|
}
|
|
179
199
|
|
|
200
|
+
/** @deprecated Use {@link FinalizeBrowserGoalStep}. */
|
|
201
|
+
export async function finalizeBrowserGoalStep(step: MJAIAgentRunStepEntity | null, result: RemoteBrowserGoalResult): Promise<void> {
|
|
202
|
+
return FinalizeBrowserGoalStep(step, result);
|
|
203
|
+
}
|
|
204
|
+
|
|
180
205
|
/**
|
|
181
206
|
* Binds the CDP goal-engine factory to {@link MJProgressComputerUseEngine}. Idempotent and safe to call at
|
|
182
207
|
* startup; failures are logged (never thrown) so a binding hiccup can't abort server boot — goal runs would
|
|
@@ -48,7 +48,7 @@ const CACHE_MAX_AGE_SECONDS = 60;
|
|
|
48
48
|
* list so the browser falls back to its compiled `AUTH_TYPE` and the user can still sign in.
|
|
49
49
|
* Returning 500 would take the login screen down for a problem the client can route around.
|
|
50
50
|
*/
|
|
51
|
-
export function
|
|
51
|
+
export function CreateAuthProviderCatalogRouter(): Router {
|
|
52
52
|
const router = Router();
|
|
53
53
|
|
|
54
54
|
const limiter = rateLimit({
|
|
@@ -74,3 +74,8 @@ export function createAuthProviderCatalogRouter(): Router {
|
|
|
74
74
|
|
|
75
75
|
return router;
|
|
76
76
|
}
|
|
77
|
+
|
|
78
|
+
/** @deprecated Use {@link CreateAuthProviderCatalogRouter}. */
|
|
79
|
+
export function createAuthProviderCatalogRouter(): Router {
|
|
80
|
+
return CreateAuthProviderCatalogRouter();
|
|
81
|
+
}
|
|
@@ -12,7 +12,7 @@ vi.mock('../../config', () => ({
|
|
|
12
12
|
}));
|
|
13
13
|
|
|
14
14
|
import { AuthProviderFactory, IAuthProvider } from '@memberjunction/auth-providers';
|
|
15
|
-
import {
|
|
15
|
+
import { InitializeAuthProviders } from '../initializeProviders';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Test suite for backward compatibility of the new auth provider system
|
|
@@ -31,7 +31,7 @@ describe('Authentication Provider Backward Compatibility', () => {
|
|
|
31
31
|
|
|
32
32
|
describe('Configuration-Based Provider Initialization', () => {
|
|
33
33
|
it('should initialize with no providers when config is empty', () => {
|
|
34
|
-
|
|
34
|
+
InitializeAuthProviders();
|
|
35
35
|
|
|
36
36
|
// With empty authProviders array, no providers should be registered
|
|
37
37
|
expect(factory.hasProviders()).toBe(false);
|
|
@@ -53,7 +53,7 @@ describe('Authentication Provider Backward Compatibility', () => {
|
|
|
53
53
|
expect(factory.hasProviders()).toBe(true);
|
|
54
54
|
|
|
55
55
|
// Re-initialize clears everything
|
|
56
|
-
|
|
56
|
+
InitializeAuthProviders();
|
|
57
57
|
expect(factory.hasProviders()).toBe(false);
|
|
58
58
|
});
|
|
59
59
|
});
|
package/src/auth/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ export * from './scopeLimitedPrincipal.js';
|
|
|
14
14
|
export * from './actingContextResolver.js';
|
|
15
15
|
export * from './AuthProviderEngine.js';
|
|
16
16
|
export * from './AuthProviderCatalogRouter.js';
|
|
17
|
-
export { initializeAuthProviders, initializeAuthProvidersFromMetadata, refreshAuthProviders, validateAuthProvidersRegistered } from './initializeProviders.js';
|
|
17
|
+
export { InitializeAuthProviders, initializeAuthProviders, InitializeAuthProvidersFromMetadata, initializeAuthProvidersFromMetadata, RefreshAuthProviders, refreshAuthProviders, ValidateAuthProvidersRegistered, validateAuthProvidersRegistered } from './initializeProviders.js';
|
|
18
18
|
|
|
19
19
|
// This is a hard-coded forever constant due to internal migrations
|
|
20
20
|
|
|
@@ -58,7 +58,7 @@ const refreshUserCache = async () => {
|
|
|
58
58
|
* the same domain with different audiences/client IDs), all unique audiences
|
|
59
59
|
* are aggregated into an array. jwt.verify() natively accepts string | string[].
|
|
60
60
|
*/
|
|
61
|
-
export const
|
|
61
|
+
export const GetValidationOptions = (issuer: string): { audience: string | string[]; jwksUri: string } | undefined => {
|
|
62
62
|
const factory = AuthProviderFactory.Instance;
|
|
63
63
|
const providers = factory.getAllByIssuer(issuer);
|
|
64
64
|
|
|
@@ -75,16 +75,19 @@ export const getValidationOptions = (issuer: string): { audience: string | strin
|
|
|
75
75
|
};
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
+
/** @deprecated Use {@link GetValidationOptions}. */
|
|
79
|
+
export const getValidationOptions = GetValidationOptions;
|
|
80
|
+
|
|
78
81
|
/**
|
|
79
82
|
* Backward compatible validationOptions object
|
|
80
83
|
* @deprecated Use getValidationOptions() or AuthProviderRegistry instead
|
|
81
84
|
*/
|
|
82
85
|
export const validationOptions: Record<string, { audience: string | string[]; jwksUri: string }> = new Proxy({}, {
|
|
83
86
|
get: (target, prop: string) => {
|
|
84
|
-
return
|
|
87
|
+
return GetValidationOptions(prop);
|
|
85
88
|
},
|
|
86
89
|
has: (target, prop: string) => {
|
|
87
|
-
return
|
|
90
|
+
return GetValidationOptions(prop) !== undefined;
|
|
88
91
|
},
|
|
89
92
|
ownKeys: () => {
|
|
90
93
|
const factory = AuthProviderFactory.Instance;
|
|
@@ -93,31 +96,31 @@ export const validationOptions: Record<string, { audience: string | string[]; jw
|
|
|
93
96
|
});
|
|
94
97
|
|
|
95
98
|
export class UserPayload {
|
|
96
|
-
aio?: string;
|
|
97
|
-
aud?: string;
|
|
98
|
-
exp?: number;
|
|
99
|
-
iat?: number;
|
|
100
|
-
iss?: string;
|
|
101
|
-
name?: string;
|
|
102
|
-
nbf?: number;
|
|
103
|
-
nonce?: string;
|
|
104
|
-
oid?: string;
|
|
105
|
-
preferred_username?: string;
|
|
106
|
-
rh?: string;
|
|
107
|
-
sub?: string;
|
|
108
|
-
tid?: string;
|
|
109
|
-
uti?: string;
|
|
110
|
-
ver?: string;
|
|
111
|
-
email?: string;
|
|
112
|
-
given_name?: string;
|
|
113
|
-
family_name?: string;
|
|
99
|
+
aio?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
100
|
+
aud?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
101
|
+
exp?: number; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
102
|
+
iat?: number; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
103
|
+
iss?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
104
|
+
name?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
105
|
+
nbf?: number; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
106
|
+
nonce?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
107
|
+
oid?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
108
|
+
preferred_username?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
109
|
+
rh?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
110
|
+
sub?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
111
|
+
tid?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
112
|
+
uti?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
113
|
+
ver?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
114
|
+
email?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
115
|
+
given_name?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
116
|
+
family_name?: string; // case-violation-ok-legacy-back-compat: an accessor cannot be optional, so a stub would turn this into a required member
|
|
114
117
|
[key: string]: unknown; // Allow additional claims
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
/**
|
|
118
121
|
* Gets signing keys for JWT validation
|
|
119
122
|
*/
|
|
120
|
-
export const
|
|
123
|
+
export const GetSigningKeys = (issuer: string) => (header: JwtHeader, cb: SigningKeyCallback) => {
|
|
121
124
|
const factory = AuthProviderFactory.Instance;
|
|
122
125
|
|
|
123
126
|
// Initialize providers if not already done
|
|
@@ -138,10 +141,13 @@ export const getSigningKeys = (issuer: string) => (header: JwtHeader, cb: Signin
|
|
|
138
141
|
provider.getSigningKey(header, cb);
|
|
139
142
|
};
|
|
140
143
|
|
|
144
|
+
/** @deprecated Use {@link GetSigningKeys}. */
|
|
145
|
+
export const getSigningKeys = GetSigningKeys;
|
|
146
|
+
|
|
141
147
|
/**
|
|
142
148
|
* Extracts user information from JWT payload using the appropriate provider
|
|
143
149
|
*/
|
|
144
|
-
export const
|
|
150
|
+
export const ExtractUserInfoFromPayload = (payload: JwtPayload): {
|
|
145
151
|
email?: string;
|
|
146
152
|
firstName?: string;
|
|
147
153
|
lastName?: string;
|
|
@@ -181,20 +187,26 @@ export const extractUserInfoFromPayload = (payload: JwtPayload): {
|
|
|
181
187
|
return provider.extractUserInfo(payload);
|
|
182
188
|
};
|
|
183
189
|
|
|
184
|
-
|
|
190
|
+
/** @deprecated Use {@link ExtractUserInfoFromPayload}. */
|
|
191
|
+
export const extractUserInfoFromPayload = ExtractUserInfoFromPayload;
|
|
192
|
+
|
|
193
|
+
export const GetSystemUser = async (dataSource?: sql.ConnectionPool, attemptCacheUpdateIfNeeded: boolean = true): Promise<UserInfo> => {
|
|
185
194
|
const systemUser = UserCache.Instance.GetSystemUser();
|
|
186
195
|
if (!systemUser) {
|
|
187
196
|
if (dataSource && attemptCacheUpdateIfNeeded) {
|
|
188
197
|
console.warn(`System user not found in cache. Updating cache in attempt to find the user...`);
|
|
189
198
|
|
|
190
199
|
await refreshUserCache();
|
|
191
|
-
return
|
|
200
|
+
return GetSystemUser(dataSource, false); // try one more time but do not update cache next time if not found
|
|
192
201
|
}
|
|
193
202
|
throw new Error(`System user ID '${UserCache.Instance.SYSTEM_USER_ID}' not found in database`);
|
|
194
203
|
}
|
|
195
204
|
return systemUser;
|
|
196
205
|
};
|
|
197
206
|
|
|
207
|
+
/** @deprecated Use {@link GetSystemUser}. */
|
|
208
|
+
export const getSystemUser = GetSystemUser;
|
|
209
|
+
|
|
198
210
|
/**
|
|
199
211
|
* Extracts the lowercased domain portion of an email address.
|
|
200
212
|
*
|
|
@@ -231,7 +243,7 @@ const isDomainAuthorized = (domain: string): boolean =>
|
|
|
231
243
|
* authorization runs against the verified JWT's email domain instead. Retained for audit
|
|
232
244
|
* logging and for the recursive retry call.
|
|
233
245
|
*/
|
|
234
|
-
export const
|
|
246
|
+
export const VerifyUserRecord = async (
|
|
235
247
|
email?: string,
|
|
236
248
|
firstName?: string,
|
|
237
249
|
lastName?: string,
|
|
@@ -311,12 +323,15 @@ export const verifyUserRecord = async (
|
|
|
311
323
|
|
|
312
324
|
await refreshUserCache();
|
|
313
325
|
|
|
314
|
-
return
|
|
326
|
+
return VerifyUserRecord(email, firstName, lastName, requestDomain, dataSource, false); // try one more time but do not update cache next time if not found
|
|
315
327
|
}
|
|
316
328
|
}
|
|
317
329
|
|
|
318
330
|
return user;
|
|
319
331
|
};
|
|
320
332
|
|
|
333
|
+
/** @deprecated Use {@link VerifyUserRecord}. */
|
|
334
|
+
export const verifyUserRecord = VerifyUserRecord;
|
|
335
|
+
|
|
321
336
|
// Initialize providers on module load
|
|
322
337
|
initializeAuthProviders();
|
|
@@ -14,7 +14,7 @@ import { AuthProviderEngine } from './AuthProviderEngine.js';
|
|
|
14
14
|
* {@link initializeAuthProvidersFromMetadata}, which runs later in startup once a database
|
|
15
15
|
* connection and a system user exist.
|
|
16
16
|
*/
|
|
17
|
-
export function
|
|
17
|
+
export function InitializeAuthProviders(): void {
|
|
18
18
|
const factory = AuthProviderFactory.Instance;
|
|
19
19
|
|
|
20
20
|
// Clear any existing providers
|
|
@@ -60,6 +60,11 @@ export function initializeAuthProviders(): void {
|
|
|
60
60
|
// authProviders array at this point, and erroring here would cry wolf on every boot.
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/** @deprecated Use {@link InitializeAuthProviders}. */
|
|
64
|
+
export function initializeAuthProviders(): void {
|
|
65
|
+
return InitializeAuthProviders();
|
|
66
|
+
}
|
|
67
|
+
|
|
63
68
|
/**
|
|
64
69
|
* Layers the metadata provider catalog on top of the config-declared providers.
|
|
65
70
|
*
|
|
@@ -74,7 +79,7 @@ export function initializeAuthProviders(): void {
|
|
|
74
79
|
*
|
|
75
80
|
* @returns the number of providers registered from metadata.
|
|
76
81
|
*/
|
|
77
|
-
export async function
|
|
82
|
+
export async function InitializeAuthProvidersFromMetadata(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<number> {
|
|
78
83
|
try {
|
|
79
84
|
await AuthProviderEngine.Instance.Config(false, contextUser, provider);
|
|
80
85
|
const count = await AuthProviderEngine.Instance.RegisterAll(contextUser);
|
|
@@ -89,6 +94,11 @@ export async function initializeAuthProvidersFromMetadata(contextUser?: UserInfo
|
|
|
89
94
|
}
|
|
90
95
|
}
|
|
91
96
|
|
|
97
|
+
/** @deprecated Use {@link InitializeAuthProvidersFromMetadata}. */
|
|
98
|
+
export async function initializeAuthProvidersFromMetadata(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<number> {
|
|
99
|
+
return InitializeAuthProvidersFromMetadata(contextUser, provider);
|
|
100
|
+
}
|
|
101
|
+
|
|
92
102
|
/**
|
|
93
103
|
* Rebuilds the provider registry from scratch: config-declared providers first, then the
|
|
94
104
|
* metadata catalog layered on top — the same two-source order as startup.
|
|
@@ -119,7 +129,7 @@ export async function initializeAuthProvidersFromMetadata(contextUser?: UserInfo
|
|
|
119
129
|
*
|
|
120
130
|
* @returns the number of providers registered from metadata after the refresh.
|
|
121
131
|
*/
|
|
122
|
-
export async function
|
|
132
|
+
export async function RefreshAuthProviders(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<number> {
|
|
123
133
|
await AuthProviderEngine.Instance.Config(true, contextUser, provider);
|
|
124
134
|
|
|
125
135
|
// Probe the reloaded catalog BEFORE clearing anything: reading Providers throws
|
|
@@ -127,7 +137,7 @@ export async function refreshAuthProviders(contextUser?: UserInfo, provider?: IM
|
|
|
127
137
|
// failure must abort the refresh while the registry is still intact.
|
|
128
138
|
const pendingRows = AuthProviderEngine.Instance.Providers.length;
|
|
129
139
|
|
|
130
|
-
|
|
140
|
+
InitializeAuthProviders();
|
|
131
141
|
const count = await AuthProviderEngine.Instance.RegisterAll(contextUser);
|
|
132
142
|
LogStatus(
|
|
133
143
|
`[Auth] Provider registry refreshed — ${count} of ${pendingRows} metadata provider(s) registered on top of the config-declared set.`
|
|
@@ -135,6 +145,11 @@ export async function refreshAuthProviders(contextUser?: UserInfo, provider?: IM
|
|
|
135
145
|
return count;
|
|
136
146
|
}
|
|
137
147
|
|
|
148
|
+
/** @deprecated Use {@link RefreshAuthProviders}. */
|
|
149
|
+
export async function refreshAuthProviders(contextUser?: UserInfo, provider?: IMetadataProvider): Promise<number> {
|
|
150
|
+
return RefreshAuthProviders(contextUser, provider);
|
|
151
|
+
}
|
|
152
|
+
|
|
138
153
|
/**
|
|
139
154
|
* Reports whether any provider is registered, from either source, and logs a diagnostic when none
|
|
140
155
|
* is.
|
|
@@ -142,7 +157,7 @@ export async function refreshAuthProviders(contextUser?: UserInfo, provider?: IM
|
|
|
142
157
|
* Split out from {@link initializeAuthProviders} because "no providers" is only genuinely wrong
|
|
143
158
|
* once BOTH sources have had their turn.
|
|
144
159
|
*/
|
|
145
|
-
export function
|
|
160
|
+
export function ValidateAuthProvidersRegistered(): boolean {
|
|
146
161
|
const hasProviders = AuthProviderFactory.Instance.hasProviders();
|
|
147
162
|
if (!hasProviders) {
|
|
148
163
|
LogError(
|
|
@@ -152,3 +167,8 @@ export function validateAuthProvidersRegistered(): boolean {
|
|
|
152
167
|
}
|
|
153
168
|
return hasProviders;
|
|
154
169
|
}
|
|
170
|
+
|
|
171
|
+
/** @deprecated Use {@link ValidateAuthProvidersRegistered}. */
|
|
172
|
+
export function validateAuthProvidersRegistered(): boolean {
|
|
173
|
+
return ValidateAuthProvidersRegistered();
|
|
174
|
+
}
|
|
@@ -15,7 +15,7 @@ import { AuthProviderFactory } from '@memberjunction/auth-providers';
|
|
|
15
15
|
import { configInfo, type MagicLinkConfig } from '../../config.js';
|
|
16
16
|
import { MagicLinkKeyManager } from './MagicLinkKeys.js';
|
|
17
17
|
import { MagicLinkService } from './MagicLinkService.js';
|
|
18
|
-
import {
|
|
18
|
+
import { BuildRedeemLandingHtml } from './redeemLanding.js';
|
|
19
19
|
import type { CreateMagicLinkInviteParams, RedeemMagicLinkResult } from './types.js';
|
|
20
20
|
|
|
21
21
|
/** The mount path for both routers (`/magic-link`). */
|
|
@@ -28,7 +28,7 @@ export const MAGIC_LINK_JWKS_PATH = `${MAGIC_LINK_MOUNT_PATH}/jwks.json`;
|
|
|
28
28
|
* Builds the magic-link routers. The caller mounts `publicRouter` before the
|
|
29
29
|
* auth middleware and `authenticatedRouter` after it (both at MAGIC_LINK_MOUNT_PATH).
|
|
30
30
|
*/
|
|
31
|
-
export function
|
|
31
|
+
export function CreateMagicLinkHandler(publicUrl: string, config: MagicLinkConfig): {
|
|
32
32
|
publicRouter: Router;
|
|
33
33
|
authenticatedRouter: Router;
|
|
34
34
|
} {
|
|
@@ -113,7 +113,7 @@ export function createMagicLinkHandler(publicUrl: string, config: MagicLinkConfi
|
|
|
113
113
|
res
|
|
114
114
|
.status(200)
|
|
115
115
|
.type('html')
|
|
116
|
-
.send(
|
|
116
|
+
.send(BuildRedeemLandingHtml(token, `${MAGIC_LINK_MOUNT_PATH}/redeem`));
|
|
117
117
|
});
|
|
118
118
|
|
|
119
119
|
// POST /redeem performs the actual (side-effectful) redemption. Token arrives
|
|
@@ -151,7 +151,7 @@ export function createMagicLinkHandler(publicUrl: string, config: MagicLinkConfi
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
const body = (req.body ?? {}) as Partial<CreateMagicLinkInviteParams>;
|
|
154
|
-
if (!body.email || !body.
|
|
154
|
+
if (!body.email || !body.ApplicationId) {
|
|
155
155
|
res.status(400).json({ success: false, error: 'email and applicationId are required.' });
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
@@ -159,10 +159,10 @@ export function createMagicLinkHandler(publicUrl: string, config: MagicLinkConfi
|
|
|
159
159
|
const result = await service.CreateInvite(
|
|
160
160
|
{
|
|
161
161
|
email: body.email,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
162
|
+
ApplicationId: body.ApplicationId,
|
|
163
|
+
RoleId: body.RoleId,
|
|
164
|
+
ExpiresInHours: body.ExpiresInHours,
|
|
165
|
+
MaxUses: body.MaxUses,
|
|
166
166
|
firstName: body.firstName,
|
|
167
167
|
lastName: body.lastName,
|
|
168
168
|
},
|
|
@@ -177,6 +177,14 @@ export function createMagicLinkHandler(publicUrl: string, config: MagicLinkConfi
|
|
|
177
177
|
return { publicRouter, authenticatedRouter };
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
/** @deprecated Use {@link CreateMagicLinkHandler}. */
|
|
181
|
+
export function createMagicLinkHandler(publicUrl: string, config: MagicLinkConfig): {
|
|
182
|
+
publicRouter: Router;
|
|
183
|
+
authenticatedRouter: Router;
|
|
184
|
+
} {
|
|
185
|
+
return CreateMagicLinkHandler(publicUrl, config);
|
|
186
|
+
}
|
|
187
|
+
|
|
180
188
|
/**
|
|
181
189
|
* A minimal PUBLIC router that serves ONLY the JWKS endpoint (the magic-link
|
|
182
190
|
* signing key's public half). Mount this when the full magic-link flow is
|
|
@@ -186,7 +194,7 @@ export function createMagicLinkHandler(publicUrl: string, config: MagicLinkConfi
|
|
|
186
194
|
* request 401s. Assumes the key is already initialized (the widget handler does
|
|
187
195
|
* this via `MagicLinkKeyManager.Instance.Initialize` at startup).
|
|
188
196
|
*/
|
|
189
|
-
export function
|
|
197
|
+
export function CreateMagicLinkJwksRouter(): Router {
|
|
190
198
|
const router = Router();
|
|
191
199
|
router.get('/jwks.json', (_req: Request, res: Response) => {
|
|
192
200
|
res.status(200).json(MagicLinkKeyManager.Instance.GetJWKS());
|
|
@@ -194,6 +202,11 @@ export function createMagicLinkJwksRouter(): Router {
|
|
|
194
202
|
return router;
|
|
195
203
|
}
|
|
196
204
|
|
|
205
|
+
/** @deprecated Use {@link CreateMagicLinkJwksRouter}. */
|
|
206
|
+
export function createMagicLinkJwksRouter(): Router {
|
|
207
|
+
return CreateMagicLinkJwksRouter();
|
|
208
|
+
}
|
|
209
|
+
|
|
197
210
|
/**
|
|
198
211
|
* Registers the `magic-link` auth provider so MJServer's issuer-driven JWT
|
|
199
212
|
* validation accepts MJ-issued session tokens. Issuer = public URL, JWKS URL =
|
|
@@ -202,7 +215,7 @@ export function createMagicLinkJwksRouter(): Router {
|
|
|
202
215
|
* Also appends the provider to `configInfo.authProviders` so a later
|
|
203
216
|
* `initializeAuthProviders()` (which clears + repopulates from config) keeps it.
|
|
204
217
|
*/
|
|
205
|
-
export function
|
|
218
|
+
export function RegisterMagicLinkAuthProvider(publicUrl: string, config: MagicLinkConfig): void {
|
|
206
219
|
const base = publicUrl.replace(/\/$/, '');
|
|
207
220
|
const providerConfig: AuthProviderConfig = {
|
|
208
221
|
name: 'magic-link',
|
|
@@ -224,3 +237,8 @@ export function registerMagicLinkAuthProvider(publicUrl: string, config: MagicLi
|
|
|
224
237
|
LogError(`[MagicLink] Failed to register auth provider: ${e instanceof Error ? e.message : String(e)}`);
|
|
225
238
|
}
|
|
226
239
|
}
|
|
240
|
+
|
|
241
|
+
/** @deprecated Use {@link RegisterMagicLinkAuthProvider}. */
|
|
242
|
+
export function registerMagicLinkAuthProvider(publicUrl: string, config: MagicLinkConfig): void {
|
|
243
|
+
return RegisterMagicLinkAuthProvider(publicUrl, config);
|
|
244
|
+
}
|