From 18375438cd1ecca42dbbe157e36dde530698f069 Mon Sep 17 00:00:00 2001 From: Asko Nõmm Date: Mon, 5 May 2025 20:33:56 +0300 Subject: Do not set D to W if D is unset. --- src/shapex.ts | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/shapex.ts b/src/shapex.ts index 8ef6ebd..ca7ffaa 100644 --- a/src/shapex.ts +++ b/src/shapex.ts @@ -12,11 +12,7 @@ export type SubscriptionResponseDispatch = { * if you want to update state, and/or optionally also any events you * might want to dispatch. */ -export type SubscriptionResponse< - T, - W extends unknown = undefined, - D extends unknown = W -> = { +export type SubscriptionResponse = { state?: T; dispatch?: | SubscriptionResponseDispatch @@ -24,7 +20,7 @@ export type SubscriptionResponse< }; const isSubscriptionResponseList = ( - dispatch: SubscriptionResponseDispatch | SubscriptionResponseDispatch[] + dispatch: SubscriptionResponseDispatch | SubscriptionResponseDispatch[], ): dispatch is SubscriptionResponseDispatch[] => Array.isArray(dispatch); /** @@ -34,10 +30,14 @@ const isSubscriptionResponseList = ( export type EventCallback< T, W extends unknown = undefined, - D extends unknown = W -> = (state: T, data?: W) => SubscriptionResponse | void; + D extends unknown = undefined, +> = (state: T, data?: W) => SubscriptionResponse | void; -type Subscription = { +type Subscription< + T, + W extends unknown = undefined, + D extends unknown = undefined, +> = { listener: string; callback: EventCallback; once: boolean; @@ -50,16 +50,16 @@ export type ShapeXInstance = { /** * Subcribe to an event. */ - subscribe: ( + subscribe: ( listener: string, - callback: EventCallback + callback: EventCallback, ) => number; /** * Subscribe to an event once. */ - subscribeOnce: ( + subscribeOnce: ( listener: string, - callback: EventCallback + callback: EventCallback, ) => number; /** @@ -109,9 +109,12 @@ export function ShapeX(initialState: T): ShapeXInstance { * @param {EventCallback} callback * @returns */ - const subscribe = ( + const subscribe = < + W extends unknown = undefined, + D extends unknown = undefined, + >( listener: string, - callback: EventCallback + callback: EventCallback, ): number => { if (!_subscriptions.has(listener)) { _subscriptions.set(listener, []); @@ -138,7 +141,7 @@ export function ShapeX(initialState: T): ShapeXInstance { */ const subscribeOnce = ( listener: string, - callback: EventCallback + callback: EventCallback, ): number => { if (!_subscriptions.has(listener)) { _subscriptions.set(listener, []); @@ -171,11 +174,11 @@ export function ShapeX(initialState: T): ShapeXInstance { */ const changedState = ( oldState: T, - newState: T + newState: T, ): string[] => { const paths = ( state: R, - path: string + path: string, ): { path: string; value: unknown }[] => { const _paths = [] as { path: string; value: unknown }[]; @@ -232,7 +235,7 @@ export function ShapeX(initialState: T): ShapeXInstance { */ const dispatch = ( to: string, - withData?: W + withData?: W, ): void => { if (!_subscriptions.has(to)) { return; -- cgit v1.2.3