@xyo-network/bridge-module-resolver 2.89.0-rc.11 → 2.89.0-rc.13

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 (34) hide show
  1. package/dist/browser/ModuleResolver.d.cts +2 -3
  2. package/dist/browser/ModuleResolver.d.cts.map +1 -1
  3. package/dist/browser/ModuleResolver.d.mts +2 -3
  4. package/dist/browser/ModuleResolver.d.mts.map +1 -1
  5. package/dist/browser/ModuleResolver.d.ts +2 -3
  6. package/dist/browser/ModuleResolver.d.ts.map +1 -1
  7. package/dist/browser/ProxyModule.d.cts +1 -1
  8. package/dist/browser/ProxyModule.d.cts.map +1 -1
  9. package/dist/browser/ProxyModule.d.mts +1 -1
  10. package/dist/browser/ProxyModule.d.mts.map +1 -1
  11. package/dist/browser/ProxyModule.d.ts +1 -1
  12. package/dist/browser/ProxyModule.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +0 -3
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.js +0 -3
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/node/ModuleResolver.d.cts +2 -3
  18. package/dist/node/ModuleResolver.d.cts.map +1 -1
  19. package/dist/node/ModuleResolver.d.mts +2 -3
  20. package/dist/node/ModuleResolver.d.mts.map +1 -1
  21. package/dist/node/ModuleResolver.d.ts +2 -3
  22. package/dist/node/ModuleResolver.d.ts.map +1 -1
  23. package/dist/node/ProxyModule.d.cts +1 -1
  24. package/dist/node/ProxyModule.d.cts.map +1 -1
  25. package/dist/node/ProxyModule.d.mts +1 -1
  26. package/dist/node/ProxyModule.d.mts.map +1 -1
  27. package/dist/node/ProxyModule.d.ts +1 -1
  28. package/dist/node/ProxyModule.d.ts.map +1 -1
  29. package/dist/node/index.cjs +0 -3
  30. package/dist/node/index.cjs.map +1 -1
  31. package/dist/node/index.js +0 -3
  32. package/dist/node/index.js.map +1 -1
  33. package/package.json +21 -21
  34. package/src/ModuleResolver.ts +2 -6
@@ -1,8 +1,8 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { BridgeModule } from '@xyo-network/bridge-model';
3
- import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
3
+ import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolverInstance } from '@xyo-network/module-model';
4
4
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
5
- export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
5
+ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
6
6
  protected readonly bridge: BridgeModule;
7
7
  protected wrapperAccount: AccountInstance;
8
8
  protected options?: ModuleFilterOptions<T> | undefined;
@@ -10,7 +10,6 @@ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInsta
10
10
  private remoteAddresses?;
11
11
  private resolvedModules;
12
12
  constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
13
- get isModuleResolver(): boolean;
14
13
  add(module: Module): this;
15
14
  add(module: Module[]): this;
16
15
  currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EAGvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,sBAAsB;IAQ1I,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAKnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -1,8 +1,8 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { BridgeModule } from '@xyo-network/bridge-model';
3
- import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
3
+ import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolverInstance } from '@xyo-network/module-model';
4
4
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
5
- export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
5
+ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
6
6
  protected readonly bridge: BridgeModule;
7
7
  protected wrapperAccount: AccountInstance;
8
8
  protected options?: ModuleFilterOptions<T> | undefined;
@@ -10,7 +10,6 @@ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInsta
10
10
  private remoteAddresses?;
11
11
  private resolvedModules;
12
12
  constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
13
- get isModuleResolver(): boolean;
14
13
  add(module: Module): this;
15
14
  add(module: Module[]): this;
16
15
  currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EAGvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,sBAAsB;IAQ1I,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAKnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -1,8 +1,8 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { BridgeModule } from '@xyo-network/bridge-model';
3
- import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
3
+ import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolverInstance } from '@xyo-network/module-model';
4
4
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
5
- export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
5
+ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
6
6
  protected readonly bridge: BridgeModule;
7
7
  protected wrapperAccount: AccountInstance;
8
8
  protected options?: ModuleFilterOptions<T> | undefined;
@@ -10,7 +10,6 @@ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInsta
10
10
  private remoteAddresses?;
11
11
  private resolvedModules;
12
12
  constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
13
- get isModuleResolver(): boolean;
14
13
  add(module: Module): this;
15
14
  add(module: Module[]): this;
16
15
  currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EAGvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,sBAAsB;IAQ1I,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAKnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -63,7 +63,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
