@xyo-network/module-abstract 2.94.19 → 2.94.21

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/AbstractModule.d.cts +3 -7
  2. package/dist/browser/AbstractModule.d.cts.map +1 -1
  3. package/dist/browser/AbstractModule.d.mts +3 -7
  4. package/dist/browser/AbstractModule.d.mts.map +1 -1
  5. package/dist/browser/AbstractModule.d.ts +3 -7
  6. package/dist/browser/AbstractModule.d.ts.map +1 -1
  7. package/dist/browser/AbstractModuleInstance.d.cts +10 -0
  8. package/dist/browser/AbstractModuleInstance.d.cts.map +1 -1
  9. package/dist/browser/AbstractModuleInstance.d.mts +10 -0
  10. package/dist/browser/AbstractModuleInstance.d.mts.map +1 -1
  11. package/dist/browser/AbstractModuleInstance.d.ts +10 -0
  12. package/dist/browser/AbstractModuleInstance.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +40 -129
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.d.cts +0 -1
  16. package/dist/browser/index.d.cts.map +1 -1
  17. package/dist/browser/index.d.mts +0 -1
  18. package/dist/browser/index.d.mts.map +1 -1
  19. package/dist/browser/index.d.ts +0 -1
  20. package/dist/browser/index.d.ts.map +1 -1
  21. package/dist/browser/index.js +33 -122
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/node/AbstractModule.d.cts +3 -7
  24. package/dist/node/AbstractModule.d.cts.map +1 -1
  25. package/dist/node/AbstractModule.d.mts +3 -7
  26. package/dist/node/AbstractModule.d.mts.map +1 -1
  27. package/dist/node/AbstractModule.d.ts +3 -7
  28. package/dist/node/AbstractModule.d.ts.map +1 -1
  29. package/dist/node/AbstractModuleInstance.d.cts +10 -0
  30. package/dist/node/AbstractModuleInstance.d.cts.map +1 -1
  31. package/dist/node/AbstractModuleInstance.d.mts +10 -0
  32. package/dist/node/AbstractModuleInstance.d.mts.map +1 -1
  33. package/dist/node/AbstractModuleInstance.d.ts +10 -0
  34. package/dist/node/AbstractModuleInstance.d.ts.map +1 -1
  35. package/dist/node/index.cjs +40 -129
  36. package/dist/node/index.cjs.map +1 -1
  37. package/dist/node/index.d.cts +0 -1
  38. package/dist/node/index.d.cts.map +1 -1
  39. package/dist/node/index.d.mts +0 -1
  40. package/dist/node/index.d.mts.map +1 -1
  41. package/dist/node/index.d.ts +0 -1
  42. package/dist/node/index.d.ts.map +1 -1
  43. package/dist/node/index.js +33 -121
  44. package/dist/node/index.js.map +1 -1
  45. package/package.json +18 -18
  46. package/src/AbstractModule.ts +6 -15
  47. package/src/AbstractModuleInstance.ts +44 -1
  48. package/src/index.ts +0 -1
  49. package/dist/browser/ResolveHelper.d.cts +0 -19
  50. package/dist/browser/ResolveHelper.d.cts.map +0 -1
  51. package/dist/browser/ResolveHelper.d.mts +0 -19
  52. package/dist/browser/ResolveHelper.d.mts.map +0 -1
  53. package/dist/browser/ResolveHelper.d.ts +0 -19
  54. package/dist/browser/ResolveHelper.d.ts.map +0 -1
  55. package/dist/node/ResolveHelper.d.cts +0 -19
  56. package/dist/node/ResolveHelper.d.cts.map +0 -1
  57. package/dist/node/ResolveHelper.d.mts +0 -19
  58. package/dist/node/ResolveHelper.d.mts.map +0 -1
  59. package/dist/node/ResolveHelper.d.ts +0 -19
  60. package/dist/node/ResolveHelper.d.ts.map +0 -1
  61. package/src/ResolveHelper.ts +0 -127
package/package.json CHANGED
@@ -18,27 +18,27 @@
18
18
  "@xylabs/logger": "^3.0.25",
19
19
  "@xylabs/object": "^3.0.25",
