From cd62a868e9b7644d0a833150f2550be4343277f3 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 15 Jul 2026 14:47:24 -0230 Subject: [PATCH] chore(base-data-service): improve constructor type safety Improve the constructor type safety by using conditional types to ensure the messenger passed in has the necessary actions/events. --- packages/base-data-service/src/BaseDataService.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/base-data-service/src/BaseDataService.ts b/packages/base-data-service/src/BaseDataService.ts index 3b45961225..26bcd3d729 100644 --- a/packages/base-data-service/src/BaseDataService.ts +++ b/packages/base-data-service/src/BaseDataService.ts @@ -2,6 +2,8 @@ import { Messenger, ActionConstraint, EventConstraint, + MessengerActions, + MessengerEvents, } from '@metamask/messenger'; import type { StorageServiceGetItemAction, @@ -161,7 +163,13 @@ export class BaseDataService< persistenceConfig, }: { name: ServiceName; - messenger: ServiceMessenger; + messenger: DataServiceActions['type'] extends + | MessengerActions['type'] + | DataServiceAllowedActions['type'] + ? DataServiceEvents['type'] extends MessengerEvents['type'] + ? ServiceMessenger + : never + : never; queryClientConfig?: QueryClientConfig; policyOptions?: CreateServicePolicyOptions; persistenceConfig?: PersistenceConfiguration;