@xyo-network/module-abstract 2.52.1 → 2.53.0

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.
@@ -3,7 +3,7 @@ import { Account } from '@xyo-network/account'
3
3
  import { AccountInstance } from '@xyo-network/account-model'
4
4
  import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
5
5
  import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
6
- import { BaseParams } from '@xyo-network/core'
6
+ import { Base, BaseParams } from '@xyo-network/core'
7
7
  import { EventAnyListener, EventListener } from '@xyo-network/module-events'
8
8
  import {
9
9
  Module,
@@ -20,7 +20,6 @@ import { PayloadWrapper } from '@xyo-network/payload-wrapper'
20
20
  import { Promisable, PromiseEx } from '@xyo-network/promise'
21
21
  import compact from 'lodash/compact'
22
22
 
23
- import { BaseEmitter } from './BaseEmitter'
24
23
  import { XyoError, XyoErrorSchema } from './Error'
25
24
  import { duplicateModules } from './lib'
26
25
  import { QueryBoundWitnessBuilder, QueryBoundWitnessWrapper } from './Query'
@@ -48,11 +47,13 @@ export type ModuleWrapperParams<TWrappedModule extends Module = Module> = BasePa
48
47
 
49
48
  @moduleConstructable()
50
49
  export class ModuleWrapper<TWrappedModule extends Module = Module>
51
- extends BaseEmitter<TWrappedModule['params']>
52
- implements Module<TWrappedModule['params']>
50
+ extends Base<TWrappedModule['params']>
51
+ implements Module<TWrappedModule['params'], TWrappedModule['eventData']>
53
52
  {
54
53
  static requiredQueries: string[] = [ModuleDiscoverQuerySchema]
55
54
 
55
+ eventData = {} as TWrappedModule['eventData']
56
+
56
57
  protected readonly wrapperParams: ModuleWrapperParams<TWrappedModule>
57
58
 
58
59
  constructor(params: ModuleWrapperParams<TWrappedModule>) {
@@ -126,7 +127,7 @@ export class ModuleWrapper<TWrappedModule extends Module = Module>
126
127
  return assertEx(this.tryWrap(module, account), 'Unable to wrap module as ModuleWrapper')
127
128
  }
128
129
 
129
- override clearListeners(eventNames: keyof TWrappedModule['params']['eventData'] | keyof TWrappedModule['params']['eventData'][]) {
130
+ clearListeners(eventNames: Parameters<TWrappedModule['clearListeners']>[0]) {
130
131
  return this.module.clearListeners(eventNames)
131
132
  }
132
133
 
@@ -156,51 +157,42 @@ export class ModuleWrapper<TWrappedModule extends Module = Module>
156
157
  return this.sendQuery(queryPayload)
157
158
  }
158
159
 
159
- override emit(
160
- eventName: keyof TWrappedModule['params']['eventData'],
161
- eventArgs?: TWrappedModule['params']['eventData'][keyof TWrappedModule['params']['eventData']],
162
- ) {
160
+ emit(eventName: Parameters<TWrappedModule['emit']>[0], eventArgs: Parameters<TWrappedModule['emit']>[1]) {
163
161
  return this.module.emit(eventName, eventArgs)
164
162
  }
165
163
 
166
- override emitSerial(
167
- eventName: keyof TWrappedModule['params']['eventData'],
168
- eventArgs?: TWrappedModule['params']['eventData'][keyof TWrappedModule['params']['eventData']],
169
- ) {
164
+ emitSerial(eventName: Parameters<TWrappedModule['emitSerial']>[0], eventArgs: Parameters<TWrappedModule['emitSerial']>[1]) {
170
165
  return this.module.emitSerial(eventName, eventArgs)
171
166
  }
172
167
 
173
- override listenerCount(eventNames: keyof TWrappedModule['params']['eventData'] | keyof TWrappedModule['params']['eventData'][]) {
168
+ listenerCount(eventNames: Parameters<TWrappedModule['listenerCount']>[0]) {
174
169
  return this.module.listenerCount(eventNames)
175
170
  }
176
171
 
177
- override off(
178
- eventNames: keyof TWrappedModule['params']['eventData'] | keyof TWrappedModule['params']['eventData'][],
179
- listener: EventListener<TWrappedModule['params']['eventData']>,
172
+ off<TEventName extends keyof TWrappedModule['eventData']>(
173
+ eventNames: TEventName,
174
+ listener: EventListener<TWrappedModule['eventData'][TEventName]>,
180
175
  ) {
181
176
  return this.module.off(eventNames, listener)
182
177
  }
183
178
 
184
- override offAny(listener: EventAnyListener<TWrappedModule['params']['eventData']>) {
179
+ offAny(listener: EventAnyListener) {
185
180
  return this.module.offAny(listener)
186
181
  }
187
182
 
188
- override on(
189
- eventNames: keyof TWrappedModule['params']['eventData'] | keyof TWrappedModule['params']['eventData'][],
190
- listener: EventListener<TWrappedModule['params']['eventData']>,
191
- ) {
183
+ on<TEventName extends keyof TWrappedModule['eventData']>(eventNames: TEventName, listener: EventListener<TWrappedModule['eventData'][TEventName]>) {
192
184
  return this.module.on(eventNames, listener)
193
185
  }
194
186
 
195
- override onAny(listener: EventAnyListener<TWrappedModule['params']['eventData']>) {
187
+ onAny(listener: EventAnyListener) {
196
188
  return this.module.onAny(listener)
197
189
  }
198
190
 
199
- override once(
200
- eventNames: keyof TWrappedModule['params']['eventData'] | keyof TWrappedModule['params']['eventData'][],
201
- listener: EventListener<TWrappedModule['params']['eventData']>,
191
+ once<TEventName extends keyof TWrappedModule['eventData']>(
192
+ eventName: TEventName,
193
+ listener: EventListener<TWrappedModule['eventData'][TEventName]>,
202
194
  ) {
203
- return this.module.once(eventNames, listener)
195
+ return this.module.once(eventName, listener)
204
196
  }
205
197
 
206
198
  async query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness>(query: T, payloads?: XyoPayload[]): Promise<ModuleQueryResult> {