@memberjunction/server 6.2.0-edge.4 → 6.2.0-edge.6
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/README.md +47 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentSessions/SessionJanitor.d.ts +91 -30
- package/dist/agentSessions/SessionJanitor.d.ts.map +1 -1
- package/dist/agentSessions/SessionJanitor.js +311 -81
- package/dist/agentSessions/SessionJanitor.js.map +1 -1
- package/dist/agentSessions/SessionManager.d.ts +17 -3
- package/dist/agentSessions/SessionManager.d.ts.map +1 -1
- package/dist/agentSessions/SessionManager.js +44 -10
- package/dist/agentSessions/SessionManager.js.map +1 -1
- package/dist/apiRoot.d.ts +32 -0
- package/dist/apiRoot.d.ts.map +1 -0
- package/dist/apiRoot.js +67 -0
- package/dist/apiRoot.js.map +1 -0
- package/dist/auth/AuthProviderCatalogRouter.d.ts.map +1 -1
- package/dist/auth/AuthProviderCatalogRouter.js +27 -0
- package/dist/auth/AuthProviderCatalogRouter.js.map +1 -1
- package/dist/auth/LoginScreenEngine.d.ts +22 -0
- package/dist/auth/LoginScreenEngine.d.ts.map +1 -0
- package/dist/auth/LoginScreenEngine.js +57 -0
- package/dist/auth/LoginScreenEngine.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +52 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/initializeProviders.d.ts +10 -0
- package/dist/auth/initializeProviders.d.ts.map +1 -1
- package/dist/auth/initializeProviders.js +37 -1
- package/dist/auth/initializeProviders.js.map +1 -1
- package/dist/auth/localDevAuth.d.ts +79 -0
- package/dist/auth/localDevAuth.d.ts.map +1 -0
- package/dist/auth/localDevAuth.js +439 -0
- package/dist/auth/localDevAuth.js.map +1 -0
- package/dist/auth/magicLink/MagicLinkKeys.d.ts +2 -2
- package/dist/auth/magicLink/MagicLinkKeys.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkKeys.js +1 -1
- package/dist/auth/magicLink/MagicLinkKeys.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.d.ts.map +1 -1
- package/dist/auth/magicLink/MagicLinkRouter.js +3 -2
- package/dist/auth/magicLink/MagicLinkRouter.js.map +1 -1
- package/dist/auth/magicLink/types.d.ts +12 -0
- package/dist/auth/magicLink/types.d.ts.map +1 -1
- package/dist/auth/sessionUserClone.d.ts +1 -1
- package/dist/auth/sessionUserClone.d.ts.map +1 -1
- package/dist/auth/sessionUserClone.js +3 -2
- package/dist/auth/sessionUserClone.js.map +1 -1
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts +292 -0
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.d.ts.map +1 -0
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js +442 -0
- package/dist/broadcast/BaseCacheInvalidationBroadcastProvider.js.map +1 -0
- package/dist/broadcast/index.d.ts +6 -0
- package/dist/broadcast/index.d.ts.map +1 -0
- package/dist/broadcast/index.js +6 -0
- package/dist/broadcast/index.js.map +1 -0
- package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.d.ts +43 -0
- package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.d.ts.map +1 -0
- package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.js +144 -0
- package/dist/broadcast/providers/AWSIoTCoreBroadcastProvider.js.map +1 -0
- package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.d.ts +46 -0
- package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.d.ts.map +1 -0
- package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.js +149 -0
- package/dist/broadcast/providers/AzureWebPubSubBroadcastProvider.js.map +1 -0
- package/dist/broadcast/providers/GCPPubSubBroadcastProvider.d.ts +49 -0
- package/dist/broadcast/providers/GCPPubSubBroadcastProvider.d.ts.map +1 -0
- package/dist/broadcast/providers/GCPPubSubBroadcastProvider.js +131 -0
- package/dist/broadcast/providers/GCPPubSubBroadcastProvider.js.map +1 -0
- package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.d.ts +24 -0
- package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.d.ts.map +1 -0
- package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.js +51 -0
- package/dist/broadcast/providers/SequencedRoleBucketBroadcastProvider.js.map +1 -0
- package/dist/cache.d.ts +3 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +632 -22
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +104 -4
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +3 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +29 -8
- package/dist/context.js.map +1 -1
- package/dist/coreRoutes.d.ts +29 -0
- package/dist/coreRoutes.d.ts.map +1 -0
- package/dist/coreRoutes.js +156 -0
- package/dist/coreRoutes.js.map +1 -0
- package/dist/generated/graphql-schemas/__mj.d.ts +1016 -29
- package/dist/generated/graphql-schemas/__mj.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj.js +5125 -434
- package/dist/generated/graphql-schemas/__mj.js.map +1 -1
- package/dist/generic/CacheInvalidationResolver.d.ts +85 -30
- package/dist/generic/CacheInvalidationResolver.d.ts.map +1 -1
- package/dist/generic/CacheInvalidationResolver.js +175 -60
- package/dist/generic/CacheInvalidationResolver.js.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.d.ts.map +1 -1
- package/dist/generic/OrphanedConversationDetailReconciler.js +2 -0
- package/dist/generic/OrphanedConversationDetailReconciler.js.map +1 -1
- package/dist/generic/PubSubManager.d.ts +10 -0
- package/dist/generic/PubSubManager.d.ts.map +1 -1
- package/dist/generic/PubSubManager.js +44 -1
- package/dist/generic/PubSubManager.js.map +1 -1
- package/dist/generic/PushStatusResolver.d.ts +39 -6
- package/dist/generic/PushStatusResolver.d.ts.map +1 -1
- package/dist/generic/PushStatusResolver.js +94 -12
- package/dist/generic/PushStatusResolver.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +168 -69
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +464 -405
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/generic/RunViewResolver.d.ts +11 -3
- package/dist/generic/RunViewResolver.d.ts.map +1 -1
- package/dist/generic/RunViewResolver.js +91 -13
- package/dist/generic/RunViewResolver.js.map +1 -1
- package/dist/generic/actionOutputFieldSecurity.d.ts +26 -0
- package/dist/generic/actionOutputFieldSecurity.d.ts.map +1 -0
- package/dist/generic/actionOutputFieldSecurity.js +47 -0
- package/dist/generic/actionOutputFieldSecurity.js.map +1 -0
- package/dist/generic/fieldSecurityTransport.d.ts +30 -0
- package/dist/generic/fieldSecurityTransport.d.ts.map +1 -0
- package/dist/generic/fieldSecurityTransport.js +30 -0
- package/dist/generic/fieldSecurityTransport.js.map +1 -0
- package/dist/globalCors.d.ts +33 -0
- package/dist/globalCors.d.ts.map +1 -0
- package/dist/globalCors.js +58 -0
- package/dist/globalCors.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +230 -222
- package/dist/index.js.map +1 -1
- package/dist/integration/CustomColumnPromoter.d.ts.map +1 -1
- package/dist/integration/CustomColumnPromoter.js +6 -1
- package/dist/integration/CustomColumnPromoter.js.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.d.ts +12 -0
- package/dist/logging/variablesLoggingMiddleware.d.ts.map +1 -1
- package/dist/logging/variablesLoggingMiddleware.js +50 -1
- package/dist/logging/variablesLoggingMiddleware.js.map +1 -1
- package/dist/multiTenancy/index.d.ts.map +1 -1
- package/dist/multiTenancy/index.js +22 -2
- package/dist/multiTenancy/index.js.map +1 -1
- package/dist/realtimeSessions/RealtimeSessionVerificationService.d.ts.map +1 -1
- package/dist/realtimeSessions/RealtimeSessionVerificationService.js +2 -1
- package/dist/realtimeSessions/RealtimeSessionVerificationService.js.map +1 -1
- package/dist/realtimeSessions/RealtimeVerifyRouter.d.ts.map +1 -1
- package/dist/realtimeSessions/RealtimeVerifyRouter.js +2 -1
- package/dist/realtimeSessions/RealtimeVerifyRouter.js.map +1 -1
- package/dist/realtimeSessions/RecordingAssemblyScheduler.d.ts +100 -0
- package/dist/realtimeSessions/RecordingAssemblyScheduler.d.ts.map +1 -0
- package/dist/realtimeSessions/RecordingAssemblyScheduler.js +173 -0
- package/dist/realtimeSessions/RecordingAssemblyScheduler.js.map +1 -0
- package/dist/realtimeSessions/SessionVerificationPortsBase.d.ts.map +1 -1
- package/dist/realtimeSessions/SessionVerificationPortsBase.js +1 -0
- package/dist/realtimeSessions/SessionVerificationPortsBase.js.map +1 -1
- package/dist/realtimeSessions/index.d.ts +2 -0
- package/dist/realtimeSessions/index.d.ts.map +1 -1
- package/dist/realtimeSessions/index.js +2 -0
- package/dist/realtimeSessions/index.js.map +1 -1
- package/dist/realtimeSessions/ownedRealtimeSession.d.ts +32 -0
- package/dist/realtimeSessions/ownedRealtimeSession.d.ts.map +1 -0
- package/dist/realtimeSessions/ownedRealtimeSession.js +56 -0
- package/dist/realtimeSessions/ownedRealtimeSession.js.map +1 -0
- package/dist/realtimeSessions/sessionAccess.d.ts +91 -8
- package/dist/realtimeSessions/sessionAccess.d.ts.map +1 -1
- package/dist/realtimeSessions/sessionAccess.js +127 -20
- package/dist/realtimeSessions/sessionAccess.js.map +1 -1
- package/dist/realtimeSessions/sessionConfigStamps.js +1 -1
- package/dist/realtimeSessions/sessionConfigStamps.js.map +1 -1
- package/dist/realtimeSessions/subscriptionAuthorization.d.ts.map +1 -1
- package/dist/realtimeSessions/subscriptionAuthorization.js +5 -2
- package/dist/realtimeSessions/subscriptionAuthorization.js.map +1 -1
- package/dist/realtimeSessions/verificationWorkflow.d.ts +2 -0
- package/dist/realtimeSessions/verificationWorkflow.d.ts.map +1 -1
- package/dist/realtimeSessions/verificationWorkflow.js +1 -1
- package/dist/realtimeSessions/verificationWorkflow.js.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetRouter.js +19 -3
- package/dist/realtimeWidget/WidgetRouter.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.d.ts +67 -7
- package/dist/realtimeWidget/WidgetSessionService.d.ts.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.js +201 -19
- package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
- package/dist/realtimeWidget/host-identity.d.ts +1 -1
- package/dist/realtimeWidget/host-identity.js +1 -1
- package/dist/realtimeWidget/widgetCore.d.ts +20 -1
- package/dist/realtimeWidget/widgetCore.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetCore.js +17 -1
- package/dist/realtimeWidget/widgetCore.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.d.ts.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +2 -1
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts +19 -1
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +63 -12
- package/dist/resolvers/ActionResolver.js.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.d.ts.map +1 -1
- package/dist/resolvers/AdhocQueryResolver.js +1 -0
- package/dist/resolvers/AdhocQueryResolver.js.map +1 -1
- package/dist/resolvers/AgentRunStatusPublisher.d.ts +18 -4
- package/dist/resolvers/AgentRunStatusPublisher.d.ts.map +1 -1
- package/dist/resolvers/AgentRunStatusPublisher.js +32 -8
- package/dist/resolvers/AgentRunStatusPublisher.js.map +1 -1
- package/dist/resolvers/AgentSessionResolver.d.ts +10 -4
- package/dist/resolvers/AgentSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/AgentSessionResolver.js +40 -17
- package/dist/resolvers/AgentSessionResolver.js.map +1 -1
- package/dist/resolvers/ArtifactFileResolver.d.ts +5 -1
- package/dist/resolvers/ArtifactFileResolver.d.ts.map +1 -1
- package/dist/resolvers/ArtifactFileResolver.js +9 -7
- package/dist/resolvers/ArtifactFileResolver.js.map +1 -1
- package/dist/resolvers/ConversationRunEventsResolver.d.ts +8 -4
- package/dist/resolvers/ConversationRunEventsResolver.d.ts.map +1 -1
- package/dist/resolvers/ConversationRunEventsResolver.js +6 -6
- package/dist/resolvers/ConversationRunEventsResolver.js.map +1 -1
- package/dist/resolvers/DatasetResolver.d.ts +24 -3
- package/dist/resolvers/DatasetResolver.d.ts.map +1 -1
- package/dist/resolvers/DatasetResolver.js +57 -8
- package/dist/resolvers/DatasetResolver.js.map +1 -1
- package/dist/resolvers/EntityCommunicationsResolver.d.ts +13 -1
- package/dist/resolvers/EntityCommunicationsResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityCommunicationsResolver.js +50 -14
- package/dist/resolvers/EntityCommunicationsResolver.js.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.d.ts +2 -1
- package/dist/resolvers/EntityRecordNameResolver.d.ts.map +1 -1
- package/dist/resolvers/EntityRecordNameResolver.js +3 -2
- package/dist/resolvers/EntityRecordNameResolver.js.map +1 -1
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts +46 -3
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -1
- package/dist/resolvers/FetchEntityVectorsResolver.js +211 -50
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -1
- package/dist/resolvers/FileCategoryResolver.d.ts.map +1 -1
- package/dist/resolvers/FileCategoryResolver.js +1 -0
- package/dist/resolvers/FileCategoryResolver.js.map +1 -1
- package/dist/resolvers/FileResolver.d.ts +87 -11
- package/dist/resolvers/FileResolver.d.ts.map +1 -1
- package/dist/resolvers/FileResolver.js +292 -105
- package/dist/resolvers/FileResolver.js.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.d.ts +33 -7
- package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.js +117 -38
- package/dist/resolvers/GetDataContextDataResolver.js.map +1 -1
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js +6 -3
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +49 -9
- package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts +8 -1
- package/dist/resolvers/MergeRecordsResolver.d.ts.map +1 -1
- package/dist/resolvers/MergeRecordsResolver.js +31 -3
- package/dist/resolvers/MergeRecordsResolver.js.map +1 -1
- package/dist/resolvers/PipelineProgressResolver.d.ts +6 -0
- package/dist/resolvers/PipelineProgressResolver.d.ts.map +1 -1
- package/dist/resolvers/PipelineProgressResolver.js +5 -3
- package/dist/resolvers/PipelineProgressResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts +2 -0
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +33 -6
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.d.ts +2 -0
- package/dist/resolvers/QuerySystemUserResolver.d.ts.map +1 -1
- package/dist/resolvers/QuerySystemUserResolver.js +15 -6
- package/dist/resolvers/QuerySystemUserResolver.js.map +1 -1
- package/dist/resolvers/RSUResolver.d.ts.map +1 -1
- package/dist/resolvers/RSUResolver.js +12 -0
- package/dist/resolvers/RSUResolver.js.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +18 -10
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +92 -54
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.d.ts.map +1 -1
- package/dist/resolvers/RemoteBrowserActionResolver.js +11 -9
- package/dist/resolvers/RemoteBrowserActionResolver.js.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.d.ts +56 -8
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +241 -67
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/RunTemplateResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTemplateResolver.js +4 -4
- package/dist/resolvers/RunTemplateResolver.js.map +1 -1
- package/dist/resolvers/RunTestResolver.d.ts.map +1 -1
- package/dist/resolvers/RunTestResolver.js +3 -1
- package/dist/resolvers/RunTestResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts +12 -1
- package/dist/resolvers/SearchKnowledgeStreamResolver.d.ts.map +1 -1
- package/dist/resolvers/SearchKnowledgeStreamResolver.js +15 -2
- package/dist/resolvers/SearchKnowledgeStreamResolver.js.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +2 -3
- package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
- package/dist/resolvers/SyncDataResolver.d.ts.map +1 -1
- package/dist/resolvers/SyncDataResolver.js +4 -0
- package/dist/resolvers/SyncDataResolver.js.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts +2 -1
- package/dist/resolvers/TaskGraphFrameResolver.d.ts.map +1 -1
- package/dist/resolvers/TaskGraphFrameResolver.js +28 -1
- package/dist/resolvers/TaskGraphFrameResolver.js.map +1 -1
- package/dist/resolvers/TestQuerySQLResolver.d.ts +24 -0
- package/dist/resolvers/TestQuerySQLResolver.d.ts.map +1 -1
- package/dist/resolvers/TestQuerySQLResolver.js +66 -13
- package/dist/resolvers/TestQuerySQLResolver.js.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.d.ts +34 -2
- package/dist/resolvers/TransactionGroupResolver.d.ts.map +1 -1
- package/dist/resolvers/TransactionGroupResolver.js +150 -27
- package/dist/resolvers/TransactionGroupResolver.js.map +1 -1
- package/dist/resolvers/UserViewResolver.d.ts +1 -1
- package/dist/resolvers/UserViewResolver.d.ts.map +1 -1
- package/dist/resolvers/UserViewResolver.js +2 -1
- package/dist/resolvers/UserViewResolver.js.map +1 -1
- package/dist/resolvers/agent-run-data-guard.d.ts +31 -0
- package/dist/resolvers/agent-run-data-guard.d.ts.map +1 -0
- package/dist/resolvers/agent-run-data-guard.js +72 -0
- package/dist/resolvers/agent-run-data-guard.js.map +1 -0
- package/dist/rest/EntityCRUDHandler.d.ts +6 -0
- package/dist/rest/EntityCRUDHandler.d.ts.map +1 -1
- package/dist/rest/EntityCRUDHandler.js +19 -5
- package/dist/rest/EntityCRUDHandler.js.map +1 -1
- package/dist/rest/RESTEndpointHandler.d.ts.map +1 -1
- package/dist/rest/RESTEndpointHandler.js +8 -5
- package/dist/rest/RESTEndpointHandler.js.map +1 -1
- package/dist/rest/RealtimeRecordingHandler.d.ts +49 -0
- package/dist/rest/RealtimeRecordingHandler.d.ts.map +1 -0
- package/dist/rest/RealtimeRecordingHandler.js +383 -0
- package/dist/rest/RealtimeRecordingHandler.js.map +1 -0
- package/dist/rest/ViewOperationsHandler.d.ts +9 -1
- package/dist/rest/ViewOperationsHandler.d.ts.map +1 -1
- package/dist/rest/ViewOperationsHandler.js +43 -17
- package/dist/rest/ViewOperationsHandler.js.map +1 -1
- package/dist/rest/setupRESTEndpoints.d.ts +6 -0
- package/dist/rest/setupRESTEndpoints.d.ts.map +1 -1
- package/dist/rest/setupRESTEndpoints.js +6 -0
- package/dist/rest/setupRESTEndpoints.js.map +1 -1
- package/dist/serverExtensionReservedRoots.d.ts +12 -10
- package/dist/serverExtensionReservedRoots.d.ts.map +1 -1
- package/dist/serverExtensionReservedRoots.js +14 -17
- package/dist/serverExtensionReservedRoots.js.map +1 -1
- package/dist/serverRoleConfigUnits.d.ts +29 -0
- package/dist/serverRoleConfigUnits.d.ts.map +1 -0
- package/dist/serverRoleConfigUnits.js +33 -0
- package/dist/serverRoleConfigUnits.js.map +1 -0
- package/dist/services/MJStorageBlobStore.d.ts +8 -1
- package/dist/services/MJStorageBlobStore.d.ts.map +1 -1
- package/dist/services/MJStorageBlobStore.js +25 -19
- package/dist/services/MJStorageBlobStore.js.map +1 -1
- package/dist/services/StartTaskGraphDispatcher.js +2 -2
- package/dist/services/StartTaskGraphDispatcher.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +5 -3
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphActionRunner.js +27 -5
- package/dist/services/TaskGraphActionRunner.js.map +1 -1
- package/dist/services/TaskGraphAgentRunner.d.ts +14 -2
- package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphAgentRunner.js +157 -9
- package/dist/services/TaskGraphAgentRunner.js.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.d.ts +59 -2
- package/dist/services/TaskGraphContinuationDeliverer.d.ts.map +1 -1
- package/dist/services/TaskGraphContinuationDeliverer.js +626 -16
- package/dist/services/TaskGraphContinuationDeliverer.js.map +1 -1
- package/dist/sharedCache.d.ts.map +1 -1
- package/dist/sharedCache.js +3 -0
- package/dist/sharedCache.js.map +1 -1
- package/dist/types.d.ts +23 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +99 -98
- package/src/__tests__/ActionResolver.fieldSecurity.test.ts +237 -0
- package/src/__tests__/AdhocQueryResolver.dialect.test.ts +137 -0
- package/src/__tests__/AgentRunStatusPublisher.test.ts +49 -0
- package/src/__tests__/AgentSessionResolver.ownership.test.ts +137 -0
- package/src/__tests__/CustomColumnPromoterOnePass.test.ts +15 -1
- package/src/__tests__/DatasetResolver.itemFilters.test.ts +201 -0
- package/src/__tests__/EntityCommunicationsResolver.actingUser.test.ts +151 -0
- package/src/__tests__/EntityRecordNameResolver.rowSecurity.test.ts +152 -0
- package/src/__tests__/EvolutionActsOnWhatItDetects.test.ts +113 -0
- package/src/__tests__/FetchEntityVectorsResolver.test.ts +369 -18
- package/src/__tests__/FileResolver.fieldSecurity.test.ts +82 -0
- package/src/__tests__/FileResolver.storageAccess.test.ts +562 -0
- package/src/__tests__/GetDataContextDataResolver.sqlItems.test.ts +416 -0
- package/src/__tests__/ListOperationsResolver.adhocScreen.test.ts +137 -0
- package/src/__tests__/LoginScreenEngine.test.ts +86 -0
- package/src/__tests__/MJStorageBlobStore.storageGate.test.ts +63 -0
- package/src/__tests__/PipelineProgressResolver.filter.test.ts +58 -0
- package/src/__tests__/QuerySystemUserResolver.fieldSecurity.test.ts +49 -0
- package/src/__tests__/RESTEndpointHandler.test.ts +25 -0
- package/src/__tests__/RealtimeClientSessionResolver.configTamper.test.ts +23 -3
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +324 -46
- package/src/__tests__/RecordingAssemblyScheduler.test.ts +178 -0
- package/src/__tests__/RemoteBrowserActionResolver.ownership.test.ts +98 -0
- package/src/__tests__/ResolverBase.adhocReadScope.test.ts +133 -2
- package/src/__tests__/ResolverBase.balancedClause.test.ts +155 -0
- package/src/__tests__/ResolverBase.clauseUnscopedRead.test.ts +127 -0
- package/src/__tests__/ResolverBase.clientOldValues.test.ts +243 -7
- package/src/__tests__/ResolverBase.deleteReturnProjection.test.ts +52 -0
- package/src/__tests__/ResolverBase.entityMessageRelay.test.ts +176 -0
- package/src/__tests__/ResolverBase.filterEscaping.test.ts +5 -2
- package/src/__tests__/ResolverBase.includeBinaryFields.test.ts +23 -1
- package/src/__tests__/ResolverBase.publishStatusUpdate.test.ts +68 -0
- package/src/__tests__/ResolverBase.userViewCacheAndDedup.test.ts +130 -0
- package/src/__tests__/RunAIAgentResolver.branch.test.ts +69 -13
- package/src/__tests__/RunAIAgentResolver.conversationWriter.test.ts +210 -0
- package/src/__tests__/RunAIAgentResolver.fireAndForgetCompletion.test.ts +209 -0
- package/src/__tests__/RunAIAgentResolver.historyFrom.test.ts +20 -28
- package/src/__tests__/RunAIAgentResolver.runDataGuard.test.ts +264 -0
- package/src/__tests__/RunAIAgentResolver.serverReply.test.ts +358 -0
- package/src/__tests__/RunAIAgentResolver.stoppedPredecessor.test.ts +4 -1
- package/src/__tests__/RunTemplateResolver.test.ts +35 -2
- package/src/__tests__/RunViewResolver.cacheCheckForwarding.test.ts +11 -0
- package/src/__tests__/RunViewResolver.cacheCheckScreen.test.ts +165 -0
- package/src/__tests__/SearchKnowledgeStreamResolver.test.ts +161 -0
- package/src/__tests__/SessionJanitor.test.ts +365 -10
- package/src/__tests__/SessionManager.test.ts +122 -0
- package/src/__tests__/TaskGraphActionRunner.durablePayload.test.ts +25 -0
- package/src/__tests__/TaskGraphAgentRunner.test.ts +266 -0
- package/src/__tests__/TaskGraphContinuationDeliverer.test.ts +468 -23
- package/src/__tests__/TaskGraphFrameResolver.test.ts +22 -0
- package/src/__tests__/TestQuerySQLResolver.test.ts +274 -0
- package/src/__tests__/TransactionGroupResolver.fieldSecurity.test.ts +199 -0
- package/src/__tests__/TransactionGroupResolver.refusals.test.ts +98 -1
- package/src/__tests__/UpdateMJDataContextItem.oldValues.test.ts +220 -0
- package/src/__tests__/UserViewResolver.updateWhereClause.test.ts +15 -0
- package/src/__tests__/ViewOperationsHandler.clauseScreen.test.ts +157 -0
- package/src/__tests__/ViewOperationsHandler.test.ts +7 -2
- package/src/__tests__/WidgetSessionService.test.ts +583 -4
- package/src/__tests__/agent-run-data-guard.test.ts +130 -0
- package/src/__tests__/apiRootBoot.test.ts +202 -0
- package/src/__tests__/buildMagicLinkSessionUser.test.ts +96 -0
- package/src/__tests__/cacheBroadcastProviders.test.ts +403 -0
- package/src/__tests__/cacheInvalidationRecordData.test.ts +109 -0
- package/src/__tests__/conversationRunEvents.test.ts +56 -14
- package/src/__tests__/fieldSecurityFixtures.ts +91 -0
- package/src/__tests__/globalCors.test.ts +217 -0
- package/src/__tests__/localDevAuth.test.ts +196 -0
- package/src/__tests__/multiTenancy.postgresRewrite.test.ts +181 -0
- package/src/__tests__/multiTenancy.security.test.ts +51 -0
- package/src/__tests__/multiTenancy.test.ts +1 -1
- package/src/__tests__/orphanedConversationDetailReconciler.test.ts +10 -0
- package/src/__tests__/ownedRealtimeSession.test.ts +39 -0
- package/src/__tests__/pushStatusResolver.filter.test.ts +64 -1
- package/src/__tests__/realtimeRecordingHandler.test.ts +669 -0
- package/src/__tests__/realtimeSessions/RealtimeSessionEventsResolver.test.ts +29 -1
- package/src/__tests__/realtimeSessions/ownedRealtimeSession.anonymous.test.ts +31 -0
- package/src/__tests__/realtimeSessions/ownedRealtimeSession.namedScoped.test.ts +37 -0
- package/src/__tests__/realtimeSessions/sessionAccess.test.ts +146 -7
- package/src/__tests__/realtimeSessions/sessionConfigStamps.test.ts +1 -1
- package/src/__tests__/realtimeSessions/verificationWorkflow.test.ts +25 -4
- package/src/__tests__/resolverBase.cloudEventChangedFields.test.ts +157 -0
- package/src/__tests__/resolverBase.fieldSecurityTransport.test.ts +222 -0
- package/src/__tests__/resolverBase.fls.test.ts +146 -97
- package/src/__tests__/restTransport.fieldSecurity.test.ts +148 -0
- package/src/__tests__/runParamsTimeZone.test.ts +179 -0
- package/src/__tests__/runStreams.fieldSecurity.test.ts +100 -0
- package/src/__tests__/runViewProperties.test.ts +114 -0
- package/src/__tests__/scalabilityBenchmarks.test.ts +765 -0
- package/src/__tests__/scalabilityDatabaseIntegration.test.ts +207 -0
- package/src/__tests__/serverExtensionHostOverlay.test.ts +66 -0
- package/src/__tests__/serverExtensionReservedRoots.test.ts +11 -98
- package/src/__tests__/sessionUserClone.test.ts +5 -1
- package/src/__tests__/sharedCache.test.ts +5 -3
- package/src/__tests__/startupSweepOrder.test.ts +40 -0
- package/src/__tests__/unifiedAuth.test.ts +28 -0
- package/src/__tests__/widgetGuestElevation.test.ts +2 -0
- package/src/agentSessions/SessionJanitor.ts +369 -93
- package/src/agentSessions/SessionManager.ts +45 -10
- package/src/apiRoot.ts +78 -0
- package/src/auth/AuthProviderCatalogRouter.ts +29 -0
- package/src/auth/LoginScreenEngine.ts +50 -0
- package/src/auth/index.ts +57 -12
- package/src/auth/initializeProviders.ts +43 -1
- package/src/auth/localDevAuth.ts +528 -0
- package/src/auth/magicLink/MagicLinkKeys.ts +2 -2
- package/src/auth/magicLink/MagicLinkRouter.ts +3 -2
- package/src/auth/magicLink/types.ts +10 -0
- package/src/auth/sessionUserClone.ts +3 -2
- package/src/broadcast/BaseCacheInvalidationBroadcastProvider.ts +674 -0
- package/src/broadcast/index.ts +5 -0
- package/src/broadcast/providers/AWSIoTCoreBroadcastProvider.ts +180 -0
- package/src/broadcast/providers/AzureWebPubSubBroadcastProvider.ts +182 -0
- package/src/broadcast/providers/GCPPubSubBroadcastProvider.ts +169 -0
- package/src/broadcast/providers/SequencedRoleBucketBroadcastProvider.ts +57 -0
- package/src/cache.ts +2 -1
- package/src/config.ts +115 -5
- package/src/context.ts +32 -8
- package/src/coreRoutes.ts +181 -0
- package/src/generated/graphql-schemas/__mj.ts +3684 -284
- package/src/generic/CacheInvalidationResolver.ts +172 -60
- package/src/generic/OrphanedConversationDetailReconciler.ts +4 -2
- package/src/generic/PubSubManager.ts +54 -1
- package/src/generic/PushStatusResolver.ts +109 -12
- package/src/generic/ResolverBase.ts +540 -431
- package/src/generic/RunViewResolver.ts +97 -15
- package/src/generic/actionOutputFieldSecurity.ts +75 -0
- package/src/generic/fieldSecurityTransport.ts +62 -0
- package/src/globalCors.ts +71 -0
- package/src/index.ts +239 -238
- package/src/integration/CustomColumnPromoter.ts +6 -1
- package/src/logging/variablesLoggingMiddleware.ts +59 -3
- package/src/multiTenancy/index.ts +24 -2
- package/src/realtimeSessions/README.md +7 -3
- package/src/realtimeSessions/RealtimeSessionVerificationService.ts +2 -1
- package/src/realtimeSessions/RealtimeVerifyRouter.ts +2 -1
- package/src/realtimeSessions/RecordingAssemblyScheduler.ts +234 -0
- package/src/realtimeSessions/SessionVerificationPortsBase.ts +1 -0
- package/src/realtimeSessions/index.ts +2 -0
- package/src/realtimeSessions/ownedRealtimeSession.ts +69 -0
- package/src/realtimeSessions/sessionAccess.ts +183 -23
- package/src/realtimeSessions/sessionConfigStamps.ts +1 -1
- package/src/realtimeSessions/subscriptionAuthorization.ts +4 -2
- package/src/realtimeSessions/verificationWorkflow.ts +3 -1
- package/src/realtimeWidget/WidgetRouter.ts +22 -4
- package/src/realtimeWidget/WidgetSessionService.ts +252 -17
- package/src/realtimeWidget/host-identity.ts +1 -1
- package/src/realtimeWidget/widgetCore.ts +30 -1
- package/src/realtimeWidget/widgetGuestElevation.ts +2 -1
- package/src/resolvers/ActionResolver.ts +78 -15
- package/src/resolvers/AdhocQueryResolver.ts +1 -0
- package/src/resolvers/AgentRunStatusPublisher.ts +36 -8
- package/src/resolvers/AgentSessionResolver.ts +46 -18
- package/src/resolvers/ArtifactFileResolver.ts +9 -8
- package/src/resolvers/ConversationRunEventsResolver.ts +15 -11
- package/src/resolvers/DatasetResolver.ts +70 -10
- package/src/resolvers/EntityCommunicationsResolver.ts +56 -15
- package/src/resolvers/EntityRecordNameResolver.ts +3 -2
- package/src/resolvers/FetchEntityVectorsResolver.ts +248 -55
- package/src/resolvers/FileCategoryResolver.ts +1 -0
- package/src/resolvers/FileResolver.ts +334 -109
- package/src/resolvers/GetDataContextDataResolver.ts +139 -41
- package/src/resolvers/GetDataResolver.ts +6 -3
- package/src/resolvers/IntegrationDiscoveryResolver.ts +53 -9
- package/src/resolvers/MergeRecordsResolver.ts +23 -2
- package/src/resolvers/PipelineProgressResolver.ts +12 -3
- package/src/resolvers/QueryResolver.ts +31 -6
- package/src/resolvers/QuerySystemUserResolver.ts +15 -6
- package/src/resolvers/RSUResolver.ts +12 -0
- package/src/resolvers/RealtimeClientSessionResolver.ts +114 -66
- package/src/resolvers/RemoteBrowserActionResolver.ts +15 -10
- package/src/resolvers/RunAIAgentResolver.ts +296 -85
- package/src/resolvers/RunTemplateResolver.ts +6 -4
- package/src/resolvers/RunTestResolver.ts +3 -1
- package/src/resolvers/SearchKnowledgeStreamResolver.ts +19 -3
- package/src/resolvers/SqlLoggingConfigResolver.ts +2 -4
- package/src/resolvers/SyncDataResolver.ts +4 -0
- package/src/resolvers/TaskGraphFrameResolver.ts +33 -1
- package/src/resolvers/TestQuerySQLResolver.ts +69 -13
- package/src/resolvers/TransactionGroupResolver.ts +185 -30
- package/src/resolvers/UserViewResolver.ts +2 -1
- package/src/resolvers/__tests__/GetDataResolver.validation.test.ts +95 -0
- package/src/resolvers/__tests__/MergeRecordsResolver.test.ts +43 -0
- package/src/resolvers/agent-run-data-guard.ts +89 -0
- package/src/rest/EntityCRUDHandler.ts +22 -5
- package/src/rest/RESTEndpointHandler.ts +8 -5
- package/src/rest/RealtimeRecordingHandler.ts +467 -0
- package/src/rest/ViewOperationsHandler.ts +52 -18
- package/src/rest/setupRESTEndpoints.ts +6 -0
- package/src/serverExtensionReservedRoots.ts +14 -17
- package/src/serverRoleConfigUnits.ts +48 -0
- package/src/services/MJStorageBlobStore.ts +31 -30
- package/src/services/StartTaskGraphDispatcher.ts +2 -2
- package/src/services/TaskGraphActionRunner.ts +25 -5
- package/src/services/TaskGraphAgentRunner.ts +188 -11
- package/src/services/TaskGraphContinuationDeliverer.ts +738 -16
- package/src/sharedCache.ts +3 -0
- package/src/types.ts +23 -1
|
@@ -9,7 +9,11 @@ import { AppContext } from '../types.js';
|
|
|
9
9
|
*/
|
|
10
10
|
export declare class ArtifactFileResolver extends ResolverBase {
|
|
11
11
|
ArtifactFileDownloadUrl(artifactVersionId: string, context: AppContext): Promise<string>;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Load the File (as the caller) and generate a signed URL — after the storage gate: the caller must be able to read
|
|
14
|
+
* the account the file's provider resolves to and every `MJ: Files` row that tracks its object
|
|
15
|
+
* (`FileStorageEngine.ResolveFileObject`), so an artifact cannot sign an object in an account the caller is refused.
|
|
16
|
+
*/
|
|
13
17
|
private buildDownloadUrl;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=ArtifactFileResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArtifactFileResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ArtifactFileResolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;;;GAMG;AACH,qBACa,oBAAqB,SAAQ,YAAY;IAG5C,uBAAuB,CACe,iBAAiB,EAAE,MAAM,EAC1D,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,MAAM,CAAC;IA0BlB
|
|
1
|
+
{"version":3,"file":"ArtifactFileResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ArtifactFileResolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;;;GAMG;AACH,qBACa,oBAAqB,SAAQ,YAAY;IAG5C,uBAAuB,CACe,iBAAiB,EAAE,MAAM,EAC1D,OAAO,EAAE,UAAU,GAC3B,OAAO,CAAC,MAAM,CAAC;IA0BlB;;;;OAIG;YACW,gBAAgB;CAkBjC"}
|
|
@@ -42,21 +42,23 @@ let ArtifactFileResolver = class ArtifactFileResolver extends ResolverBase {
|
|
|
42
42
|
}
|
|
43
43
|
return this.buildDownloadUrl(artifactVersion.FileID, user, p);
|
|
44
44
|
}
|
|
45
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Load the File (as the caller) and generate a signed URL — after the storage gate: the caller must be able to read
|
|
47
|
+
* the account the file's provider resolves to and every `MJ: Files` row that tracks its object
|
|
48
|
+
* (`FileStorageEngine.ResolveFileObject`), so an artifact cannot sign an object in an account the caller is refused.
|
|
49
|
+
*/
|
|
46
50
|
async buildDownloadUrl(fileId, user, provider) {
|
|
47
51
|
const fileEntity = await provider.GetEntityObject('MJ: Files', user);
|
|
48
52
|
const fileLoaded = await fileEntity.Load(fileId);
|
|
49
53
|
if (!fileLoaded) {
|
|
50
54
|
throw new Error(`File record ${fileId} not found`);
|
|
51
55
|
}
|
|
52
|
-
//
|
|
53
|
-
await FileStorageEngine.Instance.
|
|
54
|
-
|
|
55
|
-
if (matchingAccounts.length === 0) {
|
|
56
|
+
// Resolve the storage account for this file's provider, gated for the caller (throws on refusal)
|
|
57
|
+
const resolved = await FileStorageEngine.Instance.ResolveFileObject(fileEntity, user, 'Read', provider);
|
|
58
|
+
if (!resolved) {
|
|
56
59
|
throw new Error(`No FileStorageAccount found for ProviderID ${fileEntity.ProviderID}. Cannot generate download URL.`);
|
|
57
60
|
}
|
|
58
|
-
|
|
59
|
-
return driver.CreatePreAuthDownloadUrl(fileEntity.ProviderKey ?? fileEntity.Name);
|
|
61
|
+
return resolved.Driver.CreatePreAuthDownloadUrl(resolved.ObjectKey);
|
|
60
62
|
}
|
|
61
63
|
};
|
|
62
64
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArtifactFileResolver.js","sourceRoot":"","sources":["../../src/resolvers/ArtifactFileResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,YAAY;IAG5C,AAAN,KAAK,CAAC,uBAAuB,CACe,iBAAyB,EAC1D,OAAmB;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,eAAe,CAA0B,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,YAAY,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,eAAe,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,wCAAwC,eAAe,CAAC,WAAW,GAAG,CAAC,CAAC;QACjI,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,yBAAyB,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"ArtifactFileResolver.js","sourceRoot":"","sources":["../../src/resolvers/ArtifactFileResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,YAAY;IAG5C,AAAN,KAAK,CAAC,uBAAuB,CACe,iBAAyB,EAC1D,OAAmB;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,eAAe,CAA0B,uBAAuB,EAAE,IAAI,CAAC,CAAC;QACxG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,YAAY,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,eAAe,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,wCAAwC,eAAe,CAAC,WAAW,GAAG,CAAC,CAAC;QACjI,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,iBAAiB,yBAAyB,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAC1B,MAAc,EACd,IAAoD,EACpD,QAA2B;QAE3B,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAe,WAAW,EAAE,IAAI,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,YAAY,CAAC,CAAC;QACvD,CAAC;QAED,iGAAiG;QACjG,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,CAAC,UAAU,iCAAiC,CAAC,CAAC;QAC1H,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACJ,CAAA;AApDS;IADL,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,+FAA+F,EAAE,CAAC;IAEjI,WAAA,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;IACtC,WAAA,GAAG,EAAE,CAAA;;;;mEAyBT;AA9BQ,oBAAoB;IADhC,QAAQ,EAAE;GACE,oBAAoB,CAuDhC"}
|
|
@@ -41,10 +41,14 @@ export declare class ConversationRunEventsOutput {
|
|
|
41
41
|
/**
|
|
42
42
|
* The run's answer, returned only once the run is terminal.
|
|
43
43
|
*
|
|
44
|
-
* Sourced from `AIAgentRun.Result
|
|
45
|
-
*
|
|
46
|
-
* decide a message is finished from {@link IsInFlight} /
|
|
47
|
-
* presence of this field, or it will wait forever on an
|
|
44
|
+
* Sourced from `AIAgentRun.FinalPayload` (`Result` on older rows), then the conversation detail's
|
|
45
|
+
* message, because the run payload is agent-dependent and null on many successful runs. Still
|
|
46
|
+
* nullable: a caller must decide a message is finished from {@link IsInFlight} /
|
|
47
|
+
* {@link DetailStatus}, never from the presence of this field, or it will wait forever on an
|
|
48
|
+
* agent that writes neither.
|
|
49
|
+
*
|
|
50
|
+
* A run that ended without completing (for example `Cancelled`) returns whatever `FinalPayload`
|
|
51
|
+
* it had saved, which can be partial, so a caller should check {@link RunStatus} first.
|
|
48
52
|
*/
|
|
49
53
|
FinalPayload?: string;
|
|
50
54
|
/** `ConversationDetail.Status` — the value the chat UI renders from. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationRunEventsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ConversationRunEventsResolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C;;;;;;;;GAQG;AACH,qBACa,oBAAoB;IAC7B,yEAAyE;IAEzE,GAAG,EAAE,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,IAAI,CAAC;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,6BAA6B;AAC7B,qBACa,2BAA2B;IAEpC,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAE/B;;;;OAIG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IAEH,UAAU,EAAE,OAAO,CAAC;IAGpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB
|
|
1
|
+
{"version":3,"file":"ConversationRunEventsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/ConversationRunEventsResolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C;;;;;;;;GAQG;AACH,qBACa,oBAAoB;IAC7B,yEAAyE;IAEzE,GAAG,EAAE,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,IAAI,CAAC;IAGhB,WAAW,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,6BAA6B;AAC7B,qBACa,2BAA2B;IAEpC,OAAO,EAAE,OAAO,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAE/B;;;;OAIG;IAEH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IAEH,UAAU,EAAE,OAAO,CAAC;IAGpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;OAWG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,wEAAwE;IAExE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAkBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,6BAA6B;IAEhC,sBAAsB,CACmB,oBAAoB,EAAE,MAAM,EAChE,GAAG,EAAE,UAAU,EAC2B,QAAQ,CAAC,EAAE,MAAM,GACnE,OAAO,CAAC,2BAA2B,CAAC;IAoEvC,4FAA4F;YAC9E,UAAU;IAmBxB;;;OAGG;YACW,aAAa;IAqB3B,oFAAoF;YACtE,SAAS;IAsBvB,oFAAoF;IACpF,OAAO,CAAC,OAAO;IAaf,8FAA8F;IAC9F,OAAO,CAAC,MAAM;CAGjB"}
|
|
@@ -14,7 +14,7 @@ import { Arg, Ctx, Field, Int, ObjectType, Query, Resolver } from 'type-graphql'
|
|
|
14
14
|
import { RunView } from '@memberjunction/core';
|
|
15
15
|
import { EscapeSQLString } from '@memberjunction/global';
|
|
16
16
|
import { GetReadOnlyProvider } from '../util.js';
|
|
17
|
-
const RUN_FIELDS = ['ID', 'Status', 'Result'];
|
|
17
|
+
const RUN_FIELDS = ['ID', 'Status', 'FinalPayload', 'Result'];
|
|
18
18
|
const STEP_FIELDS = [
|
|
19
19
|
'StepNumber', 'StepType', 'StepName', 'Status', 'Success', 'ErrorMessage', 'StartedAt', 'CompletedAt',
|
|
20
20
|
];
|
|
@@ -193,11 +193,11 @@ let ConversationRunEventsResolver = class ConversationRunEventsResolver {
|
|
|
193
193
|
// Only meaningful once terminal; sending it mid-run would hand the client a
|
|
194
194
|
// partial payload it could mistake for the final answer.
|
|
195
195
|
//
|
|
196
|
-
// `AIAgentRun.Result` is agent-dependent — it is
|
|
197
|
-
// genuinely successful runs — so the conversation detail's
|
|
198
|
-
// fallback. That is the text the chat renders, so it is the
|
|
199
|
-
// waiting on this field actually wants.
|
|
200
|
-
FinalPayload: isInFlight ? undefined : (run.Result ?? detail.Message ?? undefined),
|
|
196
|
+
// `AIAgentRun.FinalPayload` (`Result` on older rows) is agent-dependent — it is
|
|
197
|
+
// null on a large share of genuinely successful runs — so the conversation detail's
|
|
198
|
+
// own message is the fallback. That is the text the chat renders, so it is the
|
|
199
|
+
// answer a caller waiting on this field actually wants.
|
|
200
|
+
FinalPayload: isInFlight ? undefined : (run.FinalPayload ?? run.Result ?? detail.Message ?? undefined),
|
|
201
201
|
DetailStatus: detail.Status ?? undefined,
|
|
202
202
|
};
|
|
203
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationRunEventsResolver.js","sourceRoot":"","sources":["../../src/resolvers/ConversationRunEventsResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAWjD,MAAM,UAAU,GAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ConversationRunEventsResolver.js","sourceRoot":"","sources":["../../src/resolvers/ConversationRunEventsResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { AppContext } from '../types.js';
|
|
1
|
+
import { AppContext, UserPayload } from '../types.js';
|
|
2
|
+
import { DatabaseProviderBase, DatasetItemFilterType, DatasetItemResultType, UserInfo } from '@memberjunction/core';
|
|
2
3
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
3
4
|
export declare class DatasetResultType {
|
|
4
5
|
DatasetID: string;
|
|
@@ -12,7 +13,27 @@ export declare class DatasetItemFilterTypeGQL {
|
|
|
12
13
|
ItemCode: string;
|
|
13
14
|
Filter: string;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Request handling shared by the dataset queries. Every read runs as the session's user, so the
|
|
18
|
+
* provider applies that user's entity read permission and row-level security per item, and every
|
|
19
|
+
* client ItemFilter passes the same AST screen as a RunView ExtraFilter before a provider sees it.
|
|
20
|
+
*/
|
|
21
|
+
export declare abstract class DatasetResolverBase extends ResolverBase {
|
|
22
|
+
/** The session's user. A dataset read never runs without one: the provider applies no read checks then. */
|
|
23
|
+
protected RequireDatasetUser(userPayload: UserPayload): UserInfo;
|
|
24
|
+
/**
|
|
25
|
+
* Screens every client ItemFilter: one statement, read-only, and subqueries only over entity base
|
|
26
|
+
* views the user can read. Throws on the first refusal. Returns the filters without null entries.
|
|
27
|
+
*/
|
|
28
|
+
protected ScreenItemFilters(itemFilters: DatasetItemFilterTypeGQL[] | undefined, provider: DatabaseProviderBase, user: UserInfo): DatasetItemFilterType[] | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Applies the API encryption policy to each item's rows, as every other GraphQL read path does:
|
|
31
|
+
* an encrypted field the entity does not allow decrypted over the API leaves as ciphertext or the
|
|
32
|
+
* sentinel. Works on copies, because the rows can be the server cache's own frozen objects.
|
|
33
|
+
*/
|
|
34
|
+
protected ProtectEncryptedFields(items: DatasetItemResultType[], provider: DatabaseProviderBase, user: UserInfo): Promise<DatasetItemResultType[]>;
|
|
35
|
+
}
|
|
36
|
+
export declare class DatasetResolverExtended extends DatasetResolverBase {
|
|
16
37
|
GetDatasetByName(DatasetName: string, { providers, userPayload }: AppContext, ItemFilters?: DatasetItemFilterTypeGQL[]): Promise<{
|
|
17
38
|
DatasetID: string;
|
|
18
39
|
DatasetName: string;
|
|
@@ -30,7 +51,7 @@ export declare class DatasetStatusResultType {
|
|
|
30
51
|
LatestUpdateDate: Date;
|
|
31
52
|
EntityUpdateDates: string;
|
|
32
53
|
}
|
|
33
|
-
export declare class DatasetStatusResolver extends
|
|
54
|
+
export declare class DatasetStatusResolver extends DatasetResolverBase {
|
|
34
55
|
GetDatasetStatusByName(DatasetName: string, { providers, userPayload }: AppContext, ItemFilters?: DatasetItemFilterTypeGQL[]): Promise<{
|
|
35
56
|
DatasetID: string;
|
|
36
57
|
DatasetName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/DatasetResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DatasetResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/DatasetResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAsB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAExI,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,qBACa,iBAAiB;IAE5B,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,EAAE,MAAM,CAAC;IAGpB,OAAO,EAAE,OAAO,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,gBAAgB,EAAE,IAAI,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,wBAAwB;IAEnC,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,8BAAsB,mBAAoB,SAAQ,YAAY;IAC5D,2GAA2G;IAC3G,SAAS,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ;IAQhE;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CACzB,WAAW,EAAE,wBAAwB,EAAE,GAAG,SAAS,EACnD,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,QAAQ,GACb,qBAAqB,EAAE,GAAG,SAAS;IAUtC;;;;OAIG;cACa,sBAAsB,CACpC,KAAK,EAAE,qBAAqB,EAAE,EAC9B,QAAQ,EAAE,oBAAoB,EAC9B,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAYpC;AAED,qBACa,uBAAwB,SAAQ,mBAAmB;IAExD,gBAAgB,CACc,WAAW,EAAE,MAAM,EAC9C,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,UAAU,EACuC,WAAW,CAAC,EAAE,wBAAwB,EAAE;;;;;;;;CA2B/H;AAED,qBACa,uBAAuB;IAElC,SAAS,EAAE,MAAM,CAAC;IAGlB,WAAW,EAAE,MAAM,CAAC;IAGpB,OAAO,EAAE,OAAO,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,gBAAgB,EAAE,IAAI,CAAC;IAGvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBACa,qBAAsB,SAAQ,mBAAmB;IAEtD,sBAAsB,CACQ,WAAW,EAAE,MAAM,EAC9C,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,UAAU,EACuC,WAAW,CAAC,EAAE,wBAAwB,EAAE;;;;;;;;IA4B9H;;;OAGG;IAEG,8BAA8B,CACG,YAAY,EAAE,MAAM,EAAE,EACpD,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,UAAU,GAC5C,OAAO,CAAC,uBAAuB,EAAE,CAAC;CA4BtC"}
|
|
@@ -58,13 +58,59 @@ DatasetItemFilterTypeGQL = __decorate([
|
|
|
58
58
|
InputType()
|
|
59
59
|
], DatasetItemFilterTypeGQL);
|
|
60
60
|
export { DatasetItemFilterTypeGQL };
|
|
61
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Request handling shared by the dataset queries. Every read runs as the session's user, so the
|
|
63
|
+
* provider applies that user's entity read permission and row-level security per item, and every
|
|
64
|
+
* client ItemFilter passes the same AST screen as a RunView ExtraFilter before a provider sees it.
|
|
65
|
+
*/
|
|
66
|
+
export class DatasetResolverBase extends ResolverBase {
|
|
67
|
+
/** The session's user. A dataset read never runs without one: the provider applies no read checks then. */
|
|
68
|
+
RequireDatasetUser(userPayload) {
|
|
69
|
+
const user = this.GetUserFromPayload(userPayload);
|
|
70
|
+
if (!user) {
|
|
71
|
+
throw new Error('Dataset request refused: the session resolves to no user');
|
|
72
|
+
}
|
|
73
|
+
return user;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Screens every client ItemFilter: one statement, read-only, and subqueries only over entity base
|
|
77
|
+
* views the user can read. Throws on the first refusal. Returns the filters without null entries.
|
|
78
|
+
*/
|
|
79
|
+
ScreenItemFilters(itemFilters, provider, user) {
|
|
80
|
+
if (!itemFilters)
|
|
81
|
+
return undefined;
|
|
82
|
+
itemFilters.forEach((itemFilter, index) => {
|
|
83
|
+
if (itemFilter) {
|
|
84
|
+
this.assertClientClauseUsesEntityBaseViews(itemFilter.Filter, `ItemFilters[${index}].Filter`, provider, user);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return itemFilters.filter((itemFilter) => itemFilter != null);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Applies the API encryption policy to each item's rows, as every other GraphQL read path does:
|
|
91
|
+
* an encrypted field the entity does not allow decrypted over the API leaves as ciphertext or the
|
|
92
|
+
* sentinel. Works on copies, because the rows can be the server cache's own frozen objects.
|
|
93
|
+
*/
|
|
94
|
+
async ProtectEncryptedFields(items, provider, user) {
|
|
95
|
+
return Promise.all(items.map(async (item) => {
|
|
96
|
+
const entity = provider.EntityByName(item.EntityName);
|
|
97
|
+
if (!item.Results?.length || !entity?.EncryptedFields.some((field) => !field.AllowDecryptInAPI)) {
|
|
98
|
+
return item;
|
|
99
|
+
}
|
|
100
|
+
const rows = item.Results.map((row) => ({ ...row }));
|
|
101
|
+
return { ...item, Results: await this.ArrayFilterEncryptedFieldsForAPI(item.EntityName, rows, user, provider, 'Name') };
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
let DatasetResolverExtended = class DatasetResolverExtended extends DatasetResolverBase {
|
|
62
106
|
async GetDatasetByName(DatasetName, { providers, userPayload }, ItemFilters) {
|
|
63
107
|
// Check API key scope authorization for dataset read
|
|
64
108
|
await this.CheckAPIKeyScopeAuthorization('dataset:read', DatasetName, userPayload);
|
|
109
|
+
const md = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
|
|
110
|
+
const user = this.RequireDatasetUser(userPayload);
|
|
111
|
+
const itemFilters = this.ScreenItemFilters(ItemFilters, md, user);
|
|
65
112
|
try {
|
|
66
|
-
const
|
|
67
|
-
const result = await md.GetDatasetByName(DatasetName, ItemFilters);
|
|
113
|
+
const result = await md.GetDatasetByName(DatasetName, itemFilters, user);
|
|
68
114
|
if (result) {
|
|
69
115
|
return {
|
|
70
116
|
DatasetID: result.DatasetID,
|
|
@@ -72,7 +118,7 @@ let DatasetResolverExtended = class DatasetResolverExtended extends ResolverBase
|
|
|
72
118
|
Success: result.Success,
|
|
73
119
|
Status: result.Status,
|
|
74
120
|
LatestUpdateDate: result.LatestUpdateDate,
|
|
75
|
-
Results: JSON.stringify(result.Results),
|
|
121
|
+
Results: JSON.stringify(await this.ProtectEncryptedFields(result.Results, md, user)),
|
|
76
122
|
};
|
|
77
123
|
}
|
|
78
124
|
else {
|
|
@@ -128,13 +174,15 @@ DatasetStatusResultType = __decorate([
|
|
|
128
174
|
ObjectType()
|
|
129
175
|
], DatasetStatusResultType);
|
|
130
176
|
export { DatasetStatusResultType };
|
|
131
|
-
let DatasetStatusResolver = class DatasetStatusResolver extends
|
|
177
|
+
let DatasetStatusResolver = class DatasetStatusResolver extends DatasetResolverBase {
|
|
132
178
|
async GetDatasetStatusByName(DatasetName, { providers, userPayload }, ItemFilters) {
|
|
133
179
|
// Check API key scope authorization for dataset read
|
|
134
180
|
await this.CheckAPIKeyScopeAuthorization('dataset:read', DatasetName, userPayload);
|
|
181
|
+
const md = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
|
|
182
|
+
const user = this.RequireDatasetUser(userPayload);
|
|
183
|
+
const itemFilters = this.ScreenItemFilters(ItemFilters, md, user);
|
|
135
184
|
try {
|
|
136
|
-
const
|
|
137
|
-
const result = await md.GetDatasetStatusByName(DatasetName, ItemFilters);
|
|
185
|
+
const result = await md.GetDatasetStatusByName(DatasetName, itemFilters, user);
|
|
138
186
|
if (result) {
|
|
139
187
|
return {
|
|
140
188
|
DatasetID: result.DatasetID,
|
|
@@ -160,11 +208,12 @@ let DatasetStatusResolver = class DatasetStatusResolver extends ResolverBase {
|
|
|
160
208
|
*/
|
|
161
209
|
async GetMultipleDatasetStatusByName(DatasetNames, { providers, userPayload }) {
|
|
162
210
|
const md = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
|
|
211
|
+
const user = this.RequireDatasetUser(userPayload);
|
|
163
212
|
const results = [];
|
|
164
213
|
// Execute all status checks in parallel
|
|
165
214
|
const statusPromises = DatasetNames.map(async (name) => {
|
|
166
215
|
await this.CheckAPIKeyScopeAuthorization('dataset:read', name, userPayload);
|
|
167
|
-
return md.GetDatasetStatusByName(name);
|
|
216
|
+
return md.GetDatasetStatusByName(name, undefined, user);
|
|
168
217
|
});
|
|
169
218
|
const statuses = await Promise.all(statusPromises);
|
|
170
219
|
for (const result of statuses) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetResolver.js","sourceRoot":"","sources":["../../src/resolvers/DatasetResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAO,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,
|
|
1
|
+
{"version":3,"file":"DatasetResolver.js","sourceRoot":"","sources":["../../src/resolvers/DatasetResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,6 +86,18 @@ export declare class RunEntityCommunicationResultType {
|
|
|
86
86
|
Results?: any;
|
|
87
87
|
}
|
|
88
88
|
export declare class ReportResolver extends ResolverBase {
|
|
89
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Runs a message against a view of records, as the caller. The recipient and related-entity reads
|
|
91
|
+
* run as the authenticated user, so a preview returns and a send merges only rows and fields that
|
|
92
|
+
* user may read. The view's client-supplied clauses get the same screen as a RunView request.
|
|
93
|
+
*/
|
|
94
|
+
RunEntityCommunicationByViewID(entityID: string, runViewByIDInput: RunViewByIDInput, providerName: string, providerMessageTypeName: string, message: CommunicationMessageInput, previewOnly: boolean, includeProcessedMessages: boolean, { userPayload, providers }: AppContext): Promise<RunEntityCommunicationResultType>;
|
|
95
|
+
/**
|
|
96
|
+
* Refuses a view that is not a view of `entityID`, with the same message as for a view that does
|
|
97
|
+
* not exist or that the caller cannot load, so the refusal does not reveal which views exist.
|
|
98
|
+
*/
|
|
99
|
+
private assertViewBelongsToEntity;
|
|
100
|
+
/** Builds the message, replacing each template the client named with the server's copy of it. */
|
|
101
|
+
private resolveMessageTemplates;
|
|
90
102
|
}
|
|
91
103
|
//# sourceMappingURL=EntityCommunicationsResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCommunicationsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/EntityCommunicationsResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"EntityCommunicationsResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/EntityCommunicationsResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AASjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,qBACa,gCAAgC;IAE3C,EAAE,EAAE,MAAM,CAAC;IAGX,uBAAuB,EAAE,MAAM,CAAC;IAGhC,8BAA8B,EAAE,MAAM,CAAC;IAGvC,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,MAAM,CAAC;IAGf,oBAAoB,EAAE,MAAM,CAAC;IAG7B,aAAa,EAAE,IAAI,CAAC;IAGpB,aAAa,EAAE,IAAI,CAAC;IAGpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,qBACa,iBAAiB;IAE5B,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,CAAC;IAGf,QAAQ,CAAC,EAAE,IAAI,CAAC;IAGhB,UAAU,CAAC,EAAE,IAAI,CAAC;IAGlB,QAAQ,EAAE,OAAO,CAAC;IAGlB,aAAa,EAAE,IAAI,CAAC;IAGpB,aAAa,EAAE,IAAI,CAAC;IAGpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AACD,qBACa,yBAAyB;IACpC;;OAEG;IAEI,WAAW,EAAE,gCAAgC,CAAC;IAErD;;;OAGG;IAEI,IAAI,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IAEI,EAAE,EAAE,MAAM,CAAC;IAElB;;OAEG;IAEI,IAAI,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IAEI,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAExC;;OAEG;IAEI,QAAQ,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IAEI,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAE5C;;OAEG;IAEI,OAAO,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IAEI,eAAe,CAAC,EAAE,iBAAiB,CAAC;IAE3C;;OAEG;IAEI,WAAW,CAAC,EAAE,GAAG,CAAC;CAC1B;AAED,qBACa,gCAAgC;IAE3C,OAAO,EAAE,OAAO,CAAC;IAGjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IAEI,OAAO,CAAC,EAAE,GAAG,CAAC;CACtB;AAED,qBACa,cAAe,SAAQ,YAAY;IAC9C;;;;OAIG;IAEG,8BAA8B,CACH,QAAQ,EAAE,MAAM,EACE,gBAAgB,EAAE,gBAAgB,EAChD,YAAY,EAAE,MAAM,EACT,uBAAuB,EAAE,MAAM,EAC5B,OAAO,EAAE,yBAAyB,EAChD,WAAW,EAAE,OAAO,EACP,wBAAwB,EAAE,OAAO,EAC1E,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,UAAU,GAC5C,OAAO,CAAC,gCAAgC,CAAC;IAmD5C;;;OAGG;YACW,yBAAyB;IAQvC,iGAAiG;YACnF,uBAAuB;CActC"}
|
|
@@ -14,10 +14,12 @@ import { Arg, Ctx, Field, InputType, ObjectType, Query, Resolver } from 'type-gr
|
|
|
14
14
|
import { RunViewByIDInput } from '../generic/RunViewResolver.js';
|
|
15
15
|
import { Message } from '@memberjunction/communication-types';
|
|
16
16
|
import { EntityCommunicationsEngine } from '@memberjunction/entity-communications-server';
|
|
17
|
+
import { UUIDsEqual } from '@memberjunction/global';
|
|
17
18
|
import { GraphQLJSONObject } from 'graphql-type-json';
|
|
18
19
|
import { TemplateEngineServer } from '@memberjunction/templates';
|
|
19
20
|
import { z } from 'zod';
|
|
20
21
|
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
22
|
+
import { GetReadOnlyProvider } from '../util.js';
|
|
21
23
|
let CommunicationProviderMessageType = class CommunicationProviderMessageType {
|
|
22
24
|
};
|
|
23
25
|
__decorate([
|
|
@@ -187,23 +189,28 @@ RunEntityCommunicationResultType = __decorate([
|
|
|
187
189
|
], RunEntityCommunicationResultType);
|
|
188
190
|
export { RunEntityCommunicationResultType };
|
|
189
191
|
let ReportResolver = class ReportResolver extends ResolverBase {
|
|
190
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Runs a message against a view of records, as the caller. The recipient and related-entity reads
|
|
194
|
+
* run as the authenticated user, so a preview returns and a send merges only rows and fields that
|
|
195
|
+
* user may read. The view's client-supplied clauses get the same screen as a RunView request.
|
|
196
|
+
*/
|
|
197
|
+
async RunEntityCommunicationByViewID(entityID, runViewByIDInput, providerName, providerMessageTypeName, message, previewOnly, includeProcessedMessages, { userPayload, providers }) {
|
|
191
198
|
// Check API key scope authorization for communication send
|
|
192
199
|
await this.CheckAPIKeyScopeAuthorization('communication:send', entityID, userPayload);
|
|
193
200
|
try {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
201
|
+
const contextUser = this.GetUserFromPayload(userPayload);
|
|
202
|
+
if (!contextUser)
|
|
203
|
+
throw new Error('Unable to determine the acting user for this communication');
|
|
204
|
+
const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
|
|
205
|
+
this.screenClientViewClauses({
|
|
206
|
+
extraFilter: runViewByIDInput.ExtraFilter,
|
|
207
|
+
orderBy: runViewByIDInput.OrderBy,
|
|
208
|
+
userSearchString: runViewByIDInput.UserSearchString,
|
|
209
|
+
overrideExcludeFilter: runViewByIDInput.OverrideExcludeFilter,
|
|
210
|
+
}, provider, contextUser);
|
|
211
|
+
await this.assertViewBelongsToEntity(runViewByIDInput.ViewID, entityID, provider, contextUser);
|
|
212
|
+
await EntityCommunicationsEngine.Instance.Config(false, contextUser);
|
|
213
|
+
const newMessage = await this.resolveMessageTemplates(message, contextUser);
|
|
207
214
|
const params = {
|
|
208
215
|
EntityID: entityID,
|
|
209
216
|
RunViewParams: runViewByIDInput,
|
|
@@ -212,6 +219,8 @@ let ReportResolver = class ReportResolver extends ResolverBase {
|
|
|
212
219
|
Message: newMessage,
|
|
213
220
|
PreviewOnly: previewOnly,
|
|
214
221
|
IncludeProcessedMessages: includeProcessedMessages,
|
|
222
|
+
ContextUser: contextUser,
|
|
223
|
+
Provider: provider,
|
|
215
224
|
};
|
|
216
225
|
const result = await EntityCommunicationsEngine.Instance.RunEntityCommunication(params);
|
|
217
226
|
return {
|
|
@@ -231,6 +240,33 @@ let ReportResolver = class ReportResolver extends ResolverBase {
|
|
|
231
240
|
};
|
|
232
241
|
}
|
|
233
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Refuses a view that is not a view of `entityID`, with the same message as for a view that does
|
|
245
|
+
* not exist or that the caller cannot load, so the refusal does not reveal which views exist.
|
|
246
|
+
*/
|
|
247
|
+
async assertViewBelongsToEntity(viewID, entityID, provider, contextUser) {
|
|
248
|
+
if (!viewID)
|
|
249
|
+
return;
|
|
250
|
+
const view = await this.resolveUserViewByID(viewID, provider, contextUser);
|
|
251
|
+
if (!view?.ID || !UUIDsEqual(view.ID, viewID) || !UUIDsEqual(view.EntityID, entityID)) {
|
|
252
|
+
throw new Error('The requested view does not exist or you do not have access to it');
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/** Builds the message, replacing each template the client named with the server's copy of it. */
|
|
256
|
+
async resolveMessageTemplates(message, contextUser) {
|
|
257
|
+
const newMessage = new Message(message);
|
|
258
|
+
await TemplateEngineServer.Instance.Config(false, contextUser);
|
|
259
|
+
if (newMessage.BodyTemplate) {
|
|
260
|
+
newMessage.BodyTemplate = TemplateEngineServer.Instance.FindTemplate(newMessage.BodyTemplate.Name);
|
|
261
|
+
}
|
|
262
|
+
if (newMessage.HTMLBodyTemplate) {
|
|
263
|
+
newMessage.HTMLBodyTemplate = TemplateEngineServer.Instance.FindTemplate(newMessage.HTMLBodyTemplate.Name);
|
|
264
|
+
}
|
|
265
|
+
if (newMessage.SubjectTemplate) {
|
|
266
|
+
newMessage.SubjectTemplate = TemplateEngineServer.Instance.FindTemplate(newMessage.SubjectTemplate.Name);
|
|
267
|
+
}
|
|
268
|
+
return newMessage;
|
|
269
|
+
}
|
|
234
270
|
};
|
|
235
271
|
__decorate([
|
|
236
272
|
Query(() => RunEntityCommunicationResultType),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCommunicationsResolver.js","sourceRoot":"","sources":["../../src/resolvers/EntityCommunicationsResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAO,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"EntityCommunicationsResolver.js","sourceRoot":"","sources":["../../src/resolvers/EntityCommunicationsResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ export declare class EntityRecordNameResult {
|
|
|
19
19
|
*
|
|
20
20
|
* Entity-level read permission is checked here ({@link ResolverBase.CheckUserReadPermissions}).
|
|
21
21
|
* Field- and row-level security are applied by the provider's lookup, for the acting user passed
|
|
22
|
-
* to it: when any field the name is built from is withheld, it answers with no name
|
|
22
|
+
* to it: when any field the name is built from is withheld, it answers with no name, and it reads
|
|
23
|
+
* only rows the user's read row filter allows. Without an acting user there is no lookup.
|
|
23
24
|
*
|
|
24
25
|
* A withheld name answers `Success: false` with the same status as a record that does not exist.
|
|
25
26
|
* Callers already treat "no name" as "show the primary key", and the identical answer keeps this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityRecordNameResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/EntityRecordNameResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAA0B,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,qBACa,qBAAqB;IAEhC,UAAU,EAAE,MAAM,CAAC;IAGnB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,qBACa,sBAAsB;IAEjC,OAAO,EAAE,OAAO,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,YAAY,EAAE,YAAY,CAAC;IAG3B,UAAU,EAAE,MAAM,CAAC;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"EntityRecordNameResolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/EntityRecordNameResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAA0B,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,qBACa,qBAAqB;IAEhC,UAAU,EAAE,MAAM,CAAC;IAGnB,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,qBACa,sBAAsB;IAEjC,OAAO,EAAE,OAAO,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;IAGf,YAAY,EAAE,YAAY,CAAC;IAG3B,UAAU,EAAE,MAAM,CAAC;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,qBACa,wBAAyB,SAAQ,YAAY;IAElD,mBAAmB,CACU,UAAU,EAAE,MAAM,EACD,UAAU,EAAE,YAAY,EACnE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,UAAU,GAC5C,OAAO,CAAC,sBAAsB,CAAC;IAQ5B,oBAAoB,CACoB,IAAI,EAAE,qBAAqB,EAAE,EAClE,EAAC,SAAS,EAAE,WAAW,EAAC,EAAE,UAAU,GAC1C,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAY9B,wBAAwB,CAC5B,EAAE,EAAE,oBAAoB,EACxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,qBAAqB,EACjC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,sBAAsB,CAAC;CAiBnC;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -61,7 +61,8 @@ export { EntityRecordNameResult };
|
|
|
61
61
|
*
|
|
62
62
|
* Entity-level read permission is checked here ({@link ResolverBase.CheckUserReadPermissions}).
|
|
63
63
|
* Field- and row-level security are applied by the provider's lookup, for the acting user passed
|
|
64
|
-
* to it: when any field the name is built from is withheld, it answers with no name
|
|
64
|
+
* to it: when any field the name is built from is withheld, it answers with no name, and it reads
|
|
65
|
+
* only rows the user's read row filter allows. Without an acting user there is no lookup.
|
|
65
66
|
*
|
|
66
67
|
* A withheld name answers `Success: false` with the same status as a record that does not exist.
|
|
67
68
|
* Callers already treat "no name" as "show the primary key", and the identical answer keeps this
|
|
@@ -90,7 +91,7 @@ let EntityRecordNameResolver = class EntityRecordNameResolver extends ResolverBa
|
|
|
90
91
|
if (e) {
|
|
91
92
|
const contextUser = userPayload ? this.GetUserFromPayload(userPayload) : undefined;
|
|
92
93
|
// The acting user is what field- and row-level security are applied for.
|
|
93
|
-
const recordName = await md.GetEntityRecordName(e.Name, pk, contextUser);
|
|
94
|
+
const recordName = contextUser ? await md.GetEntityRecordName(e.Name, pk, contextUser) : '';
|
|
94
95
|
if (recordName)
|
|
95
96
|
return { Success: true, Status: 'OK', CompositeKey: pk, RecordName: recordName, EntityName };
|
|
96
97
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityRecordNameResolver.js","sourceRoot":"","sources":["../../src/resolvers/EntityRecordNameResolver.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAwB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG1C,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAMjC,CAAA;AAJC;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;yDACD;AAGnB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC;8BACrB,YAAY;2DAAC;AALhB,qBAAqB;IADjC,SAAS,EAAE;GACC,qBAAqB,CAMjC;;AAGM,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;CAelC,CAAA;AAbC;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;;uDACJ;AAGjB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;sDACL;AAGf;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;8BACtB,YAAY;4DAAC;AAG3B;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;0DACD;AAGnB;IADC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0DACpB;AAdT,sBAAsB;IADlC,UAAU,EAAE;GACA,sBAAsB,CAelC;;AAED
|
|
1
|
+
{"version":3,"file":"EntityRecordNameResolver.js","sourceRoot":"","sources":["../../src/resolvers/EntityRecordNameResolver.ts"],"names":[],"mappings":"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"}
|