63
63
  schema: string;
64
64
  }>, ModuleEventData<object>>;
65
65
  get config(): ModuleConfig;
66
- get downResolver(): import("@xyo-network/module-model").ModuleResolver;
66
+ get downResolver(): import("@xyo-network/module-model").ModuleResolverInstance;
67
67
  get id(): string;
68
68
  get queries(): string[];
69
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,+DAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
@@ -63,7 +63,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
63
63
  schema: string;
64
64
  }>, ModuleEventData<object>>;
65
65
  get config(): ModuleConfig;
66
- get downResolver(): import("@xyo-network/module-model").ModuleResolver;
66
+ get downResolver(): import("@xyo-network/module-model").ModuleResolverInstance;
67
67
  get id(): string;
68
68
  get queries(): string[];
69
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,+DAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
@@ -63,7 +63,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
63
63
  schema: string;
64
64
  }>, ModuleEventData<object>>;
65
65
  get config(): ModuleConfig;
66
- get downResolver(): import("@xyo-network/module-model").ModuleResolver;
66
+ get downResolver(): import("@xyo-network/module-model").ModuleResolverInstance;
67
67
  get id(): string;
68
68
  get queries(): string[];
69
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,+DAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
@@ -193,9 +193,6 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_res
193
193
  this.primed = void 0;
194
194
  this.resolvedModules = {};
195
195
  }