20
20
  "@xylabs/promise": "^3.0.25",
21
- "@xyo-network/account": "~2.94.19",
22
- "@xyo-network/account-model": "~2.94.19",
23
- "@xyo-network/address-payload-plugin": "~2.94.19",
24
- "@xyo-network/archivist-model": "~2.94.19",
25
- "@xyo-network/boundwitness-builder": "~2.94.19",
26
- "@xyo-network/boundwitness-model": "~2.94.19",
27
- "@xyo-network/boundwitness-wrapper": "~2.94.19",
28
- "@xyo-network/config-payload-plugin": "~2.94.19",
29
- "@xyo-network/manifest-model": "~2.94.19",
30
- "@xyo-network/module-events": "~2.94.19",
31
- "@xyo-network/module-model": "~2.94.19",
32
- "@xyo-network/module-resolver": "~2.94.19",
33
- "@xyo-network/payload-builder": "~2.94.19",
34
- "@xyo-network/payload-model": "~2.94.19",
35
- "@xyo-network/query-payload-plugin": "~2.94.19",
36
- "@xyo-network/wallet-model": "~2.94.19"
21
+ "@xyo-network/account": "~2.94.21",
22
+ "@xyo-network/account-model": "~2.94.21",
23
+ "@xyo-network/address-payload-plugin": "~2.94.21",
24
+ "@xyo-network/archivist-model": "~2.94.21",
25
+ "@xyo-network/boundwitness-builder": "~2.94.21",
26
+ "@xyo-network/boundwitness-model": "~2.94.21",
27
+ "@xyo-network/boundwitness-wrapper": "~2.94.21",
28
+ "@xyo-network/config-payload-plugin": "~2.94.21",
29
+ "@xyo-network/manifest-model": "~2.94.21",
30
+ "@xyo-network/module-events": "~2.94.21",
31
+ "@xyo-network/module-model": "~2.94.21",
32
+ "@xyo-network/module-resolver": "~2.94.21",
33
+ "@xyo-network/payload-builder": "~2.94.21",
34
+ "@xyo-network/payload-model": "~2.94.21",
35
+ "@xyo-network/query-payload-plugin": "~2.94.21",
36
+ "@xyo-network/wallet-model": "~2.94.21"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@xylabs/ts-scripts-yarn3": "^3.9.0",
40
40
  "@xylabs/tsconfig": "^3.9.0",
41
- "typescript": "^5.4.3"
41
+ "typescript": "^5.4.4"
42
42
  },
43
43
  "description": "Primary SDK for using XYO Protocol 2.0",
44
44
  "types": "dist/node/index.d.ts",
@@ -79,6 +79,6 @@
79
79
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
80
80
  },
81
81
  "sideEffects": false,
82
- "version": "2.94.19",
82
+ "version": "2.94.21",
83
83
  "type": "module"
84
84
  }
@@ -41,13 +41,13 @@ import {
41
41
  ModuleQueries,
42
42
  ModuleQueryHandlerResult,
43
43
  ModuleQueryResult,
44
+ ModuleResolverInstance,
44
45
  ModuleStateQuerySchema,
45
46
  ModuleStatus,
46
47
  ModuleSubscribeQuerySchema,
47
48
  ObjectResolverPriority,
48
49
  serializableField,
49
50
  } from '@xyo-network/module-model'
50
- import { CompositeModuleResolver } from '@xyo-network/module-resolver'
51
51
  import { PayloadBuilder } from '@xyo-network/payload-builder'
52
52
  import { ModuleError, Payload, Query, Schema, WithMeta } from '@xyo-network/payload-model'
53
53
  import { QueryPayload, QuerySchema } from '@xyo-network/query-payload-plugin'
@@ -87,13 +87,10 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
87
87
  protected _startPromise: Promisable<boolean> | undefined = undefined
88
88
  protected _started: Promisable<boolean> | undefined = undefined
89
89
  protected readonly moduleConfigQueryValidator: Queryable
90
- protected readonly privateResolver = new CompositeModuleResolver({})
91
90
  protected readonly supportedQueryValidator: Queryable
92
91
 
93
92
  private _busyCount = 0
