@xyo-network/module-resolver 2.92.10 → 2.93.0-rc.1

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 (61) hide show
  1. package/dist/browser/AbstractModuleResolver.d.cts +12 -0
  2. package/dist/browser/AbstractModuleResolver.d.cts.map +1 -0
  3. package/dist/browser/AbstractModuleResolver.d.mts +12 -0
  4. package/dist/browser/AbstractModuleResolver.d.mts.map +1 -0
  5. package/dist/browser/AbstractModuleResolver.d.ts +12 -0
  6. package/dist/browser/AbstractModuleResolver.d.ts.map +1 -0
  7. package/dist/browser/CompositeModuleResolver.d.cts +4 -9
  8. package/dist/browser/CompositeModuleResolver.d.cts.map +1 -1
  9. package/dist/browser/CompositeModuleResolver.d.mts +4 -9
  10. package/dist/browser/CompositeModuleResolver.d.mts.map +1 -1
  11. package/dist/browser/CompositeModuleResolver.d.ts +4 -9
  12. package/dist/browser/CompositeModuleResolver.d.ts.map +1 -1
  13. package/dist/browser/SimpleModuleResolver.d.cts +5 -7
  14. package/dist/browser/SimpleModuleResolver.d.cts.map +1 -1
  15. package/dist/browser/SimpleModuleResolver.d.mts +5 -7
  16. package/dist/browser/SimpleModuleResolver.d.mts.map +1 -1
  17. package/dist/browser/SimpleModuleResolver.d.ts +5 -7
  18. package/dist/browser/SimpleModuleResolver.d.ts.map +1 -1
  19. package/dist/browser/index.cjs +57 -20
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.js +48 -11
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/browser/toJson.d.cts +3 -0
  24. package/dist/browser/toJson.d.cts.map +1 -0
  25. package/dist/browser/toJson.d.mts +3 -0
  26. package/dist/browser/toJson.d.mts.map +1 -0
  27. package/dist/browser/toJson.d.ts +3 -0
  28. package/dist/browser/toJson.d.ts.map +1 -0
  29. package/dist/node/AbstractModuleResolver.d.cts +12 -0
  30. package/dist/node/AbstractModuleResolver.d.cts.map +1 -0
  31. package/dist/node/AbstractModuleResolver.d.mts +12 -0
  32. package/dist/node/AbstractModuleResolver.d.mts.map +1 -0
  33. package/dist/node/AbstractModuleResolver.d.ts +12 -0
  34. package/dist/node/AbstractModuleResolver.d.ts.map +1 -0
  35. package/dist/node/CompositeModuleResolver.d.cts +4 -9
  36. package/dist/node/CompositeModuleResolver.d.cts.map +1 -1
  37. package/dist/node/CompositeModuleResolver.d.mts +4 -9
  38. package/dist/node/CompositeModuleResolver.d.mts.map +1 -1
  39. package/dist/node/CompositeModuleResolver.d.ts +4 -9
  40. package/dist/node/CompositeModuleResolver.d.ts.map +1 -1
  41. package/dist/node/SimpleModuleResolver.d.cts +5 -7
  42. package/dist/node/SimpleModuleResolver.d.cts.map +1 -1
  43. package/dist/node/SimpleModuleResolver.d.mts +5 -7
  44. package/dist/node/SimpleModuleResolver.d.mts.map +1 -1
  45. package/dist/node/SimpleModuleResolver.d.ts +5 -7
  46. package/dist/node/SimpleModuleResolver.d.ts.map +1 -1
  47. package/dist/node/index.cjs +61 -20
  48. package/dist/node/index.cjs.map +1 -1
  49. package/dist/node/index.js +52 -11
  50. package/dist/node/index.js.map +1 -1
  51. package/dist/node/toJson.d.cts +3 -0
  52. package/dist/node/toJson.d.cts.map +1 -0
  53. package/dist/node/toJson.d.mts +3 -0
  54. package/dist/node/toJson.d.mts.map +1 -0
  55. package/dist/node/toJson.d.ts +3 -0
  56. package/dist/node/toJson.d.ts.map +1 -0
  57. package/package.json +11 -10
  58. package/src/AbstractModuleResolver.ts +53 -0
  59. package/src/CompositeModuleResolver.ts +6 -11
  60. package/src/SimpleModuleResolver.ts +8 -8
  61. package/src/toJson.ts +45 -0
@@ -0,0 +1,12 @@
1
+ import { Base, BaseParams } from '@xylabs/object';
2
+ import { Promisable } from '@xylabs/promise';
3
+ import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
+ export declare abstract class AbstractModuleResolver<T extends BaseParams = BaseParams> extends Base<T> implements ModuleResolver {
5
+ resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
6
+ resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
7
+ resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
8
+ /** @deprecated use '*' if trying to resolve all */
9
+ resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
+ abstract resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter: ModuleFilter<T> | ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | T[] | undefined>;
11
+ }
12
+ //# sourceMappingURL=AbstractModuleResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractModuleResolver.d.ts","sourceRoot":"","sources":["../../src/AbstractModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,8BAAsB,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAE,YAAW,cAAc;IACjH,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,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;IAsClI,QAAQ,CAAC,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC/D,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAC9C,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;CACnC"}
@@ -0,0 +1,12 @@
1
+ import { Base, BaseParams } from '@xylabs/object';
2
+ import { Promisable } from '@xylabs/promise';
3
+ import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
+ export declare abstract class AbstractModuleResolver<T extends BaseParams = BaseParams> extends Base<T> implements ModuleResolver {
5
+ resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
6
+ resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
7
+ resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
8
+ /** @deprecated use '*' if trying to resolve all */
9
+ resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
+ abstract resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter: ModuleFilter<T> | ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | T[] | undefined>;
11
+ }
12
+ //# sourceMappingURL=AbstractModuleResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractModuleResolver.d.ts","sourceRoot":"","sources":["../../src/AbstractModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,8BAAsB,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAE,YAAW,cAAc;IACjH,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,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;IAsClI,QAAQ,CAAC,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC/D,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAC9C,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;CACnC"}
@@ -0,0 +1,12 @@
1
+ import { Base, BaseParams } from '@xylabs/object';
2
+ import { Promisable } from '@xylabs/promise';
3
+ import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
+ export declare abstract class AbstractModuleResolver<T extends BaseParams = BaseParams> extends Base<T> implements ModuleResolver {
5
+ resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
6
+ resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
7
+ resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
8
+ /** @deprecated use '*' if trying to resolve all */
9
+ resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
10
+ abstract resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter: ModuleFilter<T> | ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | T[] | undefined>;
11
+ }
12
+ //# sourceMappingURL=AbstractModuleResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractModuleResolver.d.ts","sourceRoot":"","sources":["../../src/AbstractModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAgB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,8BAAsB,sBAAsB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAE,YAAW,cAAc;IACjH,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,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;IAsClI,QAAQ,CAAC,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC/D,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAC9C,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;CACnC"}
@@ -1,14 +1,15 @@
1
1
  import { Address } from '@xylabs/hex';
