@xyo-network/module-model 2.50.4 → 2.50.6

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.
Files changed (47) hide show
  1. package/dist/cjs/Events/EventArgs.js +3 -0
  2. package/dist/cjs/Events/EventArgs.js.map +1 -0
  3. package/dist/cjs/Events/EventListener.js +3 -0
  4. package/dist/cjs/Events/EventListener.js.map +1 -0
  5. package/dist/cjs/Events/ModuleEventEmitter.js +3 -0
  6. package/dist/cjs/Events/ModuleEventEmitter.js.map +1 -0
  7. package/dist/cjs/Events/ModuleQueried.js +5 -0
  8. package/dist/cjs/Events/ModuleQueried.js.map +1 -0
  9. package/dist/cjs/Events/index.js +8 -0
  10. package/dist/cjs/Events/index.js.map +1 -0
  11. package/dist/cjs/index.js +1 -0
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/docs.json +1473 -590
  14. package/dist/esm/Events/EventArgs.js +2 -0
  15. package/dist/esm/Events/EventArgs.js.map +1 -0
  16. package/dist/esm/Events/EventListener.js +2 -0
  17. package/dist/esm/Events/EventListener.js.map +1 -0
  18. package/dist/esm/Events/ModuleEventEmitter.js +2 -0
  19. package/dist/esm/Events/ModuleEventEmitter.js.map +1 -0
  20. package/dist/esm/Events/ModuleQueried.js +2 -0
  21. package/dist/esm/Events/ModuleQueried.js.map +1 -0
  22. package/dist/esm/Events/index.js +5 -0
  23. package/dist/esm/Events/index.js.map +1 -0
  24. package/dist/esm/index.js +1 -0
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/types/Events/EventArgs.d.ts +4 -0
  27. package/dist/types/Events/EventArgs.d.ts.map +1 -0
  28. package/dist/types/Events/EventListener.d.ts +3 -0
  29. package/dist/types/Events/EventListener.d.ts.map +1 -0
  30. package/dist/types/Events/ModuleEventEmitter.d.ts +7 -0
  31. package/dist/types/Events/ModuleEventEmitter.d.ts.map +1 -0
  32. package/dist/types/Events/ModuleQueried.d.ts +21 -0
  33. package/dist/types/Events/ModuleQueried.d.ts.map +1 -0
  34. package/dist/types/Events/index.d.ts +5 -0
  35. package/dist/types/Events/index.d.ts.map +1 -0
  36. package/dist/types/index.d.ts +1 -0
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/types/model/Module.d.ts +3 -1
  39. package/dist/types/model/Module.d.ts.map +1 -1
  40. package/package.json +7 -7
  41. package/src/Events/EventArgs.ts +5 -0
  42. package/src/Events/EventListener.ts +3 -0
  43. package/src/Events/ModuleEventEmitter.ts +11 -0
  44. package/src/Events/ModuleQueried.ts +29 -0
  45. package/src/Events/index.ts +4 -0
  46. package/src/index.ts +1 -0
  47. package/src/model/Module.ts +4 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EventArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventArgs.js","sourceRoot":"","sources":["../../../src/Events/EventArgs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EventListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventListener.js","sourceRoot":"","sources":["../../../src/Events/EventListener.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ModuleEventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleEventEmitter.js","sourceRoot":"","sources":["../../../src/Events/ModuleEventEmitter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export const ModuleQueriedEvent = 'moduleQueried';
2
+ //# sourceMappingURL=ModuleQueried.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleQueried.js","sourceRoot":"","sources":["../../../src/Events/ModuleQueried.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,kBAAkB,GAAuB,eAAe,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './EventArgs';
2
+ export * from './EventListener';
3
+ export * from './ModuleEventEmitter';
4
+ export * from './ModuleQueried';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Events/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA"}
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './Config';
2
+ export * from './Events';
2
3
  export * from './model';
3
4
  export * from './ModuleFilter';
4
5
  export * from './ModuleQueryResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { AnyObject } from '@xyo-network/core';
