@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.
- 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/exampleNewUserSubClass.js +2 -1
- package/dist/auth/exampleNewUserSubClass.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 +293 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -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 +266 -4
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +1304 -0
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +8 -2
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
- package/dist/generic/CacheInvalidationResolver.js +7 -3
- package/dist/generic/CacheInvalidationResolver.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 +27 -1
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +64 -6
- 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 +29 -6
- 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/FetchEntityVectorsResolver.js +2 -2
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
- 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/QuerySystemUserResolver.d.ts.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.js +2 -1
- package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
- package/dist/resolvers/RealtimeBridgeResolver.js +3 -3
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +37 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +101 -11
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- 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 +74 -42
- 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/SearchEntitiesResolver.d.ts.map +1 -1
- package/dist/resolvers/SearchEntitiesResolver.js +3 -1
- package/dist/resolvers/SearchEntitiesResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.d.ts +1 -0
- package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.js +5 -0
- package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeSystemUserResolver.d.ts.map +1 -1
- package/dist/resolvers/SearchKnowledgeSystemUserResolver.js +1 -0
- package/dist/resolvers/SearchKnowledgeSystemUserResolver.js.map +1 -1
- 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/TransactionGroupResolver.d.ts.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.js +53 -4
- package/dist/resolvers/TransactionGroupResolver.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/MJStorageBlobStore.d.ts +41 -0
- package/dist/services/MJStorageBlobStore.d.ts.map +1 -0
- package/dist/services/MJStorageBlobStore.js +160 -0
- package/dist/services/MJStorageBlobStore.js.map +1 -0
- 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 +12 -3
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +19 -8
- package/dist/util.js.map +1 -1
- package/package.json +92 -92
- 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__/RealtimeClientSessionResolver.test.ts +229 -0
- 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__/ResolverBase.isaPromotionCreate.test.ts +412 -0
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +228 -0
- package/src/__tests__/SearchEntitiesResolver.readOnlyFallback.test.ts +78 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +129 -0
- package/src/__tests__/TaskGraphFrameResolver.test.ts +2 -2
- package/src/__tests__/TransactionGroupResolver.refusals.test.ts +290 -0
- 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__/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/exampleNewUserSubClass.ts +2 -2
- 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 +14 -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 +933 -5
- package/src/generic/CacheInvalidationResolver.ts +12 -4
- package/src/generic/FireAndForgetHeartbeat.ts +19 -14
- package/src/generic/PushStatusResolver.ts +21 -7
- package/src/generic/ResolverBase.ts +66 -5
- package/src/generic/RunViewResolver.ts +22 -22
- package/src/generic/__tests__/FireAndForgetHeartbeat.test.ts +7 -7
- package/src/index.ts +34 -7
- 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/FetchEntityVectorsResolver.ts +2 -2
- 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/QuerySystemUserResolver.ts +2 -1
- package/src/resolvers/RealtimeBridgeResolver.ts +3 -3
- package/src/resolvers/RealtimeClientSessionResolver.ts +126 -13
- package/src/resolvers/RemoteBrowserActionResolver.ts +5 -5
- package/src/resolvers/RunAIAgentResolver.ts +118 -76
- package/src/resolvers/RunAIPromptResolver.ts +22 -22
- package/src/resolvers/RunTemplateResolver.ts +4 -4
- package/src/resolvers/RunTestResolver.ts +25 -25
- package/src/resolvers/SearchEntitiesResolver.ts +3 -1
- package/src/resolvers/SearchKnowledgeResolver.ts +4 -0
- package/src/resolvers/SearchKnowledgeSystemUserResolver.ts +1 -0
- package/src/resolvers/SqlLoggingConfigResolver.ts +56 -56
- package/src/resolvers/TaskGraphFrameResolver.ts +37 -28
- package/src/resolvers/TelemetryResolver.ts +79 -79
- package/src/resolvers/TransactionGroupResolver.ts +57 -4
- 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/MJStorageBlobStore.ts +209 -0
- package/src/services/TaskGraphActionRunner.ts +16 -15
- package/src/types.ts +21 -16
- package/src/util.ts +22 -9
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LogError, LogStatus } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* Operator control: `kill -HUP <pid>` (or `docker kill -s HUP`, `pm2 sendSignal SIGHUP`) makes a
|
|
4
|
+
* running MJAPI hard-reload its metadata from the database, without a restart and without a
|
|
5
|
+
* user-facing endpoint. SIGHUP is the conventional "reload" signal; SIGUSR1 is reserved by Node
|
|
6
|
+
* for the inspector.
|
|
7
|
+
*
|
|
8
|
+
* Only the global provider needs refreshing: per-request providers adopt the global provider's
|
|
9
|
+
* metadata on every request (ProviderBase.CopyMetadataFromGlobalProvider).
|
|
10
|
+
*/
|
|
11
|
+
export const METADATA_REFRESH_SIGNAL = 'SIGHUP';
|
|
12
|
+
/**
|
|
13
|
+
* Builds the signal handler. A signal that arrives while a refresh is still running is ignored
|
|
14
|
+
* (and logged) rather than stacked, so a burst of signals cannot queue a burst of full reloads.
|
|
15
|
+
* The handler never rejects — a failed refresh is logged.
|
|
16
|
+
*
|
|
17
|
+
* @param refresh - performs the hard reload, e.g. `() => Metadata.Provider.Refresh()`
|
|
18
|
+
*/
|
|
19
|
+
export function CreateMetadataRefreshSignalHandler(refresh) {
|
|
20
|
+
let inFlight = false;
|
|
21
|
+
return async () => {
|
|
22
|
+
if (inFlight) {
|
|
23
|
+
LogStatus(`🔄 ${METADATA_REFRESH_SIGNAL} received while a metadata refresh is already running; ignored. Send it again once the current refresh finishes.`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
inFlight = true;
|
|
27
|
+
LogStatus(`🔄 ${METADATA_REFRESH_SIGNAL} received, refreshing metadata from the database`);
|
|
28
|
+
try {
|
|
29
|
+
const ok = await refresh();
|
|
30
|
+
if (ok) {
|
|
31
|
+
LogStatus('✅ Metadata refreshed');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
LogError(`❌ ${METADATA_REFRESH_SIGNAL} metadata refresh reported failure`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
LogError(`❌ ${METADATA_REFRESH_SIGNAL} metadata refresh failed`, undefined, err);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
inFlight = false;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=metadataRefreshSignal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadataRefreshSignal.js","sourceRoot":"","sources":["../src/metadataRefreshSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,kCAAkC,CAAC,OAA+B;IAC9E,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO,KAAK,IAAI,EAAE;QACd,IAAI,QAAQ,EAAE,CAAC;YACX,SAAS,CAAC,MAAM,uBAAuB,kHAAkH,CAAC,CAAC;YAC3J,OAAO;QACX,CAAC;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,SAAS,CAAC,MAAM,uBAAuB,kDAAkD,CAAC,CAAC;QAC3F,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,OAAO,EAAE,CAAC;YAC3B,IAAI,EAAE,EAAE,CAAC;gBACL,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,KAAK,uBAAuB,oCAAoC,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,QAAQ,CAAC,KAAK,uBAAuB,0BAA0B,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACrF,CAAC;gBAAS,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC;QACrB,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -15,7 +15,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
15
15
|
import { RegisterClass } from '@memberjunction/global';
|
|
16
16
|
import { BaseServerMiddleware } from './BaseServerMiddleware.js';
|
|
17
17
|
import { configInfo } from '../config.js';
|
|
18
|
-
import {
|
|
18
|
+
import { CreateTenantMiddleware, CreateTenantPreRunViewHook, CreateTenantPreSaveHook } from '../multiTenancy/index.js';
|
|
19
19
|
let MJTenantFilterMiddleware = class MJTenantFilterMiddleware extends BaseServerMiddleware {
|
|
20
20
|
get Label() { return 'mj:tenantFilter'; }
|
|
21
21
|
/**
|
|
@@ -25,13 +25,13 @@ let MJTenantFilterMiddleware = class MJTenantFilterMiddleware extends BaseServer
|
|
|
25
25
|
return configInfo.multiTenancy?.enabled ?? false;
|
|
26
26
|
}
|
|
27
27
|
GetPostAuthMiddleware() {
|
|
28
|
-
return [
|
|
28
|
+
return [CreateTenantMiddleware(configInfo.multiTenancy)];
|
|
29
29
|
}
|
|
30
30
|
PreRunView(params, contextUser) {
|
|
31
|
-
return
|
|
31
|
+
return CreateTenantPreRunViewHook(configInfo.multiTenancy)(params, contextUser);
|
|
32
32
|
}
|
|
33
33
|
PreSave(entity, contextUser) {
|
|
34
|
-
return
|
|
34
|
+
return CreateTenantPreSaveHook(configInfo.multiTenancy)(entity, contextUser);
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
MJTenantFilterMiddleware = __decorate([
|
|
@@ -27,6 +27,8 @@ export type TenantContextExtractor = (user: UserInfo, req: Express.Request) => P
|
|
|
27
27
|
* By the time GraphQL resolvers or REST handlers run, the contextUser already
|
|
28
28
|
* has TenantContext set — no deferred pickup via `req['__mj_tenantId']` needed.
|
|
29
29
|
*/
|
|
30
|
+
export declare function CreateTenantMiddleware(config: MultiTenancyConfig): RequestHandler;
|
|
31
|
+
/** @deprecated Use {@link CreateTenantMiddleware}. */
|
|
30
32
|
export declare function createTenantMiddleware(config: MultiTenancyConfig): RequestHandler;
|
|
31
33
|
/**
|
|
32
34
|
* Attaches TenantContext to a UserInfo object.
|
|
@@ -39,11 +41,15 @@ export declare function createTenantMiddleware(config: MultiTenancyConfig): Requ
|
|
|
39
41
|
* so a future caller from a different source ('linkedEntity', 'custom') cannot
|
|
40
42
|
* reintroduce the injection path.
|
|
41
43
|
*/
|
|
44
|
+
export declare function AttachTenantContext(user: UserInfo, tenantId: string, source: TenantContext['Source']): void;
|
|
45
|
+
/** @deprecated Use {@link AttachTenantContext}. */
|
|
42
46
|
export declare function attachTenantContext(user: UserInfo, tenantId: string, source: TenantContext['Source']): void;
|
|
43
47
|
/**
|
|
44
48
|
* Creates a PreRunViewHook that auto-injects tenant WHERE clauses
|
|
45
49
|
* into RunView queries for scoped entities.
|
|
46
50
|
*/
|
|
51
|
+
export declare function CreateTenantPreRunViewHook(config: MultiTenancyConfig): PreRunViewHook;
|
|
52
|
+
/** @deprecated Use {@link CreateTenantPreRunViewHook}. */
|
|
47
53
|
export declare function createTenantPreRunViewHook(config: MultiTenancyConfig): PreRunViewHook;
|
|
48
54
|
/**
|
|
49
55
|
* Quotes an identifier for use in a tenant predicate via the active provider's
|
|
@@ -62,5 +68,7 @@ export declare function QuoteFilterIdentifier(name: string): string;
|
|
|
62
68
|
* match the user's TenantContext. In 'log' mode, warns but allows. In
|
|
63
69
|
* 'off' mode, this hook is a no-op.
|
|
64
70
|
*/
|
|
71
|
+
export declare function CreateTenantPreSaveHook(config: MultiTenancyConfig): PreSaveHook;
|
|
72
|
+
/** @deprecated Use {@link CreateTenantPreSaveHook}. */
|
|
65
73
|
export declare function createTenantPreSaveHook(config: MultiTenancyConfig): PreSaveHook;
|
|
66
74
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/multiTenancy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAgBvD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,gDAAgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,OAAO,CAAC,OAAO,KACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAqCjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,IAAI,CAKN;AAwCD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAgDrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAwC/E"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/multiTenancy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAY,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAgBvD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,gDAAgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,OAAO,CAAC,OAAO,KACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAqCjF;AAED,sDAAsD;AACtD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAEjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,IAAI,CAKN;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,IAAI,CAEN;AAwCD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAgDrF;AAED,0DAA0D;AAC1D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAErF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAwC/E;AAED,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAE/E"}
|
|
@@ -34,7 +34,7 @@ export function IsValidTenantId(tenantId) {
|
|
|
34
34
|
* By the time GraphQL resolvers or REST handlers run, the contextUser already
|
|
35
35
|
* has TenantContext set — no deferred pickup via `req['__mj_tenantId']` needed.
|
|
36
36
|
*/
|
|
37
|
-
export function
|
|
37
|
+
export function CreateTenantMiddleware(config) {
|
|
38
38
|
return (req, res, next) => {
|
|
39
39
|
const userPayload = req.userPayload;
|
|
40
40
|
if (!userPayload?.userRecord) {
|
|
@@ -64,13 +64,17 @@ export function createTenantMiddleware(config) {
|
|
|
64
64
|
// instance, and stamping it in place races concurrent requests for the
|
|
65
65
|
// same user (one request's tenant becomes another's, same-instant).
|
|
66
66
|
const sessionUser = CloneUserForSessionContext(userPayload.userRecord);
|
|
67
|
-
|
|
67
|
+
AttachTenantContext(sessionUser, tenantId, 'header');
|
|
68
68
|
userPayload.userRecord = sessionUser;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
next();
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
+
/** @deprecated Use {@link CreateTenantMiddleware}. */
|
|
75
|
+
export function createTenantMiddleware(config) {
|
|
76
|
+
return CreateTenantMiddleware(config);
|
|
77
|
+
}
|
|
74
78
|
/**
|
|
75
79
|
* Attaches TenantContext to a UserInfo object.
|
|
76
80
|
* Called from the GraphQL context function after authentication.
|
|
@@ -82,12 +86,16 @@ export function createTenantMiddleware(config) {
|
|
|
82
86
|
* so a future caller from a different source ('linkedEntity', 'custom') cannot
|
|
83
87
|
* reintroduce the injection path.
|
|
84
88
|
*/
|
|
85
|
-
export function
|
|
89
|
+
export function AttachTenantContext(user, tenantId, source) {
|
|
86
90
|
if (!IsValidTenantId(tenantId)) {
|
|
87
91
|
throw new Error(`Invalid tenant identifier (must match ${TENANT_ID_PATTERN})`);
|
|
88
92
|
}
|
|
89
93
|
user.TenantContext = { TenantID: tenantId, Source: source };
|
|
90
94
|
}
|
|
95
|
+
/** @deprecated Use {@link AttachTenantContext}. */
|
|
96
|
+
export function attachTenantContext(user, tenantId, source) {
|
|
97
|
+
return AttachTenantContext(user, tenantId, source);
|
|
98
|
+
}
|
|
91
99
|
/**
|
|
92
100
|
* Determines whether a given entity name should have tenant filtering applied.
|
|
93
101
|
*/
|
|
@@ -122,7 +130,7 @@ function isAdminUser(user, adminRoles) {
|
|
|
122
130
|
* Creates a PreRunViewHook that auto-injects tenant WHERE clauses
|
|
123
131
|
* into RunView queries for scoped entities.
|
|
124
132
|
*/
|
|
125
|
-
export function
|
|
133
|
+
export function CreateTenantPreRunViewHook(config) {
|
|
126
134
|
return (params, contextUser) => {
|
|
127
135
|
// No tenant context → no filtering
|
|
128
136
|
if (!contextUser?.TenantContext)
|
|
@@ -165,6 +173,10 @@ export function createTenantPreRunViewHook(config) {
|
|
|
165
173
|
return params;
|
|
166
174
|
};
|
|
167
175
|
}
|
|
176
|
+
/** @deprecated Use {@link CreateTenantPreRunViewHook}. */
|
|
177
|
+
export function createTenantPreRunViewHook(config) {
|
|
178
|
+
return CreateTenantPreRunViewHook(config);
|
|
179
|
+
}
|
|
168
180
|
/**
|
|
169
181
|
* Quotes an identifier for use in a tenant predicate via the active provider's
|
|
170
182
|
* QuoteIdentifier (DatabaseProviderBase always exposes one server-side, yielding [x]
|
|
@@ -188,7 +200,7 @@ export function QuoteFilterIdentifier(name) {
|
|
|
188
200
|
* match the user's TenantContext. In 'log' mode, warns but allows. In
|
|
189
201
|
* 'off' mode, this hook is a no-op.
|
|
190
202
|
*/
|
|
191
|
-
export function
|
|
203
|
+
export function CreateTenantPreSaveHook(config) {
|
|
192
204
|
return (entity, contextUser) => {
|
|
193
205
|
// No validation needed if write protection is off
|
|
194
206
|
if (config.writeProtection === 'off')
|
|
@@ -226,4 +238,8 @@ export function createTenantPreSaveHook(config) {
|
|
|
226
238
|
return true;
|
|
227
239
|
};
|
|
228
240
|
}
|
|
241
|
+
/** @deprecated Use {@link CreateTenantPreSaveHook}. */
|
|
242
|
+
export function createTenantPreSaveHook(config) {
|
|
243
|
+
return CreateTenantPreSaveHook(config);
|
|
244
|
+
}
|
|
229
245
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/multiTenancy/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/multiTenancy/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,11 @@ export declare const WIDGET_MOUNT_PATH = "/widget";
|
|
|
19
19
|
* `authenticatedRouter` at the same path AFTER it (the RV4 resolve-identity endpoint needs the
|
|
20
20
|
* verified principal from `req.userPayload`).
|
|
21
21
|
*/
|
|
22
|
+
export declare function CreateWidgetHandler(publicUrl: string, config: WidgetConfig): {
|
|
23
|
+
publicRouter: Router;
|
|
24
|
+
authenticatedRouter: Router;
|
|
25
|
+
};
|
|
26
|
+
/** @deprecated Use {@link CreateWidgetHandler}. */
|
|
22
27
|
export declare function createWidgetHandler(publicUrl: string, config: WidgetConfig): {
|
|
23
28
|
publicRouter: Router;
|
|
24
29
|
authenticatedRouter: Router;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetRouter.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/WidgetRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAGpE,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAM7D,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAyB3C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAqDlI"}
|
|
1
|
+
{"version":3,"file":"WidgetRouter.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/WidgetRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAGpE,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAM7D,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAyB3C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAqDlI;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAElI"}
|
|
@@ -14,9 +14,9 @@ import { rateLimit, ipKeyGenerator } from 'express-rate-limit';
|
|
|
14
14
|
import { LogStatus } from '@memberjunction/core';
|
|
15
15
|
import { configInfo } from '../config.js';
|
|
16
16
|
import { MagicLinkKeyManager } from '../auth/magicLink/MagicLinkKeys.js';
|
|
17
|
-
import {
|
|
17
|
+
import { RegisterMagicLinkAuthProvider } from '../auth/magicLink/MagicLinkRouter.js';
|
|
18
18
|
import { WidgetSessionService } from './WidgetSessionService.js';
|
|
19
|
-
import {
|
|
19
|
+
import { LooksLikeBot } from './widgetCore.js';
|
|
20
20
|
/** The mount path for the widget public router (`/widget`). */
|
|
21
21
|
export const WIDGET_MOUNT_PATH = '/widget';
|
|
22
22
|
/**
|
|
@@ -36,7 +36,7 @@ function ensureWidgetSigning(publicUrl, widgetConfig) {
|
|
|
36
36
|
// Register the magic-link provider against the magic-link config (its audience),
|
|
37
37
|
// which is what validates widget tokens. No-op if already registered.
|
|
38
38
|
if (mlConfig) {
|
|
39
|
-
|
|
39
|
+
RegisterMagicLinkAuthProvider(publicUrl, mlConfig);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
@@ -45,7 +45,7 @@ function ensureWidgetSigning(publicUrl, widgetConfig) {
|
|
|
45
45
|
* `authenticatedRouter` at the same path AFTER it (the RV4 resolve-identity endpoint needs the
|
|
46
46
|
* verified principal from `req.userPayload`).
|
|
47
47
|
*/
|
|
48
|
-
export function
|
|
48
|
+
export function CreateWidgetHandler(publicUrl, config) {
|
|
49
49
|
ensureWidgetSigning(publicUrl, config);
|
|
50
50
|
const service = new WidgetSessionService(publicUrl, config);
|
|
51
51
|
// Per-instance DYNAMIC mint limiter (W6 hardening): keyed by (widgetKey + IP) so each widget
|
|
@@ -90,6 +90,10 @@ export function createWidgetHandler(publicUrl, config) {
|
|
|
90
90
|
});
|
|
91
91
|
return { publicRouter, authenticatedRouter };
|
|
92
92
|
}
|
|
93
|
+
/** @deprecated Use {@link CreateWidgetHandler}. */
|
|
94
|
+
export function createWidgetHandler(publicUrl, config) {
|
|
95
|
+
return CreateWidgetHandler(publicUrl, config);
|
|
96
|
+
}
|
|
93
97
|
/** Reads the `widgetKey` from a parsed JSON body, or '' when absent (used to key the dynamic limiter). */
|
|
94
98
|
function readWidgetKey(req) {
|
|
95
99
|
const body = (req.body ?? {});
|
|
@@ -104,7 +108,7 @@ async function handleForget(service, req, res) {
|
|
|
104
108
|
res.status(400).json({ success: false, errorCode: 'not_found', error: 'widgetKey is required.' });
|
|
105
109
|
return;
|
|
106
110
|
}
|
|
107
|
-
const result = await service.ForgetVisitor({ widgetKey, visitorKey, origin: req.get('origin') ?? undefined });
|
|
111
|
+
const result = await service.ForgetVisitor({ WidgetKey: widgetKey, VisitorKey: visitorKey, origin: req.get('origin') ?? undefined });
|
|
108
112
|
res.status(result.success ? 200 : result.errorCode === 'server_error' ? 500 : 403).json(result);
|
|
109
113
|
}
|
|
110
114
|
/**
|
|
@@ -125,9 +129,9 @@ async function handleResolveIdentity(service, req, res) {
|
|
|
125
129
|
return;
|
|
126
130
|
}
|
|
127
131
|
const result = await service.ResolveVisitorIdentity({
|
|
128
|
-
widgetKey,
|
|
129
|
-
visitorKey,
|
|
130
|
-
|
|
132
|
+
WidgetKey: widgetKey,
|
|
133
|
+
VisitorKey: visitorKey,
|
|
134
|
+
VerifiedEmail: verifiedUser.Email,
|
|
131
135
|
origin: req.get('origin') ?? undefined,
|
|
132
136
|
});
|
|
133
137
|
res.status(result.success ? 200 : result.errorCode === 'server_error' ? 500 : 403).json(result);
|
|
@@ -141,7 +145,7 @@ async function handleUpgrade(service, req, res) {
|
|
|
141
145
|
res.status(400).json({ success: false, errorCode: 'not_found', error: 'widgetKey is required.' });
|
|
142
146
|
return;
|
|
143
147
|
}
|
|
144
|
-
const result = await service.RequestUpgrade({ widgetKey, email, origin: req.get('origin') ?? undefined });
|
|
148
|
+
const result = await service.RequestUpgrade({ WidgetKey: widgetKey, email, origin: req.get('origin') ?? undefined });
|
|
145
149
|
// 400 for a bad email (client can fix it); 403 for any policy rejection (uniform, non-enumerable); 500 for faults.
|
|
146
150
|
const status = result.success ? 200 : result.errorCode === 'invalid_email' ? 400 : result.errorCode === 'server_error' ? 500 : 403;
|
|
147
151
|
res.status(status).json(result);
|
|
@@ -156,7 +160,7 @@ async function handleMint(service, req, res, refresh) {
|
|
|
156
160
|
}
|
|
157
161
|
// W6 hardening: coarse bot/automation rejection before any DB lookup or token mint. Returns the same
|
|
158
162
|
// 403 as a policy rejection so a probe can't distinguish "bot-blocked" from "bad key/origin".
|
|
159
|
-
if (
|
|
163
|
+
if (LooksLikeBot(req.get('user-agent'))) {
|
|
160
164
|
res.status(403).json({ success: false, errorCode: 'origin_not_allowed', error: 'Widget mint rejected.' });
|
|
161
165
|
return;
|
|
162
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetRouter.js","sourceRoot":"","sources":["../../src/realtimeWidget/WidgetRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAA+B,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAA+B,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,SAAiB,EAAE,YAA0B;IACxE,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;IACtC,+EAA+E;IAC/E,6DAA6D;IAC7D,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtE,SAAS,CACP,uCAAuC,YAAY,CAAC,QAAQ,8BAA8B,QAAQ,CAAC,QAAQ,MAAM;YACjH,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACjE,iFAAiF;IACjF,sEAAsE;IACtE,IAAI,QAAQ,EAAE,CAAC;QACb,6BAA6B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,MAAoB;IACzE,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE5D,6FAA6F;IAC7F,iGAAiG;IACjG,kGAAkG;IAClG,kGAAkG;IAClG,kFAAkF;IAClF,MAAM,WAAW,GAAG,SAAS,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,iBAAiB;QAClC,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,KAAK;QACpB,0FAA0F;QAC1F,wFAAwF;QACxF,yFAAyF;QACzF,2FAA2F;QAC3F,YAAY,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;QACnG,KAAK,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE,CAAC,OAAO,CAAC,2BAA2B,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtF,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,oDAAoD,EAAE;KACpH,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;IAE9B,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACvF,MAAM,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC/F,MAAM,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,oGAAoG;IACpG,6FAA6F;IAC7F,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACvF,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,qGAAqG;IACrG,wFAAwF;IACxF,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACtF,MAAM,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,sGAAsG;IACtG,wGAAwG;IACxG,MAAM,mBAAmB,GAAG,MAAM,EAAE,CAAC;IACrC,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACvG,MAAM,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAC/C,CAAC;AAED,0GAA0G;AAC1G,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA2B,CAAC;IACxD,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,uFAAuF;AACvF,KAAK,UAAU,YAAY,CAAC,OAA6B,EAAE,GAAY,EAAE,GAAa;IACpF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAgD,CAAC;IAC7E,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAClG,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetRouter.js","sourceRoot":"","sources":["../../src/realtimeWidget/WidgetRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,11 +96,11 @@ export interface MintGuestSessionResult {
|
|
|
96
96
|
/** Input to resolve a returning visitor's identity after they verify (RV4, magic-link upgrade path). */
|
|
97
97
|
export interface ResolveVisitorIdentityInput {
|
|
98
98
|
/** The widget's public embed key. */
|
|
99
|
-
|
|
99
|
+
WidgetKey: string;
|
|
100
100
|
/** The durable returning-visitor anchor whose trail should be promoted to the verified identity. */
|
|
101
|
-
|
|
101
|
+
VisitorKey: string;
|
|
102
102
|
/** The verified visitor's email (from the authenticated session) — resolved to a record via config. */
|
|
103
|
-
|
|
103
|
+
VerifiedEmail: string;
|
|
104
104
|
/** The request's Origin header — enforced against the instance allowlist. */
|
|
105
105
|
origin?: string;
|
|
106
106
|
}
|
|
@@ -117,9 +117,9 @@ export interface ResolveVisitorIdentityResult {
|
|
|
117
117
|
/** Input to a "forget me" request (RV5). */
|
|
118
118
|
export interface ForgetVisitorInput {
|
|
119
119
|
/** The widget's public embed key. */
|
|
120
|
-
|
|
120
|
+
WidgetKey: string;
|
|
121
121
|
/** The durable returning-visitor anchor to forget. */
|
|
122
|
-
|
|
122
|
+
VisitorKey: string;
|
|
123
123
|
/** The request's Origin header — enforced against the instance allowlist. */
|
|
124
124
|
origin?: string;
|
|
125
125
|
}
|
|
@@ -136,7 +136,7 @@ export interface ForgetVisitorResult {
|
|
|
136
136
|
/** Input to request a magic-link identity upgrade for a live guest session (W5). */
|
|
137
137
|
export interface UpgradeGuestSessionInput {
|
|
138
138
|
/** The widget's public embed key. */
|
|
139
|
-
|
|
139
|
+
WidgetKey: string;
|
|
140
140
|
/** The email to send the verification link to (becomes the provisioned user's email). */
|
|
141
141
|
email: string;
|
|
142
142
|
/** The request's Origin header — enforced against the instance allowlist. */
|
|
@@ -17,13 +17,13 @@ import { Metadata, RunView, LogError, LogStatus } from '@memberjunction/core';
|
|
|
17
17
|
import { MJLruCache, UUIDsEqual } from '@memberjunction/global';
|
|
18
18
|
import { ResolveConfiguredPrincipal } from '../auth/principals.js';
|
|
19
19
|
import { MagicLinkKeyManager } from '../auth/magicLink/MagicLinkKeys.js';
|
|
20
|
-
import {
|
|
20
|
+
import { GenerateSessionId } from '../auth/magicLink/magicLinkCore.js';
|
|
21
21
|
import { MagicLinkService } from '../auth/magicLink/MagicLinkService.js';
|
|
22
22
|
import { configInfo } from '../config.js';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
23
|
+
import { BuildWidgetGuestClaims, EvaluateWidgetMint, ParseEnabledChannels } from './widgetCore.js';
|
|
24
|
+
import { VerifyHostAssertion } from './host-identity.js';
|
|
25
|
+
import { WriteReturningVisitorRecap } from '../agentSessions/ReturningVisitorRecap.js';
|
|
26
|
+
import { ResolveIdentityByEmail, MergeVisitorIdentity, ForgetVisitor } from './visitorIdentity.js';
|
|
27
27
|
const WIDGET_ENTITY = 'MJ: Conversation Widget Instances';
|
|
28
28
|
const CONVERSATIONS_ENTITY = 'MJ: Conversations';
|
|
29
29
|
/** Shape of the durable visitor anchor key (opaque base64url, same alphabet as generateSessionId). */
|
|
@@ -69,7 +69,7 @@ export class WidgetSessionService {
|
|
|
69
69
|
if (!widget) {
|
|
70
70
|
return this.audited({ success: false, errorCode: 'not_found', error: 'Unknown widget key.' }, input, undefined);
|
|
71
71
|
}
|
|
72
|
-
const eligibility =
|
|
72
|
+
const eligibility = EvaluateWidgetMint({ Status: widget.Status, AllowedOrigins: widget.AllowedOrigins, Modality: widget.Modality }, input.origin);
|
|
73
73
|
if (!eligibility.ok) {
|
|
74
74
|
return this.audited({ success: false, errorCode: eligibility.errorCode, error: 'Widget mint rejected.' }, input, widget);
|
|
75
75
|
}
|
|
@@ -172,11 +172,11 @@ export class WidgetSessionService {
|
|
|
172
172
|
if (!contextUser) {
|
|
173
173
|
return { success: false, errorCode: 'server_error', error: 'Server not configured for widget sessions.' };
|
|
174
174
|
}
|
|
175
|
-
const widget = await this.loadWidgetByKey(input.
|
|
175
|
+
const widget = await this.loadWidgetByKey(input.WidgetKey, contextUser);
|
|
176
176
|
if (!widget) {
|
|
177
177
|
return { success: false, errorCode: 'not_found', error: 'Unknown widget key.' };
|
|
178
178
|
}
|
|
179
|
-
const eligibility =
|
|
179
|
+
const eligibility = EvaluateWidgetMint({ Status: widget.Status, AllowedOrigins: widget.AllowedOrigins, Modality: widget.Modality }, input.origin);
|
|
180
180
|
if (!eligibility.ok) {
|
|
181
181
|
return { success: false, errorCode: eligibility.errorCode, error: 'Widget upgrade rejected.' };
|
|
182
182
|
}
|
|
@@ -189,7 +189,7 @@ export class WidgetSessionService {
|
|
|
189
189
|
return { success: false, errorCode: 'server_error', error: 'Identity verification is not configured.' };
|
|
190
190
|
}
|
|
191
191
|
const service = new MagicLinkService(this.publicUrl, magicLinkConfig);
|
|
192
|
-
const result = await service.CreateInvite({ email,
|
|
192
|
+
const result = await service.CreateInvite({ email, ApplicationId: widget.ApplicationID }, contextUser);
|
|
193
193
|
if (!result.success) {
|
|
194
194
|
LogError(`[Widget] Upgrade invite failed for widget ${widget.ID}: ${result.error ?? result.errorCode ?? 'unknown'}`);
|
|
195
195
|
return { success: false, errorCode: 'server_error', error: 'Could not start identity verification.' };
|
|
@@ -212,9 +212,9 @@ export class WidgetSessionService {
|
|
|
212
212
|
// Prefer the per-instance HostPublicKey column (Phase 3 — no config-resident keys); fall back to the
|
|
213
213
|
// interim config map (keyed by PublicKey) for deployments that haven't migrated their key yet.
|
|
214
214
|
const hostKey = widget.HostPublicKey ?? this.config.hostPublicKeys?.[widget.PublicKey];
|
|
215
|
-
const result =
|
|
216
|
-
if (result.ok && result.
|
|
217
|
-
return result.
|
|
215
|
+
const result = VerifyHostAssertion(assertion, hostKey, widget.PublicKey);
|
|
216
|
+
if (result.ok && result.Identity) {
|
|
217
|
+
return result.Identity;
|
|
218
218
|
}
|
|
219
219
|
LogError(`[Widget] Host assertion rejected for widget ${widget.ID}: ${result.errorCode ?? 'unknown'}`);
|
|
220
220
|
return null;
|
|
@@ -225,8 +225,8 @@ export class WidgetSessionService {
|
|
|
225
225
|
const ttlMinutes = widget.SessionTTLMinutes || this.config.defaultSessionTtlMinutes;
|
|
226
226
|
// Generated once and returned to the client: the widget stamps Conversation.ExternalID with
|
|
227
227
|
// this id so the Widget Guest RLS filters ({{ScopeResourceID}}) isolate this guest's rows.
|
|
228
|
-
const sessionId =
|
|
229
|
-
const claims =
|
|
228
|
+
const sessionId = GenerateSessionId();
|
|
229
|
+
const claims = BuildWidgetGuestClaims({
|
|
230
230
|
issuer: this.publicUrl,
|
|
231
231
|
audience: this.config.audience,
|
|
232
232
|
widgetId: widget.ID,
|
|
@@ -260,7 +260,7 @@ export class WidgetSessionService {
|
|
|
260
260
|
sessionId,
|
|
261
261
|
// Phase 2: which interactive channels this widget may attach during a voice session. Read from the
|
|
262
262
|
// per-instance EnabledChannels column (added by the Widget_Public_Hardening migration + CodeGen).
|
|
263
|
-
enabledChannels:
|
|
263
|
+
enabledChannels: ParseEnabledChannels(widget.EnabledChannels),
|
|
264
264
|
voiceMaxSessionMinutes: widget.VoiceMaxSessionMinutes ?? undefined,
|
|
265
265
|
rememberReturningVisitors: !!returningVisitor,
|
|
266
266
|
visitorKey: returningVisitor?.visitorKey,
|
|
@@ -279,11 +279,11 @@ export class WidgetSessionService {
|
|
|
279
279
|
if (!widget.RememberReturningVisitors || !hostIdentity?.email || !returningVisitor?.visitorKey) {
|
|
280
280
|
return undefined;
|
|
281
281
|
}
|
|
282
|
-
const identity = await
|
|
282
|
+
const identity = await ResolveIdentityByEmail(hostIdentity.email, contextUser, Metadata.Provider, this.config.identityResolution); // global-provider-ok: server-side mint under the single default provider
|
|
283
283
|
if (!identity) {
|
|
284
284
|
return undefined;
|
|
285
285
|
}
|
|
286
|
-
await
|
|
286
|
+
await MergeVisitorIdentity({
|
|
287
287
|
visitorKey: returningVisitor.visitorKey,
|
|
288
288
|
applicationId: widget.ApplicationID,
|
|
289
289
|
identity,
|
|
@@ -300,17 +300,17 @@ export class WidgetSessionService {
|
|
|
300
300
|
*/
|
|
301
301
|
async ResolveVisitorIdentity(input) {
|
|
302
302
|
try {
|
|
303
|
-
const gate = await this.gateVisitorPrivacyRequest(input.
|
|
303
|
+
const gate = await this.gateVisitorPrivacyRequest(input.WidgetKey, input.VisitorKey, input.origin);
|
|
304
304
|
if (!gate.ok) {
|
|
305
305
|
return { success: false, errorCode: gate.errorCode, error: gate.error };
|
|
306
306
|
}
|
|
307
|
-
const identity = await
|
|
307
|
+
const identity = await ResolveIdentityByEmail(input.VerifiedEmail, gate.contextUser, Metadata.Provider, this.config.identityResolution); // global-provider-ok: server-side mint under the single default provider
|
|
308
308
|
if (!identity) {
|
|
309
309
|
// Verified, but no record matches the email under the configured target — nothing to merge.
|
|
310
310
|
return { success: true, mergedConversations: 0 };
|
|
311
311
|
}
|
|
312
|
-
const mergedConversations = await
|
|
313
|
-
visitorKey: input.
|
|
312
|
+
const mergedConversations = await MergeVisitorIdentity({
|
|
313
|
+
visitorKey: input.VisitorKey,
|
|
314
314
|
applicationId: gate.widget.ApplicationID,
|
|
315
315
|
identity,
|
|
316
316
|
contextUser: gate.contextUser,
|
|
@@ -330,12 +330,12 @@ export class WidgetSessionService {
|
|
|
330
330
|
*/
|
|
331
331
|
async ForgetVisitor(input) {
|
|
332
332
|
try {
|
|
333
|
-
const gate = await this.gateVisitorPrivacyRequest(input.
|
|
333
|
+
const gate = await this.gateVisitorPrivacyRequest(input.WidgetKey, input.VisitorKey, input.origin);
|
|
334
334
|
if (!gate.ok) {
|
|
335
335
|
return { success: false, errorCode: gate.errorCode, error: gate.error };
|
|
336
336
|
}
|
|
337
|
-
const { notesArchived, conversationsCleared } = await
|
|
338
|
-
visitorKey: input.
|
|
337
|
+
const { notesArchived, conversationsCleared } = await ForgetVisitor({
|
|
338
|
+
visitorKey: input.VisitorKey,
|
|
339
339
|
applicationId: gate.widget.ApplicationID,
|
|
340
340
|
contextUser: gate.contextUser,
|
|
341
341
|
provider: Metadata.Provider, // global-provider-ok: server-side mint under the single default provider
|
|
@@ -361,7 +361,7 @@ export class WidgetSessionService {
|
|
|
361
361
|
if (!widget) {
|
|
362
362
|
return { ok: false, errorCode: 'not_found', error: 'Unknown widget key.' };
|
|
363
363
|
}
|
|
364
|
-
const eligibility =
|
|
364
|
+
const eligibility = EvaluateWidgetMint({ Status: widget.Status, AllowedOrigins: widget.AllowedOrigins, Modality: widget.Modality }, origin);
|
|
365
365
|
if (!eligibility.ok) {
|
|
366
366
|
return { ok: false, errorCode: eligibility.errorCode ?? 'server_error', error: 'Widget request rejected.' };
|
|
367
367
|
}
|
|
@@ -386,7 +386,7 @@ export class WidgetSessionService {
|
|
|
386
386
|
}
|
|
387
387
|
const presented = (presentedKey ?? '').trim();
|
|
388
388
|
const isReturning = VISITOR_KEY_PATTERN.test(presented);
|
|
389
|
-
const visitorKey = isReturning ? presented :
|
|
389
|
+
const visitorKey = isReturning ? presented : GenerateSessionId();
|
|
390
390
|
const lastConversationId = isReturning
|
|
391
391
|
? await this.findPreviousConversationByVisitorKey(visitorKey, widget.ApplicationID, contextUser)
|
|
392
392
|
: undefined;
|
|
@@ -406,7 +406,7 @@ export class WidgetSessionService {
|
|
|
406
406
|
return;
|
|
407
407
|
}
|
|
408
408
|
// global-provider-ok: server-side mint under the single default provider (same rationale as resolveGuestRoleName).
|
|
409
|
-
await
|
|
409
|
+
await WriteReturningVisitorRecap(priorConversationId, widget.PinnedAgentID, contextUser, Metadata.Provider, // global-provider-ok: server-side mint under the single default provider
|
|
410
410
|
widget.VisitorMemoryRetentionDays);
|
|
411
411
|
}
|
|
412
412
|
/**
|
|
@@ -26,7 +26,7 @@ export interface HostAssertedIdentity {
|
|
|
26
26
|
/** Result of verifying a host assertion. `identity` is present iff `ok` is true. */
|
|
27
27
|
export interface HostAssertionResult {
|
|
28
28
|
ok: boolean;
|
|
29
|
-
|
|
29
|
+
Identity?: HostAssertedIdentity;
|
|
30
30
|
errorCode?: HostAssertionError;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
@@ -34,7 +34,11 @@ export interface HostAssertionResult {
|
|
|
34
34
|
* asserted visitor identity. Thin adapter over {@link HostIdentityProvider.VerifyHostAssertion} (the single
|
|
35
35
|
* implementation, registered in the AuthProviderFactory) preserving this module's result shape. Never throws.
|
|
36
36
|
*/
|
|
37
|
+
export declare function VerifyHostAssertion(assertion: string | undefined, hostPublicKeyPem: string | undefined, expectedAudience: string): HostAssertionResult;
|
|
38
|
+
/** @deprecated Use {@link VerifyHostAssertion}. */
|
|
37
39
|
export declare function verifyHostAssertion(assertion: string | undefined, hostPublicKeyPem: string | undefined, expectedAudience: string): HostAssertionResult;
|
|
38
40
|
/** Pulls the visitor identity from a verified host-assertion payload (delegates to the provider). */
|
|
41
|
+
export declare function ExtractHostIdentity(payload: jwt.JwtPayload): HostAssertedIdentity;
|
|
42
|
+
/** @deprecated Use {@link ExtractHostIdentity}. */
|
|
39
43
|
export declare function extractHostIdentity(payload: jwt.JwtPayload): HostAssertedIdentity;
|
|
40
44
|
//# sourceMappingURL=host-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-identity.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/host-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE/F,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,6FAA6F;AAC7F,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAeD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,gBAAgB,EAAE,MAAM,GACzB,mBAAmB,CAcrB;AAED,qGAAqG;AACrG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,oBAAoB,CAQjF"}
|
|
1
|
+
{"version":3,"file":"host-identity.d.ts","sourceRoot":"","sources":["../../src/realtimeWidget/host-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE/F,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,6FAA6F;AAC7F,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAClC;AAeD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,gBAAgB,EAAE,MAAM,GACzB,mBAAmB,CAcrB;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,gBAAgB,EAAE,MAAM,GACzB,mBAAmB,CAErB;AAED,qGAAqG;AACrG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,oBAAoB,CAQjF;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,oBAAoB,CAEjF"}
|