94
- private _downResolver?: CompositeModuleResolver
95
93
  private _status: ModuleStatus = 'stopped'
96
- private _upResolver?: CompositeModuleResolver
97
94
 
98
95
  protected constructor(privateConstructorKey: string, params: TParams, account: AccountInstance) {
99
96
  assertEx(AbstractModule.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')
@@ -135,11 +132,6 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
135
132
  return this.status === 'dead'
136
133
  }
137
134
 
138
- get downResolver() {
139
- this._downResolver = this._downResolver ?? new CompositeModuleResolver({ moduleIdentifierTransformers: this.params.moduleIdentifierTransformers })
140
- return this._downResolver
141
- }
142
-
143
135
  get ephemeralQueryAccountEnabled(): boolean {
144
136
  return !!this.params.ephemeralQueryAccountEnabled
145
137
  }
@@ -172,11 +164,6 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
172
164
  return this.config.timestamp ?? false
173
165
  }
174
166
 
175
- get upResolver() {
176
- this._upResolver = this._upResolver ?? new CompositeModuleResolver({ moduleIdentifierTransformers: this.params.moduleIdentifierTransformers })
177
- return this._upResolver
178
- }
179
-
180
167
  protected get baseModuleQueryAccountPaths(): Record<ModuleQueries['schema'], string> {
181
168
  return this._baseModuleQueryAccountPaths
182
169
  }
@@ -191,6 +178,10 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
191
178
  }
192
179
  }
193
180
 
181
+ abstract get downResolver(): ModuleResolverInstance
182
+
183
+ abstract get upResolver(): ModuleResolverInstance
184
+
194
185
  protected abstract get _queryAccountPaths(): Record<Query['schema'], string>
195
186
 
