@@ -28,7 +28,9 @@ const runResolvers = async <T, H extends HookContext>(
2828 let current : any = data
2929
3030 for ( const resolver of resolvers ) {
31- current = await resolver . resolve ( current , ctx , status )
31+ if ( resolver && typeof resolver . resolve === 'function' ) {
32+ current = await resolver . resolve ( current , ctx , status )
33+ }
3234 }
3335
3436 return current as T
@@ -51,6 +53,9 @@ export type ResolveAllSettings<H extends HookContext> = {
5153
5254export const DISPATCH = Symbol ( '@feathersjs/schema/dispatch' )
5355
56+ export const getDispatch = ( value : any ) =>
57+ typeof value === 'object' && value !== null && value [ DISPATCH ] !== undefined ? value [ DISPATCH ] : value
58+
5459export const resolveQuery =
5560 < T , H extends HookContext > ( ...resolvers : Resolver < T , H > [ ] ) =>
5661 async ( context : H , next ?: NextFunction ) => {
@@ -137,20 +142,19 @@ export const resolveDispatch =
137142 const ctx = getContext ( context )
138143 const status = context . params . resolve
139144 const { isPaginated, data } = getData ( context )
140- const resolveDispatch = async ( current : any ) => {
145+ const resolveAndGetDispatch = async ( current : any ) => {
141146 const resolved = await runResolvers ( resolvers , current , ctx , status )
142147
143148 return Object . keys ( resolved ) . reduce ( ( res , key ) => {
144- const value = current [ key ]
145- const hasDispatch = typeof value === 'object' && value !== null && value [ DISPATCH ] !== undefined
146-
147- res [ key ] = hasDispatch ? value [ DISPATCH ] : value
149+ res [ key ] = getDispatch ( current [ key ] )
148150
149151 return res
150152 } , { } as any )
151153 }
152154
153- const result = await ( Array . isArray ( data ) ? Promise . all ( data . map ( resolveDispatch ) ) : resolveDispatch ( data ) )
155+ const result = await ( Array . isArray ( data )
156+ ? Promise . all ( data . map ( resolveAndGetDispatch ) )
157+ : resolveAndGetDispatch ( data ) )
154158 const dispatch = isPaginated
155159 ? {
156160 ...context . result ,
@@ -169,9 +173,7 @@ export const resolveDispatch =
169173export const resolveAll = < H extends HookContext > ( map : ResolveAllSettings < H > ) => {
170174 const middleware = [ ]
171175
172- if ( map . dispatch ) {
173- middleware . push ( resolveDispatch ( map . dispatch ) )
174- }
176+ middleware . push ( resolveDispatch ( map . dispatch ) )
175177
176178 if ( map . result ) {
177179 middleware . push ( resolveResult ( map . result ) )
0 commit comments