196
- get isModuleResolver() {
197
- return true;
198
- }
199
196
  add(_module) {
200
197
  throw new Error("Method not implemented.");
201
198
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["export * from './ModuleResolver'\nexport * from './ProxyModule'\n","import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["import_lodash","import_address_payload_plugin","import_module_resolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","isModuleResolver","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["export * from './ModuleResolver'\nexport * from './ProxyModule'\n","import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolverInstance,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,mBAA4B;AAC5B,IAAAA,iBAAwB;AAExB,IAAAC,iCAA8C;AAC9C,6BAAkC;AAClC,+BAAiC;AAEjC,2BAAgC;AAChC,6BAA+B;AAW/B,IAAAC,0BAAwC;AACxC,4BAA8B;AAC9B,wBAA6B;AAC7B,0BAA4B;AAC5B,4BAAiC;AACjC,8BAAgC;AAChC,2BAAgC;AAChC,6BAA+B;;;AC1B/B,oBAAyB;AACzB,oBAAwB;AAExB,oCAA8C;AAG9C,4BAAmE;AACnE,6BAA4B;AAa5B,6BAAwC;AAIjC,IAAMC,0BAAmD;AAYzD,IAAMC,cAAN,cAA0BC,mCAAAA;EApCjC,OAoCiCA;;;;EACtBC;EAEDC;EAERC,YAAmBC,aAAgC;AACjD,UAAM;MAAEC,QAAQD,YAAYE,OAAOC,aAAaH,YAAYI,OAAO;IAAE,CAAA;SADpDJ,cAAAA;SAJVH,aAAa,IAAIQ,+CAAAA;SAElBP,aAAa;EAIrB;EAEA,IAAIM,UAAU;AACZ,WAAO,KAAKJ,YAAYI,QAAQE,YAAW;EAC7C;EAEA,IAAIJ,SAAS;AACX,WAAO,KAAKF,YAAYE;EAC1B;EAEA,IAAID,SAAuB;AACzB,WAAO,KAAKC,OAAOC,aAAa,KAAKC,OAAO;EAC9C;EAEA,IAAIG,eAAe;AACjB,eAAOC,wBAAS,KAAKN,OAAOO,mBAAmB,KAAKL,OAAO,GAAG,wBAAA;EAChE;EAEA,IAAIM,KAAK;AACP,WAAO,KAAKT,OAAOU,QAAQ,KAAKP;EAClC;EAEA,IAAIQ,UAAU;AACZ,WAAO,KAAKV,OAAOW,cAAc,KAAKT,OAAO;EAC/C;EAEAU,sBAA2D;AACzD,UAAM,IAAIC,MAAM,iBAAA;EAClB;EAEA,MAAMC,KAAQC,SAA2B;AACvC,QAAI,KAAKnB,cAAc,GAAG;AACxB,WAAKA,aAAa;AAClB,YAAMoB,OAA4B;QAAEF,MAAM;QAAMG,QAAQ;MAAK;AAC7D,YAAM,KAAKC,KAAK,cAAcF,IAAAA;IAChC;AACA,SAAKpB;AACL,QAAI;AACF,aAAO,MAAMmB,QAAAA;IACf,UAAA;AACE,WAAKnB;AACL,UAAI,KAAKA,cAAc,GAAG;AACxB,aAAKA,aAAa;AAClB,cAAMoB,OAA4B;UAAEF,MAAM;UAAOG,QAAQ;QAAK;AAC9D,cAAM,KAAKC,KAAK,cAAcF,IAAAA;MAChC;IACF;EACF;EAEA,MAAMG,WAAuC;AAC3C,WAAO,MAAM,KAAKL,KAAK,YAAA;AACrB,YAAMM,cAAiC;QACrClB,SAAS,KAAKA;QACdQ,SAAS,KAAKA;MAChB;AACA,UAAI,KAAKX,OAAOU,MAAM;AACpBW,oBAAYX,OAAO,KAAKV,OAAOU;MACjC;AAEA,YAAMY,WAAW,MAAM,KAAKA,SAAQ;AAEpCD,kBAAYE,eAAWC,uBACrBF,UAAUG,IAAI,CAACC,YAAAA;AACb,cAAMvB,UAAUuB,QAAQC,WAAWC,8CAAiBF,QAA2BvB,UAAU0B;AACzF,eAAO1B,WAAW,KAAKA,UAAU0B,SAAY1B;MAC/C,CAAA,KAAM,CAAA,CAAE;AAGV,aAAOkB;IACT,CAAA;EACF;EAEA,MAAMC,WAA+B;AACnC,WAAO,MAAM,KAAKP,KAAK,YAAA;AACrB,aAAO,MAAM,KAAKd,OAAO6B,eAAc;IACzC,CAAA;EACF;EAEAC,SAASC,QAAoD;AAC3D,UAAMtB,OAAO,KAAKV,OAAOU,QAAQ;AACjC,WAAO;MAAEV,QAAQ;QAAEU;QAAM,GAAG,KAAKV;MAAO;MAAG2B,QAAQM;IAA4B;EACjF;EAEAC,gBAAuD;AACrD,UAAM,IAAIpB,MAAM,iBAAA;EAClB;EAEAqB,eAA4C;AAC1C,UAAM,IAAIrB,MAAM,iBAAA;EAClB;EAEA,MAAMsB,MAAuDA,OAAUC,UAAkD;AACvH,WAAO,MAAM,KAAKtB,KAAK,YAAA;AACrB,YAAMuB,aAAS/B,wBAAS,MAAM,KAAKN,OAAOsC,YAAY,KAAKpC,SAASiC,OAAOC,QAAAA,GAAW,qBAAA;AACtF,YAAM,KAAKlB,KAAK,iBAAiB;QAAED,QAAQ;QAAMmB;QAAUD;QAAOE;MAAO,CAAA;AACzE,aAAOA;IACT,CAAA;EACF;EAEA,MAAME,UAAUJ,OAA0BC,UAAsBI,aAA8C;AAC5G,WAAO,MAAM,KAAKxC,OAAOyC,gBAAgB,KAAKvC,SAASiC,OAAOC,UAAUI,WAAAA;EAC1E;EAKA,MAAME,QACJC,uBACAC,SACwD;AACxD,WAAO,MAAM,KAAK9B,KAAK,YAAA;AACrB,aAAO,OAAO,OAAO6B,0BAA0B,WAC3C,KAAK3C,OAAO6C,cAAc,KAAK3C,SAASyC,uBAAuBC,OAAAA,IAC/D,KAAK5C,OAAO6C,cAAc,KAAK3C,SAASyC,uBAAuBC,OAAAA;IACrE,CAAA;EACF;AACF;;;ADjIO,IAAME,uBAAN,MAAMA,8BAAwEC,gDAAAA;EA9BrF,OA8BqFA;;;;;;EAC3EC;EACAC;EACAC;;;EAIRC,YACqBC,QACTC,gBACAC,SACV;AACA,UAAK;SAJcF,SAAAA;SACTC,iBAAAA;SACAC,UAAAA;SATJN,SAAuCO;SAEvCL,kBAA2D,CAAC;EAUpE;EAISM,IAAIC,SAAkC;AAC7C,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEA,MAAMC,yBAAgG;AACpG,UAAMC,SAA4B,CAAC;AACnC,UAAMC,QAAQC,IACZC,OAAOC,QAAQ,KAAKd,eAAe,EAAEe,IAAI,OAAO,CAACC,KAAKC,KAAAA,MAAM;AAC1DP,aAAOM,GAAAA,IAAQ,MAAMC;IACvB,CAAA,CAAA;AAGF,WAAOP;EACT;EAEA,MAAMQ,qBAAqB;AACzB,SAAKnB,kBACH,KAAKA,oBACJ,YAAA;AACC,YAAMoB,WAAW,MAAM,KAAKjB,OAAOkB,eAAef,QAAW,KAAKD,SAASiB,QAAAA;AAC3E,iBAAOC,wBACLH,UAAUJ,IAAI,CAACQ,YAAAA;AACb,YAAIA,QAAQC,WAAWC,8CAAe;AACpC,gBAAMC,gBAAgBH;AACtB,iBAAOG,cAAcC;QACvB,OAAO;AACL,iBAAO;QACT;MACF,CAAA,CAAA;IAEJ,GAAA;AACF,WAAO,MAAM,KAAK5B;EACpB;EAEA6B,QAAQ;AACN,SAAK9B,SACH,KAAKA,WACJ,YAAA;AACC,YAAM,KAAK+B,qBAAoB;AAC/B,aAAO;IACT,GAAA;AACF,WAAO,KAAK/B;EACd;EAESgC,OAAOC,UAAmC;AACjD,UAAM,IAAIvB,MAAM,yBAAA;EAClB;EAEAwB,QAAQ;AACN,SAAKlC,SAASO;AACd,SAAKN,kBAAkBM;AACvB,SAAKL,kBAAkB,CAAC;EAC1B;EAIA,MAAeiC,QACbC,uBACA9B,SAC8B;AAC9B,UAAM+B,aAAa,OAAO,YAAA;AACxB,YAAMC,iBAAiB;QAAE,GAAGhC;QAASiB,WAAWjB,SAASiB,YAAYzB,sBAAqByC,mBAAmB;MAAE;AAC/G,YAAM,KAAKT,MAAK;AAChB,YAAM,KAAKC,qBAAoB;AAC/B,UAAI,OAAOK,0BAA0B,UAAU;AAC7C,YAAIE,eAAef,WAAW,GAAG;AAC/B;QACF;AACA,cAAMX,SAAyB,MAAM,KAAK4B,iBAAoBJ,qBAAAA,KAA4B,MAAM,KAAKK,cAAiBL,qBAAAA;AACtH,eAAOxB;MACT,OAAO;AACL,YAAI0B,eAAef,WAAW,GAAG;AAC/B,iBAAO,CAAA;QACT;AACA,cAAMX,SAAc,MAAM,KAAKmB,qBAAwBK,qBAAAA;AACvD,eAAOxB;MACT;IACF,GAAA;AAEA,UAAM8B,WAAWpC,SAASoC;AAC1B,QAAIA,UAAU;AACZ,aAAOC,MAAMC,QAAQP,UAAAA,IAAcA,YAAYQ,OAAO,CAACC,YAAWJ,SAASI,OAAAA,CAAAA,IAAWJ,SAASL,UAAAA,IAAcA,aAAa9B;IAC5H,OAAO;AACL,aAAO8B;IACT;EACF;EAEA,MAAcG,iBAA4DO,eAA+C;AACvH,UAAM9C,kBAAkB,MAAM,KAAKmB,mBAAkB;AAGrD,QAAI,CAACnB,gBAAgB+C,SAASD,aAAAA,GAAgB;AAE5C,aAAOxC;IACT;AAEA,UAAM0C,SAAS,KAAK/C,gBAAgB6C,aAAAA;AACpC,QAAIE,WAAW1C;AAAW,aAAQ,MAAM0C;AAExC,SAAK/C,gBAAgB6C,aAAAA,IACnB,KAAK7C,gBAAgB6C,aAAAA,MACpB,OAAOlB,YAAAA;AAEN,YAAM,KAAKzB,OAAOkB,eAAeO,OAAAA;AAEjC,YAAMqB,MAAc,IAAIC,YAAY;QAAEtB;QAASzB,QAAQ,KAAKA;QAAQgD,QAAQ;UAAE1B,QAAQ2B;QAAwB;MAAE,CAAA;AAEhH,UAAI;AACF,gBAAIC,0CAAkBJ,GAAAA,GAAM;AAC1B,iBAAOK,0CAAiBC,KAAKN,KAAK,KAAK7C,cAAc;QACvD;AAEA,gBAAIoD,sCAAgBP,GAAAA,GAAM;AACxB,iBAAOQ,sCAAeF,KAAKN,KAAK,KAAK7C,cAAc;QACrD;AAEA,gBAAIsD,sCAAgBT,GAAAA,GAAM;AACxB,iBAAOU,sCAAeJ,KAAKN,KAAK,KAAK7C,cAAc;QACrD;AAEA,gBAAIwD,gCAAaX,GAAAA,GAAM;AACrB,iBAAOY,gCAAYN,KAAKN,KAAK,KAAK7C,cAAc;QAClD;AAEA,gBAAI0D,wCAAiBb,GAAAA,GAAM;AACzB,iBAAOc,wCAAgBR,KAAKN,KAAK,KAAK7C,cAAc;QACtD;AACA4D,gBAAQC,KAAK,+CAA+CnB,aAAAA,GAAgB;AAC5E,eAAOoB,oCAAcX,KAAKN,KAAK,KAAK7C,cAAc;MACpD,SAAS+D,IAAI;AACXC,sCAAYD,IAAI,CAACE,UAAAA;AACfL,kBAAQK,MAAM,0CAA0CA,MAAMC,OAAO,KAAKxB,aAAAA,GAAgB;QAC5F,CAAA;MACF;IACF,GAAGA,aAAAA;AAEL,WAAQ,MAAM,KAAK7C,gBAAgB6C,aAAAA;EACrC;EAEA,MAAcN,cAAyD+B,MAAsC;AAC3G,UAAMC,UAAU,MAAM,KAAK9D,uBAAsB;AACjD,WAAOI,OAAO2D,OAAOD,OAAAA,EAClB5B,OAAO,CAACC,YAAWA,QAAOM,OAAOoB,SAASA,IAAAA,EAC1CG,IAAG;EACR;EAEA,MAAcC,eAA0DC,SAAiC;AACvG,WAAO9D,OAAO2D,OAAO,MAAM,KAAK/D,uBAAsB,CAAA,EAAIkC,OAAO,CAACC,YAAAA;AAEhE,YAAMgC,QAAQhC,QAAO+B,QAAQhC,OAAO,CAACkC,UAAUF,QAAQG,KAAK,CAACC,MAAMA,MAAMF,KAAAA,CAAAA;AAGzE,aAAOF,QAAQK,WAAWJ,MAAMI;IAClC,CAAA;EACF;EAEA,MAAcnD,qBAAgEc,QAAqC;AACjH,QAAKA,QAAgChB,SAAS;AAC5C,aAAO,MAAM,KAAKsD,8BAAiCtC,MAAAA;IACrD;AAEA,QAAKA,QAA6B2B,MAAM;AACtC,aAAO,MAAM,KAAKY,2BAA8BvC,MAAAA;IAClD;AAEA,QAAKA,QAA8BkC,OAAO;AACxC,aAAO,MAAM,KAAKM,4BAA+BxC,MAAAA;IACnD;AAGA,WAAO,MAAM,KAAKsC,8BAAiC;MAAEtD,SAAS,MAAM,KAAKT,mBAAkB;IAAG,CAAA;EAChG;EAEA,MAAc+D,8BAAyEtC,QAA2C;AAChI,eAAOrB,wBAAQ,MAAMX,QAAQC,IAAI+B,OAAOhB,QAAQZ,IAAI,CAACY,YAAY,KAAKW,iBAAoBX,OAAAA,CAAAA,CAAAA,CAAAA;EAC5F;EAEA,MAAcuD,2BAAsEvC,QAAwC;AAC1H,eAAOrB,wBAAQ,MAAMX,QAAQC,IAAI+B,OAAO2B,KAAKvD,IAAI,OAAOuD,SAAS,MAAM,KAAK/B,cAAiB+B,IAAAA,CAAAA,CAAAA,CAAAA;EAC/F;EAEA,MAAca,4BAAuExC,QAAyC;AAC5H,eAAOrB,yBAAS,MAAMX,QAAQC,IAAI+B,OAAOkC,MAAM9D,IAAI,OAAO8D,UAAU,MAAM,KAAKH,eAAkBG,KAAAA,CAAAA,CAAAA,GAAUO,KAAI,CAAA;EACjH;AACF;","names":["import_lodash","import_address_payload_plugin","import_module_resolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
@@ -167,9 +167,6 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleRe
167
167
  this.primed = void 0;
168
168
  this.resolvedModules = {};
169
169
  }
170
- get isModuleResolver() {
171
- return true;
172
- }
173
170
  add(_module) {
174
171
  throw new Error("Method not implemented.");
175
172
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["handleError","compact","AddressSchema","isArchivistModule","ArchivistWrapper","isDivinerModule","DivinerWrapper","CompositeModuleResolver","ModuleWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","isWitnessModule","WitnessWrapper","assertEx","compact","AddressSchema","ModuleManifestPayloadSchema","BaseEmitter","CompositeModuleResolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","isModuleResolver","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
1
+ {"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolverInstance,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["handleError","compact","AddressSchema","isArchivistModule","ArchivistWrapper","isDivinerModule","DivinerWrapper","CompositeModuleResolver","ModuleWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","isWitnessModule","WitnessWrapper","assertEx","compact","AddressSchema","ModuleManifestPayloadSchema","BaseEmitter","CompositeModuleResolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
@@ -1,8 +1,8 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { BridgeModule } from '@xyo-network/bridge-model';
3
- import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
3
+ import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolverInstance } from '@xyo-network/module-model';
4
4
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
5
- export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
5
+ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
6
6
  protected readonly bridge: BridgeModule;
7
7
  protected wrapperAccount: AccountInstance;
8
8
  protected options?: ModuleFilterOptions<T> | undefined;
@@ -10,7 +10,6 @@ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInsta
10
10
  private remoteAddresses?;
11
11
  private resolvedModules;
12
12
  constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
13
- get isModuleResolver(): boolean;
14
13
  add(module: Module): this;
15
14
  add(module: Module[]): this;
16
15
  currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EAGvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,sBAAsB;IAQ1I,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAKnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -1,8 +1,8 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { BridgeModule } from '@xyo-network/bridge-model';
3
- import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
3
+ import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolverInstance } from '@xyo-network/module-model';
4
4
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
5
- export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
5
+ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
6
6
  protected readonly bridge: BridgeModule;
7
7
  protected wrapperAccount: AccountInstance;
8
8
  protected options?: ModuleFilterOptions<T> | undefined;
@@ -10,7 +10,6 @@ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInsta
10
10
  private remoteAddresses?;
11
11
  private resolvedModules;
12
12
  constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
13
- get isModuleResolver(): boolean;
14
13
  add(module: Module): this;
15
14
  add(module: Module[]): this;
16
15
  currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EAGvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,sBAAsB;IAQ1I,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAKnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -1,8 +1,8 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { BridgeModule } from '@xyo-network/bridge-model';
3
- import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
3
+ import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolverInstance } from '@xyo-network/module-model';
4
4
  import { CompositeModuleResolver } from '@xyo-network/module-resolver';
5
- export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
5
+ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
6
6
  protected readonly bridge: BridgeModule;
7
7
  protected wrapperAccount: AccountInstance;
8
8
  protected options?: ModuleFilterOptions<T> | undefined;
@@ -10,7 +10,6 @@ export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInsta
10
10
  private remoteAddresses?;
11
11
  private resolvedModules;
12
12
  constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
13
- get isModuleResolver(): boolean;
14
13
  add(module: Module): this;
15
14
  add(module: Module[]): this;
16
15
  currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EAGvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,sBAAsB;IAQ1I,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAKnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -63,7 +63,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
63
63
  schema: string;
64
64
  }>, ModuleEventData<object>>;
65
65
  get config(): ModuleConfig;
66
- get downResolver(): import("@xyo-network/module-model").ModuleResolver;
66
+ get downResolver(): import("@xyo-network/module-model").ModuleResolverInstance;
67
67
  get id(): string;
68
68
  get queries(): string[];
69
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,+DAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
@@ -63,7 +63,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
63
63
  schema: string;
64
64
  }>, ModuleEventData<object>>;
65
65
  get config(): ModuleConfig;
66
- get downResolver(): import("@xyo-network/module-model").ModuleResolver;
66
+ get downResolver(): import("@xyo-network/module-model").ModuleResolverInstance;
67
67
  get id(): string;
68
68
  get queries(): string[];
69
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,+DAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
@@ -63,7 +63,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
63
63
  schema: string;
64
64
  }>, ModuleEventData<object>>;