2
+ export type Event = string;
3
+ export type EventArgs<Args extends AnyObject = AnyObject> = Args;
4
+ //# sourceMappingURL=EventArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventArgs.d.ts","sourceRoot":"","sources":["../../../src/Events/EventArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE7C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;AAE1B,MAAM,MAAM,SAAS,CAAC,IAAI,SAAS,SAAS,GAAG,SAAS,IAAI,IAAI,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { EventArgs } from './EventArgs';
2
+ export type EventListener<T extends EventArgs = EventArgs> = (args: T) => void;
3
+ //# sourceMappingURL=EventListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventListener.d.ts","sourceRoot":"","sources":["../../../src/Events/EventListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { EventArgs } from './EventArgs';
2
+ import { EventListener } from './EventListener';
3
+ export type EventEmitterFunc<TResult, TEvent extends string = never, TEventArgs extends EventArgs = EventArgs> = (event: TEvent, handler: EventListener<TEventArgs>) => TResult;
4
+ export interface ModuleEventEmitter<TEvent extends string = never, TEventArgs extends EventArgs = EventArgs> {
5
+ on: EventEmitterFunc<this, TEvent, TEventArgs>;
6
+ }
7
+ //# sourceMappingURL=ModuleEventEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleEventEmitter.d.ts","sourceRoot":"","sources":["../../../src/Events/ModuleEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,MAAM,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,SAAS,MAAM,GAAG,KAAK,EAAE,UAAU,SAAS,SAAS,GAAG,SAAS,IAAI,CAC/G,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,KAC/B,OAAO,CAAA;AAEZ,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,GAAG,KAAK,EAAE,UAAU,SAAS,SAAS,GAAG,SAAS;IACzG,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;CAC/C"}
@@ -0,0 +1,21 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness-model';
2
+ import { AnyObject } from '@xyo-network/core';
3
+ import { XyoPayload } from '@xyo-network/payload-model';
4
+ import { Module } from '../model';
5
+ import { XyoQueryBoundWitness } from '../Query';
6
+ import { EventArgs } from './EventArgs';
7
+ import { ModuleEventEmitter } from './ModuleEventEmitter';
8
+ export type ModuleQueriedEvent = 'moduleQueried';
9
+ export declare const ModuleQueriedEvent: ModuleQueriedEvent;
10
+ export type ModuleEventArgs<TArgs extends AnyObject | undefined = undefined> = TArgs extends AnyObject ? EventArgs<{
11
+ module: Module;
12
+ } & TArgs> : EventArgs<{
13
+ module: Module;
14
+ }>;
15
+ export type ModuleQueriedEventArgs = ModuleEventArgs<{
16
+ payloads?: XyoPayload[];
17
+ query: XyoQueryBoundWitness;
18
+ result: [XyoBoundWitness, XyoPayload[]];
19
+ }>;
20
+ export type ModuleQueriedEventEmitter = ModuleEventEmitter<ModuleQueriedEvent, ModuleQueriedEventArgs>;
21
+ //# sourceMappingURL=ModuleQueried.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleQueried.d.ts","sourceRoot":"","sources":["../../../src/Events/ModuleQueried.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAA;AAChD,eAAO,MAAM,kBAAkB,EAAE,kBAAoC,CAAA;AAErE,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,SAAS,SAAS,GAClG,SAAS,CACP;IACE,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,KAAK,CACV,GACD,SAAS,CAAC;IACR,MAAM,EAAE,MAAM,CAAA;CACf,CAAC,CAAA;AAEN,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC;IACnD,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAA;IACvB,KAAK,EAAE,oBAAoB,CAAA;IAC3B,MAAM,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAA;CACxC,CAAC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './EventArgs';
2
+ export * from './EventListener';
3
+ export * from './ModuleEventEmitter';
4
+ export * from './ModuleQueried';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Events/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './Config';
2
+ export * from './Events';
2
3
  export * from './model';
3
4
  export * from './ModuleFilter';
4
5
  export * from './ModuleQueryResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { XyoPayload } from '@xyo-network/payload-model';
2
2
  import { Promisable } from '@xyo-network/promise';
3
3
  import { ModuleConfig } from '../Config';
4
+ import { ModuleEventEmitter, ModuleQueriedEventEmitter } from '../Events';
4
5
  import { ModuleFilter } from '../ModuleFilter';