196
187
  static _getRootFunction(funcName: string) {
@@ -570,7 +561,7 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
570
561
 
571
562
  protected async manifestHandler(maxDepth: number = 1, _ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {
572
563
  const name = this.config.name ?? 'Anonymous'
573
- const children = await this.downResolver.resolve('*', { direction: 'down', maxDepth, visibility: 'public' })
564
+ const children = await this.downResolver.resolve('*', { direction: 'down', maxDepth })
574
565
  const childAddressToName: Record<Address, ModuleName | null> = {}
575
566
  for (const child of children) {
576
567
  if (child.address !== this.address) {
@@ -17,20 +17,28 @@ import {
17
17
  ModuleNameResolver,
18
18
  ModuleParams,
19
19
  ModuleQueryResult,
20
+ ModuleResolver,
20
21
  ModuleStateQuery,
21
22
  ModuleStateQuerySchema,
22
23
  ObjectFilterOptions,
24
+ ResolveHelper,
25
+ ResolveHelperConfig,
23
26
  } from '@xyo-network/module-model'
27
+ import { CompositeModuleResolver } from '@xyo-network/module-resolver'
24
28
  import { Payload, Query, WithMeta } from '@xyo-network/payload-model'
25
29
 
26
30
  import { AbstractModule } from './AbstractModule'
27
- import { ResolveHelper, ResolveHelperConfig } from './ResolveHelper'
28
31
 
29
32
  export abstract class AbstractModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>
30
33
  extends AbstractModule<TParams, TEventData>
31
34
  implements ModuleInstance<TParams, TEventData>, ModuleNameResolver
32
35
  {
33
36
  static override readonly uniqueName = globallyUnique('AbstractModuleInstance', AbstractModuleInstance, 'xyo')
37
+
38
+ private _downResolver?: CompositeModuleResolver
39
+ private _privateResolver?: CompositeModuleResolver
40
+ private _upResolver?: CompositeModuleResolver
41
+
34
42
  constructor(privateConstructorKey: string, params: TParams, account: AccountInstance) {
35
43
  assertEx(AbstractModule.privateConstructorKey === privateConstructorKey, () => 'Use create function instead of constructor')
36
44
  // Clone params to prevent mutation of the incoming object
@@ -43,6 +51,28 @@ export abstract class AbstractModuleInstance<TParams extends ModuleParams = Modu
43
51
  }
44
52
  }
45
53
 
54
+ get downResolver() {
55
+ this._downResolver =
56
+ this._downResolver ?? new CompositeModuleResolver({ moduleIdentifierTransformers: this.params.moduleIdentifierTransformers, root: this })
57
+ return this._downResolver
58
+ }
59
+
60
+ get privateResolver() {
61
+ this._privateResolver =
62
+ this._privateResolver ?? new CompositeModuleResolver({ moduleIdentifierTransformers: this.params.moduleIdentifierTransformers, root: this })
63
+ return this._privateResolver
64
+ }
65
+
66
+ get root() {
67
+ return this
68
+ }
69
+
70
+ get upResolver() {
71
+ this._upResolver =
72
+ this._upResolver ?? new CompositeModuleResolver({ moduleIdentifierTransformers: this.params.moduleIdentifierTransformers, root: this })
73
+ return this._upResolver
74
+ }
75
+
46
76
  manifest(maxDepth?: number): Promise<ModuleManifestPayload> {
47
77
  this._checkDead()
48
78
  return this.busy(async () => {
@@ -110,6 +140,19 @@ export abstract class AbstractModuleInstance<TParams extends ModuleParams = Modu
110
140
  }
111
141
  }
112
142
 
143
+ async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>
144
+ async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>
145
+ async resolvePrivate<T extends ModuleInstance = ModuleInstance>(
146
+ id: ModuleIdentifier = '*',
147
+ options: ModuleFilterOptions<T> = {},
148
+ ): Promise<T | T[] | undefined> {
149
+ return (
150
+ (await this.privateResolver.resolve(id, options)) ??
151
+ (await this.upResolver.resolve(id, options)) ??
152
+ (await this.downResolver.resolve(id, options))
153
+ )
154
+ }
155
+
113
156
  state() {
114
157
  this._checkDead()
115
158
  return this.busy(async () => {
package/src/index.ts CHANGED
@@ -3,4 +3,3 @@ export * from './AbstractModuleInstance'
3
3
  export * from './BaseEmitter'
4
4
  export * from './Error'
5
5
  export * from './QueryValidator'
6
- export * from './ResolveHelper'
@@ -1,19 +0,0 @@
1
- import { Address } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
- export interface ResolveHelperConfig {
5
- address: Address;
6
- dead?: boolean;
7
- downResolver?: ModuleResolver;
8
- logger?: Logger;
9
- module: ModuleInstance;
10
- upResolver?: ModuleResolver;
11
- }
12
- export declare class ResolveHelper {
13
- static defaultLogger?: Logger;
14
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
15
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>;
16
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
17
- static validateRequiredResolve(required: boolean | 'warn' | 'log', result: ModuleInstance[] | ModuleInstance | undefined, idOrFilter: ModuleIdentifier | ModuleFilter, logger?: Logger | undefined): void;
18
- }
19
- //# sourceMappingURL=ResolveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;WAChB,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuEzB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1,19 +0,0 @@
1
- import { Address } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
- export interface ResolveHelperConfig {
5
- address: Address;
6
- dead?: boolean;
7
- downResolver?: ModuleResolver;
8
- logger?: Logger;
9
- module: ModuleInstance;
10
- upResolver?: ModuleResolver;
11
- }
12
- export declare class ResolveHelper {
13
- static defaultLogger?: Logger;
14
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
15
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>;
16
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
17
- static validateRequiredResolve(required: boolean | 'warn' | 'log', result: ModuleInstance[] | ModuleInstance | undefined, idOrFilter: ModuleIdentifier | ModuleFilter, logger?: Logger | undefined): void;
18
- }
19
- //# sourceMappingURL=ResolveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;WAChB,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuEzB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1,19 +0,0 @@
1
- import { Address } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
- export interface ResolveHelperConfig {
5
- address: Address;
6
- dead?: boolean;
7
- downResolver?: ModuleResolver;
8
- logger?: Logger;
9
- module: ModuleInstance;
10
- upResolver?: ModuleResolver;
11
- }
12
- export declare class ResolveHelper {
13
- static defaultLogger?: Logger;
14
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
15
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>;
16
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
17
- static validateRequiredResolve(required: boolean | 'warn' | 'log', result: ModuleInstance[] | ModuleInstance | undefined, idOrFilter: ModuleIdentifier | ModuleFilter, logger?: Logger | undefined): void;
18
- }
19
- //# sourceMappingURL=ResolveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;WAChB,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuEzB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1,19 +0,0 @@
1
- import { Address } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
- export interface ResolveHelperConfig {
5
- address: Address;
6
- dead?: boolean;
7
- downResolver?: ModuleResolver;
8
- logger?: Logger;
9
- module: ModuleInstance;
10
- upResolver?: ModuleResolver;
11
- }
12
- export declare class ResolveHelper {
13
- static defaultLogger?: Logger;
14
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
15
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>;
16
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
17
- static validateRequiredResolve(required: boolean | 'warn' | 'log', result: ModuleInstance[] | ModuleInstance | undefined, idOrFilter: ModuleIdentifier | ModuleFilter, logger?: Logger | undefined): void;
18
- }
19
- //# sourceMappingURL=ResolveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;WAChB,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuEzB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1,19 +0,0 @@
1
- import { Address } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
- export interface ResolveHelperConfig {
5
- address: Address;
6
- dead?: boolean;
7
- downResolver?: ModuleResolver;
8
- logger?: Logger;
9
- module: ModuleInstance;
10
- upResolver?: ModuleResolver;
11
- }
12
- export declare class ResolveHelper {
13
- static defaultLogger?: Logger;
14
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
15
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>;
16
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
17
- static validateRequiredResolve(required: boolean | 'warn' | 'log', result: ModuleInstance[] | ModuleInstance | undefined, idOrFilter: ModuleIdentifier | ModuleFilter, logger?: Logger | undefined): void;
18
- }
19
- //# sourceMappingURL=ResolveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;WAChB,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuEzB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1,19 +0,0 @@
1
- import { Address } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
- import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
4
- export interface ResolveHelperConfig {
5
- address: Address;
6
- dead?: boolean;
7
- downResolver?: ModuleResolver;
8
- logger?: Logger;
9
- module: ModuleInstance;
10
- upResolver?: ModuleResolver;
11
- }
12
- export declare class ResolveHelper {
13
- static defaultLogger?: Logger;
14
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
15
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>;
16
- static resolve<T extends ModuleInstance = ModuleInstance>(config: ResolveHelperConfig, id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
17
- static validateRequiredResolve(required: boolean | 'warn' | 'log', result: ModuleInstance[] | ModuleInstance | undefined, idOrFilter: ModuleIdentifier | ModuleFilter, logger?: Logger | undefined): void;
18
- }
19
- //# sourceMappingURL=ResolveHelper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEjJ,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;WAChB,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuEzB,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1,127 +0,0 @@
1
- /* eslint-disable max-statements */
2
- /* eslint-disable complexity */
3
- import { Address } from '@xylabs/hex'
4
- import { IdLogger, Logger } from '@xylabs/logger'
5
- import { toJsonString } from '@xylabs/object'
6
- import { duplicateModules, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleResolver } from '@xyo-network/module-model'
7
-
8
- export interface ResolveHelperConfig {
9
- address: Address
10
- dead?: boolean
11
- downResolver?: ModuleResolver
12
- logger?: Logger
13
- module: ModuleInstance
14
- upResolver?: ModuleResolver
15
- }
16
-
17
- export class ResolveHelper {
18
- static defaultLogger?: Logger
19
- static async resolve<T extends ModuleInstance = ModuleInstance>(
20
- config: ResolveHelperConfig,
21
- all: '*',
22
- options?: ModuleFilterOptions<T>,
23
- ): Promise<T[]>
24
- static async resolve<T extends ModuleInstance = ModuleInstance>(
25
- config: ResolveHelperConfig,
26
- filter: ModuleFilter,
27
- options?: ModuleFilterOptions<T>,
28
- ): Promise<T[]>
29
- static async resolve<T extends ModuleInstance = ModuleInstance>(
30
- config: ResolveHelperConfig,
31
- id: ModuleIdentifier,
32
- options?: ModuleFilterOptions<T>,
33
- ): Promise<T | undefined>
34
- static async resolve<T extends ModuleInstance = ModuleInstance>(
35
- config: ResolveHelperConfig,
36
- idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',
37
- { visibility, maxDepth = 3, required = 'log', ...options }: ModuleFilterOptions<T> = {},
38
- ): Promise<T | T[] | undefined> {
39
- const { module, logger = this.defaultLogger, dead = false, upResolver, downResolver } = config
40
- const log = logger ? new IdLogger(logger, () => `ResolveHelper [${module.id}][${idOrFilter}][${visibility}]`) : undefined
41
-
42
- const downLocalOptions: ModuleFilterOptions<T> = { ...options, direction: 'down', maxDepth, required: false, visibility }
43
- const upLocalOptions: ModuleFilterOptions<T> = { ...downLocalOptions, direction: 'up' }
44
-
45
- const childOptions: ModuleFilterOptions<T> = { ...options, maxDepth: maxDepth - 1, required: false, visibility }
46
-
47
- const direction = options?.direction ?? 'all'
48
- const up = direction === 'up' || direction === 'all'
49
- const down = direction === 'down' || direction === 'all'
50
- let result: T | T[] | undefined
51
- log?.debug('start', idOrFilter, maxDepth)
52
- if (idOrFilter === '*') {
53
- if (dead) {
54
- log?.warn('failed [dead]', idOrFilter)
55
- return []
56
- }
57
- const modules = [
58
- ...(down ? await (downResolver as ModuleResolver).resolve<T>('*', downLocalOptions) : []),
59
- ...(up ? await (upResolver as ModuleResolver).resolve<T>('*', upLocalOptions) : []),
60
- ]
61
- .filter(duplicateModules)
62
- .filter((module) => module.address !== config.address)
63
-
64
- if (modules.length > 0) {
65
- log?.log('modules [count]', modules.length)
66
- log?.debug('modules', toJsonString(modules, 4))
67
- }
68
-
69
- if (maxDepth === 0) {
70
- return modules
71
- }
72
- const childModules = (await Promise.all(modules.map(async (module) => await module.resolve<T>('*', childOptions))))
73
- .flat()
74
- .filter(duplicateModules)
75
- return [...modules, ...childModules].filter(duplicateModules)
76
- } else {
77
- switch (typeof idOrFilter) {
78
- case 'string': {
79
- if (dead) {
80
- return undefined
81
- }
82
- result =
83
- (down ? await (downResolver as ModuleResolver).resolve<T>(idOrFilter, downLocalOptions) : undefined) ??
84
- (up ? await (upResolver as ModuleResolver).resolve<T>(idOrFilter, upLocalOptions) : undefined)
85
- break
86
- }
87
- default: {
88
- if (dead) {
89
- return []
90
- }
91
- const filter: ModuleFilter<T> | undefined = idOrFilter
92
- result = [
93
- ...(down ? await (downResolver as ModuleResolver).resolve<T>(filter, downLocalOptions) : []),
94
- ...(up ? await (upResolver as ModuleResolver).resolve<T>(filter, upLocalOptions) : []),
95
- ].filter(duplicateModules)
96
- break
97
- }
98
- }
99
- }
100
- this.validateRequiredResolve(required, result, idOrFilter, logger)
101
- return result
102
- }
103
-
104
- static validateRequiredResolve(
105
- required: boolean | 'warn' | 'log',
106
- result: ModuleInstance[] | ModuleInstance | undefined,
107
- idOrFilter: ModuleIdentifier | ModuleFilter,
108
- logger = this.defaultLogger,
109
- ) {
110
- const log = logger ? new IdLogger(logger, () => `validateRequiredResolve [${idOrFilter}][${result}]`) : undefined
111
- if (required && (result === undefined || (Array.isArray(result) && result.length > 0))) {
112
- switch (required) {
113
- case 'warn': {
114
- log?.warn('resolve failed', idOrFilter)
115
- break
116
- }
117
- case 'log': {
118
- log?.log('resolve failed', idOrFilter)
119
- break
120
- }
121
- default: {
122
- throw new Error(`resolve failed [${idOrFilter}]`)
123
- }
124
- }
125
- }
126
- }
127
- }