65
65
  get config(): ModuleConfig;
66
- get downResolver(): import("@xyo-network/module-model").ModuleResolver;
66
+ get downResolver(): import("@xyo-network/module-model").ModuleResolverInstance;
67
67
  get id(): string;
68
68
  get queries(): string[];
69
69
  addressPreviousHash(): Promise<AddressPreviousHashPayload>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,6BAA6B,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,YAAY,+DAEf;IAED,IAAI,EAAE,WAEL;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAWnG"}
@@ -189,9 +189,6 @@ var _BridgeModuleResolver = class _BridgeModuleResolver extends import_module_re
189
189
  this.primed = void 0;
190
190
  this.resolvedModules = {};
191
191
  }
192
- get isModuleResolver() {
193
- return true;
194
- }
195
192
  add(_module) {
196
193
  throw new Error("Method not implemented.");
197
194
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["export * from './ModuleResolver'\nexport * from './ProxyModule'\n","import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["import_lodash","import_address_payload_plugin","import_module_resolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","isModuleResolver","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["export * from './ModuleResolver'\nexport * from './ProxyModule'\n","import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolverInstance,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["import_lodash","import_address_payload_plugin","import_module_resolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
@@ -163,9 +163,6 @@ var _BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleR
163
163
  this.primed = void 0;
164
164
  this.resolvedModules = {};
165
165
  }
166
- get isModuleResolver() {
167
- return true;
168
- }
169
166
  add(_module) {
170
167
  throw new Error("Method not implemented.");
171
168
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["handleError","compact","AddressSchema","isArchivistModule","ArchivistWrapper","isDivinerModule","DivinerWrapper","CompositeModuleResolver","ModuleWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","isWitnessModule","WitnessWrapper","assertEx","compact","AddressSchema","ModuleManifestPayloadSchema","BaseEmitter","CompositeModuleResolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","isModuleResolver","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
1
+ {"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\nimport { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolverInstance,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover(undefined, this.options?.maxDepth)\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\n })()\n\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\n } else {\n return unfiltered\n }\n }\n\n private async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.includes(targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached !== undefined) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n return this.bridge.targetConfig(this.address)\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get id() {\n return this.config.name ?? this.address\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw new Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address == this.address ? undefined : address\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw new Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw new Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n return await (typeof nameOrAddressOrFilter === 'string'\n ? this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n : this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options))\n })\n }\n}\n"],"mappings":"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","names":["handleError","compact","AddressSchema","isArchivistModule","ArchivistWrapper","isDivinerModule","DivinerWrapper","CompositeModuleResolver","ModuleWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","isWitnessModule","WitnessWrapper","assertEx","compact","AddressSchema","ModuleManifestPayloadSchema","BaseEmitter","CompositeModuleResolver","ProxyModuleConfigSchema","ProxyModule","BaseEmitter","upResolver","_busyCount","constructor","proxyParams","config","bridge","targetConfig","address","CompositeModuleResolver","toLowerCase","downResolver","assertEx","targetDownResolver","id","name","queries","targetQueries","addressPreviousHash","Error","busy","closure","args","module","emit","describe","description","discover","children","compact","map","payload","schema","AddressSchema","undefined","targetDiscover","manifest","_depth","ModuleManifestPayloadSchema","moduleAddress","previousHash","query","payloads","result","targetQuery","queryable","queryConfig","targetQueryable","resolve","nameOrAddressOrFilter","options","targetResolve","BridgeModuleResolver","CompositeModuleResolver","primed","remoteAddresses","resolvedModules","constructor","bridge","wrapperAccount","options","undefined","add","_module","Error","currentResolvedModules","result","Promise","all","Object","entries","map","key","value","getRemoteAddresses","discover","targetDiscover","maxDepth","compact","payload","schema","AddressSchema","schemaPayload","address","prime","resolveRemoteModules","remove","_address","reset","resolve","nameOrAddressOrFilter","unfiltered","mutatedOptions","defaultMaxDepth","resolveByAddress","resolveByName","identity","Array","isArray","filter","module","targetAddress","includes","cached","mod","ProxyModule","config","ProxyModuleConfigSchema","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isWitnessModule","WitnessWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","console","warn","ModuleWrapper","ex","handleError","error","message","name","modules","values","pop","resolveByQuery","queries","found","query","find","q","length","resolveRemoteModulesByAddress","resolveRemoteModulesByName","resolveRemoteModulesByQuery","flat"]}
package/package.json CHANGED
@@ -14,26 +14,26 @@
14
14
  "@xylabs/error": "^2.14.0",
15
15
  "@xylabs/lodash": "^2.14.0",
16
16
  "@xylabs/promise": "^2.14.0",
17
- "@xyo-network/account-model": "~2.89.0-rc.11",
18
- "@xyo-network/address-payload-plugin": "~2.89.0-rc.11",
19
- "@xyo-network/archivist-model": "~2.89.0-rc.11",
20
- "@xyo-network/archivist-wrapper": "~2.89.0-rc.11",
21
- "@xyo-network/boundwitness-model": "~2.89.0-rc.11",
22
- "@xyo-network/bridge-model": "~2.89.0-rc.11",
23
- "@xyo-network/diviner-model": "~2.89.0-rc.11",
24
- "@xyo-network/diviner-wrapper": "~2.89.0-rc.11",
25
- "@xyo-network/manifest-model": "~2.89.0-rc.11",
26
- "@xyo-network/module-abstract": "~2.89.0-rc.11",
27
- "@xyo-network/module-model": "~2.89.0-rc.11",
28
- "@xyo-network/module-resolver": "~2.89.0-rc.11",
29
- "@xyo-network/module-wrapper": "~2.89.0-rc.11",
30
- "@xyo-network/node-model": "~2.89.0-rc.11",
31
- "@xyo-network/node-wrapper": "~2.89.0-rc.11",
32
- "@xyo-network/payload-model": "~2.89.0-rc.11",
33
- "@xyo-network/sentinel-model": "~2.89.0-rc.11",
34
- "@xyo-network/sentinel-wrapper": "~2.89.0-rc.11",
35
- "@xyo-network/witness-model": "~2.89.0-rc.11",
36
- "@xyo-network/witness-wrapper": "~2.89.0-rc.11"
17
+ "@xyo-network/account-model": "~2.89.0-rc.13",
18
+ "@xyo-network/address-payload-plugin": "~2.89.0-rc.13",
19
+ "@xyo-network/archivist-model": "~2.89.0-rc.13",
20
+ "@xyo-network/archivist-wrapper": "~2.89.0-rc.13",
21
+ "@xyo-network/boundwitness-model": "~2.89.0-rc.13",
22
+ "@xyo-network/bridge-model": "~2.89.0-rc.13",
23
+ "@xyo-network/diviner-model": "~2.89.0-rc.13",
24
+ "@xyo-network/diviner-wrapper": "~2.89.0-rc.13",
25
+ "@xyo-network/manifest-model": "~2.89.0-rc.13",
26
+ "@xyo-network/module-abstract": "~2.89.0-rc.13",
27
+ "@xyo-network/module-model": "~2.89.0-rc.13",
28
+ "@xyo-network/module-resolver": "~2.89.0-rc.13",
29
+ "@xyo-network/module-wrapper": "~2.89.0-rc.13",
30
+ "@xyo-network/node-model": "~2.89.0-rc.13",
31
+ "@xyo-network/node-wrapper": "~2.89.0-rc.13",
32
+ "@xyo-network/payload-model": "~2.89.0-rc.13",
33
+ "@xyo-network/sentinel-model": "~2.89.0-rc.13",
34
+ "@xyo-network/sentinel-wrapper": "~2.89.0-rc.13",
35
+ "@xyo-network/witness-model": "~2.89.0-rc.13",
36
+ "@xyo-network/witness-wrapper": "~2.89.0-rc.13"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@xylabs/ts-scripts-yarn3": "^3.2.42",
@@ -79,7 +79,7 @@
79
79
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
80
80
  },
81
81
  "sideEffects": false,
82
- "version": "2.89.0-rc.11",
82
+ "version": "2.89.0-rc.13",
83
83
  "type": "module",
84
84
  "stableVersion": "2.88.3"
85
85
  }
@@ -13,7 +13,7 @@ import {
13
13
  ModuleFilter,
14
14
  ModuleFilterOptions,
15
15
  ModuleInstance,
16
- ModuleResolver,
16
+ ModuleResolverInstance,
17
17
  NameModuleFilter,
18
18
  QueryModuleFilter,
19
19
  } from '@xyo-network/module-model'
@@ -28,7 +28,7 @@ import { WitnessWrapper } from '@xyo-network/witness-wrapper'
28
28
 
29
29
  import { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'
30
30
 
31
- export class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
31
+ export class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolverInstance {
32
32
  private primed: Promise<boolean> | undefined = undefined
33
33
  private remoteAddresses?: Promise<string[]>
34
34
  private resolvedModules: Record<string, Promise<ModuleInstance>> = {}
@@ -43,10 +43,6 @@ export class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> ext
43
43
  super()
44
44
  }
45
45
 
46
- override get isModuleResolver(): boolean {
47
- return true
48
- }
49
-
50
46
  override add(module: Module): this
51
47
  override add(module: Module[]): this
52
48
  override add(_module: Module | Module[]): this {