5
6
  import { ModuleQueryResult } from '../ModuleQueryResult';
6
7
  import { XyoQueryBoundWitness } from '../Query';
@@ -10,10 +11,11 @@ export interface ModuleResolver {
10
11
  removeResolver: (resolver: ModuleResolver) => this;
11
12
  resolve<T extends Module = Module>(filter?: ModuleFilter): Promisable<T[]>;
12
13
  }
13
- export type Module<TConfig extends ModuleConfig = ModuleConfig> = {
14
+ export type Module<TConfig extends ModuleConfig = ModuleConfig, TModuleEventEmitter extends ModuleEventEmitter | undefined = undefined> = {
14
15
  address: string;
15
16
  config: TConfig;
16
17
  readonly downResolver: ModuleResolver;
18
+ on: TModuleEventEmitter extends ModuleEventEmitter ? ModuleQueriedEventEmitter['on'] | TModuleEventEmitter['on'] : ModuleQueriedEventEmitter['on'];
17
19
  queries: string[];
18
20
  query: <T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(query: T, payloads?: XyoPayload[], queryConfig?: TConf) => Promisable<ModuleQueryResult>;
19
21
  queryable: <T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(query: T, payloads?: XyoPayload[], queryConfig?: TConf) => Promisable<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../../src/model/Module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAC/C,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAClD,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAA;CAC3E;AAED,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,IAAI;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IAGf,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAA;IAErC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,SAAS,YAAY,GAAG,YAAY,EACtG,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,WAAW,CAAC,EAAE,KAAK,KAChB,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAClC,SAAS,EAAE,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,SAAS,YAAY,GAAG,YAAY,EAC1G,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,WAAW,CAAC,EAAE,KAAK,KAChB,UAAU,CAAC,OAAO,CAAC,CAAA;IAIxB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;CACpC,CAAA"}
1
+ {"version":3,"file":"Module.d.ts","sourceRoot":"","sources":["../../../src/model/Module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAC/C,gBAAgB,EAAE,OAAO,CAAA;IACzB,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAA;IAClD,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAA;CAC3E;AAED,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,EAAE,mBAAmB,SAAS,kBAAkB,GAAG,SAAS,GAAG,SAAS,IAAI;IACxI,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IAGf,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAA;IAErC,EAAE,EAAE,mBAAmB,SAAS,kBAAkB,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAA;IAElJ,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,SAAS,YAAY,GAAG,YAAY,EACtG,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,WAAW,CAAC,EAAE,KAAK,KAChB,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAClC,SAAS,EAAE,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,SAAS,YAAY,GAAG,YAAY,EAC1G,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,WAAW,CAAC,EAAE,KAAK,KAChB,UAAU,CAAC,OAAO,CAAC,CAAA;IAIxB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;CACpC,CAAA"}
package/package.json CHANGED
@@ -10,14 +10,14 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/boundwitness-model": "^2.50.4",
14
- "@xyo-network/core": "^2.50.4",
15
- "@xyo-network/payload-model": "^2.50.4",
16
- "@xyo-network/promise": "^2.50.4"
13
+ "@xyo-network/boundwitness-model": "^2.50.6",
14
+ "@xyo-network/core": "^2.50.6",
15
+ "@xyo-network/payload-model": "^2.50.6",
16
+ "@xyo-network/promise": "^2.50.6"
17
17
  },
18
18
  "devDependencies": {
19
- "@xylabs/ts-scripts-yarn3": "^2.16.0-rc.2",
20
- "@xylabs/tsconfig": "^2.16.0-rc.2",
19
+ "@xylabs/ts-scripts-yarn3": "^2.16.0",
20
+ "@xylabs/tsconfig": "^2.16.0",
21
21
  "typescript": "^4.9.5"
22
22
  },
23
23
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -53,5 +53,5 @@
53
53
  },
54
54
  "sideEffects": false,
55
55
  "types": "dist/types/index.d.ts",
56
- "version": "2.50.4"
56
+ "version": "2.50.6"
57
57
  }