2
- import { Base, BaseParams } from '@xylabs/object';
2
+ import { BaseParams } from '@xylabs/object';
3
3
  import { Promisable } from '@xylabs/promise';
4
4
  import { CacheConfig, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
5
+ import { AbstractModuleResolver } from './AbstractModuleResolver';
5
6
  import { ModuleIdentifierTransformer } from './transformers';
6
7
  export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
7
8
  export interface ModuleResolverParams extends BaseParams {
8
9
  cache?: CacheConfig;
9
10
  moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
10
11
  }
11
- export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
12
+ export declare class CompositeModuleResolver extends AbstractModuleResolver<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
12
13
  static defaultMaxDepth: number;
13
14
  protected resolvers: ModuleResolverInstance[];
14
15
  private _cache;
@@ -20,13 +21,7 @@ export declare class CompositeModuleResolver extends Base<ModuleResolverParams>
20
21
  addResolver(resolver: ModuleResolverInstance): this;
21
22
  remove(addresses: Address[] | Address): this;
22
23
  removeResolver(resolver: ModuleResolverInstance): this;
23
- /** @deprecated do not pass undefined. If trying to get all, pass '*' */
24
- resolve(): Promise<ModuleInstance[]>;
25
- resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
26
- resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
27
- resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
28
- /** @deprecated use '*' if trying to resolve all */
29
- resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
24
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter?: ModuleFilter<T> | ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
30
25
  private addSingleModule;
31
26
  private removeSingleModule;
32
27
  private resolveMultipartIdentifier;
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,IAAI,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IACzH,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAItD,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,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;IAqElI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
1
+ {"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,sBAAsB,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IAC3I,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKhD,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,UAAU,GAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAsB,EACpD,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IAiE/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
@@ -1,14 +1,15 @@
1
1
  import { Address } from '@xylabs/hex';
2
- import { Base, BaseParams } from '@xylabs/object';
2
+ import { BaseParams } from '@xylabs/object';
3
3
  import { Promisable } from '@xylabs/promise';
4
4
  import { CacheConfig, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
5
+ import { AbstractModuleResolver } from './AbstractModuleResolver';
5
6
  import { ModuleIdentifierTransformer } from './transformers';
6
7
  export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
7
8
  export interface ModuleResolverParams extends BaseParams {
8
9
  cache?: CacheConfig;
9
10
  moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
10
11
  }
11
- export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
12
+ export declare class CompositeModuleResolver extends AbstractModuleResolver<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
12
13
  static defaultMaxDepth: number;
13
14
  protected resolvers: ModuleResolverInstance[];
14
15
  private _cache;
@@ -20,13 +21,7 @@ export declare class CompositeModuleResolver extends Base<ModuleResolverParams>
20
21
  addResolver(resolver: ModuleResolverInstance): this;
21
22
  remove(addresses: Address[] | Address): this;
22
23
  removeResolver(resolver: ModuleResolverInstance): this;
23
- /** @deprecated do not pass undefined. If trying to get all, pass '*' */
24
- resolve(): Promise<ModuleInstance[]>;
25
- resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
26
- resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
27
- resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
28
- /** @deprecated use '*' if trying to resolve all */
29
- resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
24
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter?: ModuleFilter<T> | ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
30
25
  private addSingleModule;
31
26
  private removeSingleModule;
32
27
  private resolveMultipartIdentifier;
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,IAAI,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IACzH,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAItD,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,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;IAqElI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
1
+ {"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,sBAAsB,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IAC3I,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKhD,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,UAAU,GAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAsB,EACpD,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IAiE/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
@@ -1,14 +1,15 @@
1
1
  import { Address } from '@xylabs/hex';
2
- import { Base, BaseParams } from '@xylabs/object';
2
+ import { BaseParams } from '@xylabs/object';
3
3
  import { Promisable } from '@xylabs/promise';
4
4
  import { CacheConfig, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
5
+ import { AbstractModuleResolver } from './AbstractModuleResolver';
5
6
  import { ModuleIdentifierTransformer } from './transformers';
6
7
  export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
7
8
  export interface ModuleResolverParams extends BaseParams {
8
9
  cache?: CacheConfig;
9
10
  moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
10
11
  }
11
- export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
12
+ export declare class CompositeModuleResolver extends AbstractModuleResolver<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
12
13
  static defaultMaxDepth: number;
13
14
  protected resolvers: ModuleResolverInstance[];
14
15
  private _cache;
@@ -20,13 +21,7 @@ export declare class CompositeModuleResolver extends Base<ModuleResolverParams>
20
21
  addResolver(resolver: ModuleResolverInstance): this;
21
22
  remove(addresses: Address[] | Address): this;
22
23
  removeResolver(resolver: ModuleResolverInstance): this;
23
- /** @deprecated do not pass undefined. If trying to get all, pass '*' */
24
- resolve(): Promise<ModuleInstance[]>;
25
- resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
26
- resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
27
- resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
28
- /** @deprecated use '*' if trying to resolve all */
29
- resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
24
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter?: ModuleFilter<T> | ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | T[] | undefined>;
30
25
  private addSingleModule;
31
26
  private removeSingleModule;
32
27
  private resolveMultipartIdentifier;
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,IAAI,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IACzH,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAItD,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,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;IAqElI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
1
+ {"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,sBAAsB,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IAC3I,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKhD,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,UAAU,GAAE,YAAY,CAAC,CAAC,CAAC,GAAG,gBAAsB,EACpD,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;IAiE/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
@@ -1,19 +1,17 @@
1
1
  import { Address } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolver, ModuleResolverInstance } from '@xyo-network/module-model';
4
- export declare class SimpleModuleResolver implements ModuleRepository, ModuleResolver {
3
+ import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
4
+ import { AbstractModuleResolver } from './AbstractModuleResolver';
5
+ export declare class SimpleModuleResolver extends AbstractModuleResolver implements ModuleRepository {
5
6
  private addressToName;
6
7
  private modules;
8
+ constructor();
7
9
  add(module: ModuleInstance): this;
8
10
  add(module: ModuleInstance[]): this;
9
11
  addResolver(_resolver: ModuleResolverInstance): this;
10
12
  remove(address: Address | Address[]): this;
11
13
  removeResolver(_resolver: ModuleResolverInstance): this;
12
- resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>;
13
- resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
14
- resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
15
- /** @deprecated use '*' if trying to resolve all */
16
- resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
14
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter?: ModuleFilter<T> | string, options?: ModuleFilterOptions<T>): Promisable<T[] | T | undefined>;
17
15
  private addSingleModule;
18
16
  private removeSingleModule;
19
17
  private resolveByAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB,EAAE,cAAc;IAC3E,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;IAErD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACrI,mDAAmD;IACnD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IA6C/H,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
1
+ {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EAEnB,cAAc,EAEd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,qBAAa,oBAAqB,SAAQ,sBAAuB,YAAW,gBAAgB;IAC1F,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;;IAMrD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACtD,UAAU,GAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAY,EAC1C,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAyClC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
@@ -1,19 +1,17 @@
1
1
  import { Address } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolver, ModuleResolverInstance } from '@xyo-network/module-model';
4
- export declare class SimpleModuleResolver implements ModuleRepository, ModuleResolver {
3
+ import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
4
+ import { AbstractModuleResolver } from './AbstractModuleResolver';
5
+ export declare class SimpleModuleResolver extends AbstractModuleResolver implements ModuleRepository {
5
6
  private addressToName;
6
7
  private modules;
8
+ constructor();
7
9
  add(module: ModuleInstance): this;
8
10
  add(module: ModuleInstance[]): this;
9
11
  addResolver(_resolver: ModuleResolverInstance): this;
10
12
  remove(address: Address | Address[]): this;
11
13
  removeResolver(_resolver: ModuleResolverInstance): this;
12
- resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>;
13
- resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
14
- resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
15
- /** @deprecated use '*' if trying to resolve all */
16
- resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
14
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter?: ModuleFilter<T> | string, options?: ModuleFilterOptions<T>): Promisable<T[] | T | undefined>;
17
15
  private addSingleModule;
18
16
  private removeSingleModule;
19
17
  private resolveByAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB,EAAE,cAAc;IAC3E,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;IAErD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACrI,mDAAmD;IACnD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IA6C/H,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
1
+ {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EAEnB,cAAc,EAEd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,qBAAa,oBAAqB,SAAQ,sBAAuB,YAAW,gBAAgB;IAC1F,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;;IAMrD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACtD,UAAU,GAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAY,EAC1C,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAyClC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
@@ -1,19 +1,17 @@
1
1
  import { Address } from '@xylabs/hex';
2
2
  import { Promisable } from '@xylabs/promise';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolver, ModuleResolverInstance } from '@xyo-network/module-model';
4
- export declare class SimpleModuleResolver implements ModuleRepository, ModuleResolver {
3
+ import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
4
+ import { AbstractModuleResolver } from './AbstractModuleResolver';
5
+ export declare class SimpleModuleResolver extends AbstractModuleResolver implements ModuleRepository {
5
6
  private addressToName;
6
7
  private modules;
8
+ constructor();
7
9
  add(module: ModuleInstance): this;
8
10
  add(module: ModuleInstance[]): this;
9
11
  addResolver(_resolver: ModuleResolverInstance): this;
10
12
  remove(address: Address | Address[]): this;
11
13
  removeResolver(_resolver: ModuleResolverInstance): this;
12
- resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>;
13
- resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
14
- resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
15
- /** @deprecated use '*' if trying to resolve all */
16
- resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
14
+ resolveHandler<T extends ModuleInstance = ModuleInstance>(idOrFilter?: ModuleFilter<T> | string, options?: ModuleFilterOptions<T>): Promisable<T[] | T | undefined>;
17
15
  private addSingleModule;
18
16
  private removeSingleModule;
19
17
  private resolveByAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB,EAAE,cAAc;IAC3E,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;IAErD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACrI,mDAAmD;IACnD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IA6C/H,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
1
+ {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EAEnB,cAAc,EAEd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,qBAAa,oBAAqB,SAAQ,sBAAuB,YAAW,gBAAgB;IAC1F,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;;IAMrD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,cAAc,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EACtD,UAAU,GAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAY,EAC1C,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAyClC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
@@ -27,23 +27,60 @@ __export(src_exports, {
27
27
  module.exports = __toCommonJS(src_exports);
28
28
 
29
29
  // src/CompositeModuleResolver.ts
30
- var import_assert2 = require("@xylabs/assert");
30
+ var import_assert3 = require("@xylabs/assert");
31
31
  var import_exists = require("@xylabs/exists");
32
- var import_object = require("@xylabs/object");
33
- var import_module_model2 = require("@xyo-network/module-model");
32
+ var import_module_model3 = require("@xyo-network/module-model");
34
33
  var import_lru_cache = require("lru-cache");
35
34
 
36
- // src/SimpleModuleResolver.ts
35
+ // src/AbstractModuleResolver.ts
37
36
  var import_assert = require("@xylabs/assert");
37
+ var import_object = require("@xylabs/object");
38
+ var import_module_model = require("@xyo-network/module-model");
39
+ var AbstractModuleResolver = class extends import_object.Base {
40
+ static {
41
+ __name(this, "AbstractModuleResolver");
42
+ }
43
+ async resolve(idOrFilter = "*", options) {
44
+ if (idOrFilter === "*") {
45
+ const values = await this.resolveHandler(idOrFilter, options);
46
+ (0, import_assert.assertEx)(Array.isArray(values), () => "resolveHandler returned a non-array");
47
+ return values.map((value) => (0, import_module_model.asModuleInstance)(value, () => {
48
+ return `resolveHandler returned invalid result (*) [${value?.constructor?.name}][${(0, import_object.toJsonString)(value)}]`;
49
+ }));
50
+ }
51
+ switch (typeof idOrFilter) {
52
+ case "string": {
53
+ const value = await this.resolveHandler(idOrFilter, options);
54
+ return (0, import_module_model.asModuleInstance)(value, () => (
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ `resolveHandler returned invalid result (string) [${value?.constructor?.name}][${(0, import_object.toJsonString)(value)}]`
57
+ ));
58
+ }
59
+ default: {
60
+ const values = await this.resolveHandler(idOrFilter, options);
61
+ (0, import_assert.assertEx)(Array.isArray(values), () => "resolveHandler returned a non-array");
62
+ return values.map((value) => (0, import_module_model.asModuleInstance)(value, () => {
63
+ return `resolveHandler returned invalid result (filter) [${value?.constructor?.name}][${(0, import_object.toJsonString)(value)}]`;
64
+ }));
65
+ }
66
+ }
67
+ }
68
+ };
69
+
70
+ // src/SimpleModuleResolver.ts
71
+ var import_assert2 = require("@xylabs/assert");
38
72
  var import_hex = require("@xylabs/hex");
39
73
  var import_lodash = require("@xylabs/lodash");
40
- var import_module_model = require("@xyo-network/module-model");
41
- var SimpleModuleResolver = class {
74
+ var import_module_model2 = require("@xyo-network/module-model");
75
+ var SimpleModuleResolver = class extends AbstractModuleResolver {
42
76
  static {
43
77
  __name(this, "SimpleModuleResolver");
44
78
  }
45
79
  addressToName = {};
46
80
  modules = {};
81
+ constructor() {
82
+ super({});
83
+ }
47
84
  add(module2) {
48
85
  if (Array.isArray(module2)) {
49
86
  for (const mod of module2)
@@ -68,7 +105,7 @@ var SimpleModuleResolver = class {
68
105
  removeResolver(_resolver) {
69
106
  throw "Removing resolvers not supported";
70
107
  }
71
- resolve(idOrFilter = "*", options) {
108
+ resolveHandler(idOrFilter = "*", options) {
72
109
  const unfiltered = (() => {
73
110
  if (idOrFilter) {
74
111
  if (typeof idOrFilter === "string") {
@@ -76,9 +113,9 @@ var SimpleModuleResolver = class {
76
113
  return Object.values(this.modules);
77
114
  }
78
115
  const id = idOrFilter;
79
- const name = (0, import_module_model.isModuleName)(id) ? id : void 0;
116
+ const name = (0, import_module_model2.isModuleName)(id) ? id : void 0;
80
117
  const address = (0, import_hex.isAddress)(id) ? id : void 0;
81
- (0, import_assert.assertEx)(name || address, () => "module identifier must be a ModuleName or Address");
118
+ (0, import_assert2.assertEx)(name || address, () => "module identifier must be a ModuleName or Address");
82
119
  return (name ? this.resolveByName(Object.values(this.modules), [
83
120
  name
84
121
  ]).pop() : void 0) ?? (address ? this.resolveByAddress(this.modules, [
@@ -86,11 +123,11 @@ var SimpleModuleResolver = class {
86
123
  ]).pop() : void 0);
87
124
  } else {
88
125
  const filter = idOrFilter;
89
- if ((0, import_module_model.isAddressModuleFilter)(filter)) {
126
+ if ((0, import_module_model2.isAddressModuleFilter)(filter)) {
90
127
  return this.resolveByAddress(this.modules, filter.address);
91
- } else if ((0, import_module_model.isNameModuleFilter)(filter)) {
128
+ } else if ((0, import_module_model2.isNameModuleFilter)(filter)) {
92
129
  return this.resolveByName(Object.values(this.modules), filter.name);
93
- } else if ((0, import_module_model.isQueryModuleFilter)(filter)) {
130
+ } else if ((0, import_module_model2.isQueryModuleFilter)(filter)) {
94
131
  return this.resolveByQuery(Object.values(this.modules), filter.query);
95
132
  }
96
133
  }
@@ -111,7 +148,7 @@ var SimpleModuleResolver = class {
111
148
  }
112
149
  }
113
150
  removeSingleModule(address) {
114
- (0, import_assert.assertEx)((0, import_hex.isAddress)(address), () => "Invalid address");
151
+ (0, import_assert2.assertEx)((0, import_hex.isAddress)(address), () => "Invalid address");
115
152
  if (address && this.modules[address]) {
116
153
  delete this.modules[address];
117
154
  const name = this.addressToName[address];
@@ -147,7 +184,7 @@ var SimpleModuleResolver = class {
147
184
  var moduleIdentifierParts = /* @__PURE__ */ __name((moduleIdentifier) => {
148
185
  return moduleIdentifier?.split(":");
149
186
  }, "moduleIdentifierParts");
150
- var CompositeModuleResolver = class _CompositeModuleResolver extends import_object.Base {
187
+ var CompositeModuleResolver = class _CompositeModuleResolver extends AbstractModuleResolver {
151
188
  static {
152
189
  __name(this, "CompositeModuleResolver");
153
190
  }
@@ -200,7 +237,7 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends import_obje
200
237
  this.resolvers = this.resolvers.filter((item) => item !== resolver);
201
238
  return this;
202
239
  }
203
- async resolve(idOrFilter = "*", options) {
240
+ async resolveHandler(idOrFilter = "*", options) {
204
241
  const mutatedOptions = {
205
242
  ...options,
206
243
  maxDepth: (options?.maxDepth ?? _CompositeModuleResolver.defaultMaxDepth) - 1
@@ -215,7 +252,7 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends import_obje
215
252
  return result2;
216
253
  }));
217
254
  const flatResult = result.flat().filter(import_exists.exists);
218
- return flatResult.filter(import_module_model2.duplicateModules);
255
+ return flatResult.filter(import_module_model3.duplicateModules);
219
256
  }
220
257
  if (typeof idOrFilter === "string") {
221
258
  const idParts = moduleIdentifierParts(idOrFilter);
@@ -238,7 +275,7 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends import_obje
238
275
  const result2 = await resolver.resolve(id, mutatedOptions);
239
276
  return result2;
240
277
  }));
241
- const result = results.filter(import_exists.exists).filter(import_module_model2.duplicateModules).pop();
278
+ const result = results.filter(import_exists.exists).filter(import_module_model3.duplicateModules).pop();
242
279
  if (result) {
243
280
  this._cache.set(id, result);
244
281
  }
@@ -253,7 +290,7 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends import_obje
253
290
  return result2;
254
291
  }));
255
292
  const flatResult = result.flat().filter(import_exists.exists);
256
- return flatResult.filter(import_module_model2.duplicateModules);
293
+ return flatResult.filter(import_module_model3.duplicateModules);
257
294
  }
258
295
  }
259
296
  addSingleModule(module2) {
@@ -266,8 +303,8 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends import_obje
266
303
  }
267
304
  async resolveMultipartIdentifier(moduleIdentifier) {
268
305
  const idParts = moduleIdentifierParts(moduleIdentifier);
269
- (0, import_assert2.assertEx)(idParts.length >= 2, () => "Not a valid multipart identifier");
270
- const id = (0, import_assert2.assertEx)(idParts.shift());
306
+ (0, import_assert3.assertEx)(idParts.length >= 2, () => "Not a valid multipart identifier");
307
+ const id = (0, import_assert3.assertEx)(idParts.shift());
271
308
  const module2 = await this.resolve(id);
272
309
  return await module2?.resolve(idParts.join(":"));
273
310
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["export * from './CompositeModuleResolver'\nexport * from './ResolverEventEmitter'\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { Base, BaseParams } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport {\n CacheConfig,\n duplicateModules,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\nimport { ModuleIdentifierTransformer } from './transformers'\n\nexport type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>\n\nexport interface ModuleResolverParams extends BaseParams {\n cache?: CacheConfig\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nconst moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {\n return moduleIdentifier?.split(':') as ModuleIdentifierPart[]\n}\n\nexport class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolverInstance[] = []\n private _cache: LRUCache<ModuleIdentifier, ModuleInstance>\n private _localResolver: SimpleModuleResolver\n\n constructor({ cache, ...params }: ModuleResolverParams = {}) {\n super(params)\n const localResolver = new SimpleModuleResolver()\n this.addResolver(localResolver)\n const { max = 100, ttl = 1000 * 5 /* five seconds */ } = cache ?? {}\n this._cache = new LRUCache<ModuleIdentifier, ModuleInstance>({ max, ttl, ...cache })\n this._localResolver = localResolver\n }\n\n private get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolverInstance): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addresses: Address[] | Address): this {\n if (Array.isArray(addresses)) {\n for (const address of addresses) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addresses)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolverInstance): this {\n this.resolvers = this.resolvers.filter((item) => item !== resolver)\n return this\n }\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth) - 1 }\n\n //resolve all\n if (idOrFilter === '*') {\n const all = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(all, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n\n if (typeof idOrFilter === 'string') {\n //resolve ModuleIdentifier\n const idParts = moduleIdentifierParts(idOrFilter)\n if (idParts.length > 1) {\n return await this.resolveMultipartIdentifier<T>(idOrFilter)\n }\n const id = await this.transformModuleIdentifier(idOrFilter)\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const cachedResult = this._cache.get(id)\n if (cachedResult) {\n if (cachedResult.status === 'dead') {\n this._cache.delete(id)\n } else {\n return cachedResult as T\n }\n }\n const results = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T | undefined = await resolver.resolve<T>(id, mutatedOptions)\n return result\n }),\n )\n const result: T | undefined = results.filter(exists).filter(duplicateModules).pop()\n if (result) {\n this._cache.set(id, result)\n }\n return result\n } else {\n //resolve filter\n const filter = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(filter, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this._localResolver.add(module)\n }\n }\n private removeSingleModule(address: Address) {\n this._localResolver.remove(address)\n }\n\n private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {\n const idParts = moduleIdentifierParts(moduleIdentifier)\n assertEx(idParts.length >= 2, () => 'Not a valid multipart identifier')\n const id = assertEx(idParts.shift())\n const module = await this.resolve(id)\n return await module?.resolve<T>(idParts.join(':'))\n }\n\n private async transformModuleIdentifier(identifier: ModuleIdentifier) {\n let id = identifier\n for (const transformer of this.moduleIdentifierTransformers ?? []) {\n id = await transformer.transform(id)\n }\n return id\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport {\n isAddressModuleFilter,\n isModuleName,\n isNameModuleFilter,\n isQueryModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolver,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\n\n//This class is now package private (not exported from index.ts)\nexport class SimpleModuleResolver implements ModuleRepository, ModuleResolver {\n private addressToName: Record<Address, ModuleName> = {}\n private modules: Record<Address, ModuleInstance> = {}\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolverInstance): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: Address | Address[]): this {\n if (Array.isArray(address)) {\n for (const addr of address) this.removeSingleModule(addr)\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolverInstance): this {\n throw 'Removing resolvers not supported'\n }\n\n resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | string = '*',\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[] | T | undefined> {\n const unfiltered = (() => {\n if (idOrFilter) {\n if (typeof idOrFilter === 'string') {\n if (idOrFilter === '*') {\n return Object.values(this.modules) as T[]\n }\n const id = idOrFilter as ModuleIdentifier\n const name = isModuleName(id) ? id : undefined\n const address = isAddress(id) ? id : undefined\n assertEx(name || address, () => 'module identifier must be a ModuleName or Address')\n return (\n (name ? this.resolveByName<T>(Object.values(this.modules), [name]).pop() : undefined) ??\n (address ? this.resolveByAddress<T>(this.modules, [address]).pop() : undefined)\n )\n } else {\n const filter = idOrFilter\n if (isAddressModuleFilter(filter)) {\n return this.resolveByAddress<T>(this.modules, filter.address)\n } else if (isNameModuleFilter(filter)) {\n return this.resolveByName<T>(Object.values(this.modules), filter.name)\n } else if (isQueryModuleFilter(filter)) {\n return this.resolveByQuery<T>(Object.values(this.modules), filter.query)\n }\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return (\n Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module))\n : identity(unfiltered) ? unfiltered\n : undefined\n )\n } else {\n return unfiltered\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this.modules[module.address] = module\n }\n }\n\n private removeSingleModule(address: Address) {\n assertEx(isAddress(address), () => 'Invalid address')\n if (address && this.modules[address]) {\n delete this.modules[address]\n const name = this.addressToName[address]\n if (name) {\n delete this.addressToName[address]\n }\n }\n }\n\n private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: Record<Address, ModuleInstance>, address: Address[]): T[] {\n return compact(\n address.map((address) => {\n return modules[address]\n }),\n ) as T[]\n }\n\n private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name: ModuleName[]): T[] {\n return compact(\n name.map((name) => {\n return modules.find((module) => module.config.name === name)\n }),\n ) as T[]\n }\n\n private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query: string[][]): T[] {\n return compact(\n modules.filter((module) =>\n query?.reduce((supported, queryList) => {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n queryList.reduce((supported, query) => {\n const queryable = module.queries.includes(query)\n return supported && queryable\n }, true) || supported\n )\n }, false),\n ),\n ) as T[]\n }\n}\n","import { Module, ModuleFilter, ModuleResolver } from '@xyo-network/module-model'\n\nexport interface ModuleResolvedEventArgs {\n filter?: ModuleFilter\n module: Module\n}\n\nexport interface ResolverEventEmitter {\n on(event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void): void\n}\n\ntype ListenerFunction = (args: ModuleResolvedEventArgs) => void\n\nconst getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {\n const listeners: ListenerFunction[] = []\n const emit = (event: 'moduleResolved', args: ModuleResolvedEventArgs): boolean => {\n if (listeners.length === 0) return false\n listeners.map((listener) => listener(args))\n return true\n }\n const onModuleResolved = (module: Module, filter?: ModuleFilter) => {\n const args = { filter, module }\n emit('moduleResolved', args)\n }\n // eslint-disable-next-line deprecation/deprecation\n const { resolve } = resolver\n function originalResolve(filter?: ModuleFilter) {\n return resolve.bind(resolver)(filter)\n }\n\n return {\n on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {\n listeners.push(listener)\n },\n resolve: async (filter?: ModuleFilter): Promise<Module[]> => {\n const modules: Module[] = await originalResolve(filter)\n await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)))\n return modules\n },\n }\n}\n\nexport const mixinResolverEventEmitter = <T extends ModuleResolver = ModuleResolver>(resolver: T): T & ResolverEventEmitter => {\n const mixin = getMixin(resolver)\n const ret = Object.assign(resolver, mixin)\n return ret\n}\n"],"mappings":"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","names":["import_assert","import_module_model","SimpleModuleResolver","addressToName","modules","add","module","Array","isArray","mod","addSingleModule","addResolver","_resolver","remove","address","addr","removeSingleModule","removeResolver","resolve","idOrFilter","options","unfiltered","Object","values","id","name","isModuleName","undefined","isAddress","assertEx","resolveByName","pop","resolveByAddress","filter","isAddressModuleFilter","isNameModuleFilter","isQueryModuleFilter","resolveByQuery","query","identity","compact","map","find","config","reduce","supported","queryList","queryable","queries","includes","moduleIdentifierParts","moduleIdentifier","split","CompositeModuleResolver","Base","defaultMaxDepth","resolvers","_cache","_localResolver","constructor","cache","params","localResolver","SimpleModuleResolver","addResolver","max","ttl","LRUCache","moduleIdentifierTransformers","add","module","Array","isArray","mod","addSingleModule","resolver","push","remove","addresses","address","removeSingleModule","removeResolver","filter","item","resolve","idOrFilter","options","mutatedOptions","maxDepth","all","result","Promise","map","flatResult","flat","exists","duplicateModules","idParts","length","resolveMultipartIdentifier","id","transformModuleIdentifier","undefined","cachedResult","get","status","delete","results","pop","set","assertEx","shift","join","identifier","transformer","transform","getMixin","resolver","listeners","emit","event","args","length","map","listener","onModuleResolved","module","filter","resolve","originalResolve","bind","on","push","modules","Promise","allSettled","mod","mixinResolverEventEmitter","mixin","ret","Object","assign"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/CompositeModuleResolver.ts","../../src/AbstractModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["export * from './CompositeModuleResolver'\nexport * from './ResolverEventEmitter'\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { BaseParams } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport {\n CacheConfig,\n duplicateModules,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { AbstractModuleResolver } from './AbstractModuleResolver'\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\nimport { ModuleIdentifierTransformer } from './transformers'\n\nexport type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>\n\nexport interface ModuleResolverParams extends BaseParams {\n cache?: CacheConfig\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nconst moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {\n return moduleIdentifier?.split(':') as ModuleIdentifierPart[]\n}\n\nexport class CompositeModuleResolver extends AbstractModuleResolver<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolverInstance[] = []\n private _cache: LRUCache<ModuleIdentifier, ModuleInstance>\n private _localResolver: SimpleModuleResolver\n\n constructor({ cache, ...params }: ModuleResolverParams = {}) {\n super(params)\n const localResolver = new SimpleModuleResolver()\n this.addResolver(localResolver)\n const { max = 100, ttl = 1000 * 5 /* five seconds */ } = cache ?? {}\n this._cache = new LRUCache<ModuleIdentifier, ModuleInstance>({ max, ttl, ...cache })\n this._localResolver = localResolver\n }\n\n private get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolverInstance): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addresses: Address[] | Address): this {\n if (Array.isArray(addresses)) {\n for (const address of addresses) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addresses)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolverInstance): this {\n this.resolvers = this.resolvers.filter((item) => item !== resolver)\n return this\n }\n\n async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth) - 1 }\n\n //resolve all\n if (idOrFilter === '*') {\n const all = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(all, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n\n if (typeof idOrFilter === 'string') {\n //resolve ModuleIdentifier\n const idParts = moduleIdentifierParts(idOrFilter)\n if (idParts.length > 1) {\n return await this.resolveMultipartIdentifier<T>(idOrFilter)\n }\n const id = await this.transformModuleIdentifier(idOrFilter)\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const cachedResult = this._cache.get(id)\n if (cachedResult) {\n if (cachedResult.status === 'dead') {\n this._cache.delete(id)\n } else {\n return cachedResult as T\n }\n }\n const results = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T | undefined = await resolver.resolve<T>(id, mutatedOptions)\n return result\n }),\n )\n const result: T | undefined = results.filter(exists).filter(duplicateModules).pop()\n if (result) {\n this._cache.set(id, result)\n }\n return result\n } else {\n //resolve filter\n const filter = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(filter, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this._localResolver.add(module)\n }\n }\n private removeSingleModule(address: Address) {\n this._localResolver.remove(address)\n }\n\n private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {\n const idParts = moduleIdentifierParts(moduleIdentifier)\n assertEx(idParts.length >= 2, () => 'Not a valid multipart identifier')\n const id = assertEx(idParts.shift())\n const module = await this.resolve<T>(id)\n return await module?.resolve<T>(idParts.join(':'))\n }\n\n private async transformModuleIdentifier(identifier: ModuleIdentifier) {\n let id = identifier\n for (const transformer of this.moduleIdentifierTransformers ?? []) {\n id = await transformer.transform(id)\n }\n return id\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Base, BaseParams, toJsonString } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { asModuleInstance, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model'\n\nexport abstract class AbstractModuleResolver<T extends BaseParams = BaseParams> extends Base<T> implements ModuleResolver {\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | string = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T[] | T | undefined> {\n if (idOrFilter === '*') {\n const values = (await this.resolveHandler(idOrFilter, options)) as []\n assertEx(Array.isArray(values), () => 'resolveHandler returned a non-array')\n return values.map((value) =>\n asModuleInstance<T>(value, () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `resolveHandler returned invalid result (*) [${(value as any)?.constructor?.name}][${toJsonString(value)}]`\n }),\n )\n }\n switch (typeof idOrFilter) {\n case 'string': {\n const value = await this.resolveHandler(idOrFilter, options)\n return asModuleInstance<T>(\n value,\n () =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n `resolveHandler returned invalid result (string) [${(value as any)?.constructor?.name}][${toJsonString(value)}]`,\n )\n }\n default: {\n const values = (await this.resolveHandler(idOrFilter, options)) as []\n assertEx(Array.isArray(values), () => 'resolveHandler returned a non-array')\n return values.map((value) =>\n asModuleInstance<T>(value, () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return `resolveHandler returned invalid result (filter) [${(value as any)?.constructor?.name}][${toJsonString(value)}]`\n }),\n )\n }\n }\n }\n\n abstract resolveHandler<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promisable<T | T[] | undefined>\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport {\n isAddressModuleFilter,\n isModuleName,\n isNameModuleFilter,\n isQueryModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\n\nimport { AbstractModuleResolver } from './AbstractModuleResolver'\n\n//This class is now package private (not exported from index.ts)\nexport class SimpleModuleResolver extends AbstractModuleResolver implements ModuleRepository {\n private addressToName: Record<Address, ModuleName> = {}\n private modules: Record<Address, ModuleInstance> = {}\n\n constructor() {\n super({})\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolverInstance): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: Address | Address[]): this {\n if (Array.isArray(address)) {\n for (const addr of address) this.removeSingleModule(addr)\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolverInstance): this {\n throw 'Removing resolvers not supported'\n }\n\n resolveHandler<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | string = '*',\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[] | T | undefined> {\n const unfiltered = (() => {\n if (idOrFilter) {\n if (typeof idOrFilter === 'string') {\n if (idOrFilter === '*') {\n return Object.values(this.modules) as T[]\n }\n const id = idOrFilter as ModuleIdentifier\n const name = isModuleName(id) ? id : undefined\n const address = isAddress(id) ? id : undefined\n assertEx(name || address, () => 'module identifier must be a ModuleName or Address')\n return (\n (name ? this.resolveByName<T>(Object.values(this.modules), [name]).pop() : undefined) ??\n (address ? this.resolveByAddress<T>(this.modules, [address]).pop() : undefined)\n )\n } else {\n const filter = idOrFilter\n if (isAddressModuleFilter(filter)) {\n return this.resolveByAddress<T>(this.modules, filter.address)\n } else if (isNameModuleFilter(filter)) {\n return this.resolveByName<T>(Object.values(this.modules), filter.name)\n } else if (isQueryModuleFilter(filter)) {\n return this.resolveByQuery<T>(Object.values(this.modules), filter.query)\n }\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return (\n Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module))\n : identity(unfiltered) ? unfiltered\n : undefined\n )\n } else {\n return unfiltered\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this.modules[module.address] = module\n }\n }\n\n private removeSingleModule(address: Address) {\n assertEx(isAddress(address), () => 'Invalid address')\n if (address && this.modules[address]) {\n delete this.modules[address]\n const name = this.addressToName[address]\n if (name) {\n delete this.addressToName[address]\n }\n }\n }\n\n private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: Record<Address, ModuleInstance>, address: Address[]): T[] {\n return compact(\n address.map((address) => {\n return modules[address]\n }),\n ) as T[]\n }\n\n private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name: ModuleName[]): T[] {\n return compact(\n name.map((name) => {\n return modules.find((module) => module.config.name === name)\n }),\n ) as T[]\n }\n\n private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query: string[][]): T[] {\n return compact(\n modules.filter((module) =>\n query?.reduce((supported, queryList) => {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n queryList.reduce((supported, query) => {\n const queryable = module.queries.includes(query)\n return supported && queryable\n }, true) || supported\n )\n }, false),\n ),\n ) as T[]\n }\n}\n","import { Module, ModuleFilter, ModuleResolver } from '@xyo-network/module-model'\n\nexport interface ModuleResolvedEventArgs {\n filter?: ModuleFilter\n module: Module\n}\n\nexport interface ResolverEventEmitter {\n on(event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void): void\n}\n\ntype ListenerFunction = (args: ModuleResolvedEventArgs) => void\n\nconst getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {\n const listeners: ListenerFunction[] = []\n const emit = (event: 'moduleResolved', args: ModuleResolvedEventArgs): boolean => {\n if (listeners.length === 0) return false\n listeners.map((listener) => listener(args))\n return true\n }\n const onModuleResolved = (module: Module, filter?: ModuleFilter) => {\n const args = { filter, module }\n emit('moduleResolved', args)\n }\n // eslint-disable-next-line deprecation/deprecation\n const { resolve } = resolver\n function originalResolve(filter?: ModuleFilter) {\n return resolve.bind(resolver)(filter)\n }\n\n return {\n on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {\n listeners.push(listener)\n },\n resolve: async (filter?: ModuleFilter): Promise<Module[]> => {\n const modules: Module[] = await originalResolve(filter)\n await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)))\n return modules\n },\n }\n}\n\nexport const mixinResolverEventEmitter = <T extends ModuleResolver = ModuleResolver>(resolver: T): T & ResolverEventEmitter => {\n const mixin = getMixin(resolver)\n const ret = Object.assign(resolver, mixin)\n return ret\n}\n"],"mappings":"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","names":["import_assert","import_module_model","AbstractModuleResolver","Base","resolve","idOrFilter","options","values","resolveHandler","assertEx","Array","isArray","map","value","asModuleInstance","constructor","name","toJsonString","import_assert","import_module_model","SimpleModuleResolver","AbstractModuleResolver","addressToName","modules","constructor","add","module","Array","isArray","mod","addSingleModule","addResolver","_resolver","remove","address","addr","removeSingleModule","removeResolver","resolveHandler","idOrFilter","options","unfiltered","Object","values","id","name","isModuleName","undefined","isAddress","assertEx","resolveByName","pop","resolveByAddress","filter","isAddressModuleFilter","isNameModuleFilter","isQueryModuleFilter","resolveByQuery","query","identity","compact","map","find","config","reduce","supported","queryList","queryable","queries","includes","moduleIdentifierParts","moduleIdentifier","split","CompositeModuleResolver","AbstractModuleResolver","defaultMaxDepth","resolvers","_cache","_localResolver","constructor","cache","params","localResolver","SimpleModuleResolver","addResolver","max","ttl","LRUCache","moduleIdentifierTransformers","add","module","Array","isArray","mod","addSingleModule","resolver","push","remove","addresses","address","removeSingleModule","removeResolver","filter","item","resolveHandler","idOrFilter","options","mutatedOptions","maxDepth","all","result","Promise","map","resolve","flatResult","flat","exists","duplicateModules","idParts","length","resolveMultipartIdentifier","id","transformModuleIdentifier","undefined","cachedResult","get","status","delete","results","pop","set","assertEx","shift","join","identifier","transformer","transform","getMixin","resolver","listeners","emit","event","args","length","map","listener","onModuleResolved","module","filter","resolve","originalResolve","bind","on","push","modules","Promise","allSettled","mod","mixinResolverEventEmitter","mixin","ret","Object","assign"]}