11import { ICacheAdapter , IWebSocketAdapter } from '../@types/adapters'
2- import { IEventRepository , IInviteCodeRepository , IUserRepository } from '../@types/repositories'
2+ import { IDvmJobRepository , IEventRepository , IInviteCodeRepository , IUserRepository } from '../@types/repositories'
33import {
44 isDeleteEvent ,
5+ isDvmJobRequestEvent ,
56 isEphemeralEvent ,
67 isGiftWrapEvent ,
78 isMarmotGroupEvent ,
@@ -14,6 +15,7 @@ import { isNip43JoinRequest, isNip43LeaveRequest } from '../utils/nip43'
1415import { isRelayListEvent } from '../utils/nip65'
1516import { DefaultEventStrategy } from '../handlers/event-strategies/default-event-strategy'
1617import { DeleteEventStrategy } from '../handlers/event-strategies/delete-event-strategy'
18+ import { DvmJobRequestEventStrategy } from '../handlers/event-strategies/dvm-job-request-event-strategy'
1719import { EphemeralEventStrategy } from '../handlers/event-strategies/ephemeral-event-strategy'
1820import { Event } from '../@types/event'
1921import { Factory } from '../@types/base'
@@ -33,6 +35,7 @@ export const eventStrategyFactory =
3335 eventRepository : IEventRepository ,
3436 userRepository : IUserRepository ,
3537 inviteCodeRepository : IInviteCodeRepository ,
38+ dvmJobRepository : IDvmJobRepository ,
3639 cache : ICacheAdapter ,
3740 settings : ( ) => Settings ,
3841 ) : Factory < IEventStrategy < Event , Promise < void > > , [ Event , IWebSocketAdapter ] > =>
@@ -47,12 +50,17 @@ export const eventStrategyFactory =
4750 return new TimestampEventStrategy ( adapter , eventRepository )
4851 } else if ( isRelayListEvent ( event ) || isReplaceableEvent ( event ) ) {
4952 return new ReplaceableEventStrategy ( adapter , eventRepository )
50- // NIP-43: Join/Leave requests MUST be checked before the generic ephemeral
51- // handler, because kinds 28934/28936 fall in the ephemeral range (20000-29999).
53+ // NIP-43: Join/Leave requests MUST be checked before the generic ephemeral
54+ // handler, because kinds 28934/28936 fall in the ephemeral range (20000-29999).
5255 } else if ( isNip43JoinRequest ( event ) ) {
5356 return new JoinRequestEventStrategy ( adapter , inviteCodeRepository , userRepository , cache , settings )
5457 } else if ( isNip43LeaveRequest ( event ) ) {
5558 return new LeaveRequestEventStrategy ( adapter , userRepository , cache , settings )
59+ // NIP-90: DVM job requests (kind 5000-5999) checked early, same reasoning
60+ // as the NIP-43 checks above — kept explicit rather than relying on it
61+ // falling through to DefaultEventStrategy.
62+ } else if ( isDvmJobRequestEvent ( event ) ) {
63+ return new DvmJobRequestEventStrategy ( adapter , eventRepository , dvmJobRepository )
5664 } else if ( isEphemeralEvent ( event ) ) {
5765 return new EphemeralEventStrategy ( adapter )
5866 } else if ( isDeleteEvent ( event ) ) {
@@ -62,4 +70,4 @@ export const eventStrategyFactory =
6270 }
6371
6472 return new DefaultEventStrategy ( adapter , eventRepository )
65- }
73+ }
0 commit comments