@@ -0,0 +1,5 @@
1
+ import { AnyObject } from '@xyo-network/core'
2
+
3
+ export type Event = string
4
+
5
+ export type EventArgs<Args extends AnyObject = AnyObject> = Args
@@ -0,0 +1,3 @@
1
+ import { EventArgs } from './EventArgs'
2
+
3
+ export type EventListener<T extends EventArgs = EventArgs> = (args: T) => void
@@ -0,0 +1,11 @@
1
+ import { EventArgs } from './EventArgs'
2
+ import { EventListener } from './EventListener'
3
+
4
+ export type EventEmitterFunc<TResult, TEvent extends string = never, TEventArgs extends EventArgs = EventArgs> = (
5
+ event: TEvent,
6
+ handler: EventListener<TEventArgs>,
7
+ ) => TResult
8
+
9
+ export interface ModuleEventEmitter<TEvent extends string = never, TEventArgs extends EventArgs = EventArgs> {
10
+ on: EventEmitterFunc<this, TEvent, TEventArgs>
11
+ }
@@ -0,0 +1,29 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness-model'
2
+ import { AnyObject } from '@xyo-network/core'
3
+ import { XyoPayload } from '@xyo-network/payload-model'
4
+
5
+ import { Module } from '../model'
6
+ import { XyoQueryBoundWitness } from '../Query'
7
+ import { EventArgs } from './EventArgs'
8
+ import { ModuleEventEmitter } from './ModuleEventEmitter'
9
+
10
+ export type ModuleQueriedEvent = 'moduleQueried'
11
+ export const ModuleQueriedEvent: ModuleQueriedEvent = 'moduleQueried'
12
+
13
+ export type ModuleEventArgs<TArgs extends AnyObject | undefined = undefined> = TArgs extends AnyObject
14
+ ? EventArgs<
15
+ {
16
+ module: Module
17
+ } & TArgs
18
+ >
19
+ : EventArgs<{
20
+ module: Module
21
+ }>
22
+
23
+ export type ModuleQueriedEventArgs = ModuleEventArgs<{
24
+ payloads?: XyoPayload[]
25
+ query: XyoQueryBoundWitness
26
+ result: [XyoBoundWitness, XyoPayload[]]
27
+ }>
28
+
29
+ export type ModuleQueriedEventEmitter = ModuleEventEmitter<ModuleQueriedEvent, ModuleQueriedEventArgs>
@@ -0,0 +1,4 @@
1
+ export * from './EventArgs'
2
+ export * from './EventListener'
3
+ export * from './ModuleEventEmitter'
4
+ export * from './ModuleQueried'
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './Config'
2
+ export * from './Events'
2
3
  export * from './model'
3
4
  export * from './ModuleFilter'
4
5
  export * from './ModuleQueryResult'
@@ -2,6 +2,7 @@ import { XyoPayload } from '@xyo-network/payload-model'
2
2
  import { Promisable } from '@xyo-network/promise'
3
3
 
4
4
  import { ModuleConfig } from '../Config'
5
+ import { ModuleEventEmitter, ModuleQueriedEventEmitter } from '../Events'
5
6
  import { ModuleFilter } from '../ModuleFilter'
6
7
  import { ModuleQueryResult } from '../ModuleQueryResult'
7
8
  import { XyoQueryBoundWitness } from '../Query'
@@ -13,13 +14,15 @@ export interface ModuleResolver {
13
14
  resolve<T extends Module = Module>(filter?: ModuleFilter): Promisable<T[]>
14
15
  }
15
16
 
16
- export type Module<TConfig extends ModuleConfig = ModuleConfig> = {
17
+ export type Module<TConfig extends ModuleConfig = ModuleConfig, TModuleEventEmitter extends ModuleEventEmitter | undefined = undefined> = {
17
18
  address: string
18
19
  config: TConfig
19
20
 
20
21
  /* The resolver is a 'down' resolver. It can resolve the module or any children (if it is a node for example), that are in the module*/
21
22
  readonly downResolver: ModuleResolver
22
23
 
24
+ on: TModuleEventEmitter extends ModuleEventEmitter ? ModuleQueriedEventEmitter['on'] | TModuleEventEmitter['on'] : ModuleQueriedEventEmitter['on']
25
+
23
26
  queries: string[]
24
27
  query: <T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(
25
28
  query: T,