@xyo-network/module-abstract 2.66.8 → 2.67.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 (30) hide show
  1. package/dist/cjs/AbstractIndirectModule.js +1 -2
  2. package/dist/cjs/AbstractIndirectModule.js.map +1 -1
  3. package/dist/cjs/AbstractModule.js +10 -0
  4. package/dist/cjs/AbstractModule.js.map +1 -1
  5. package/dist/cjs/Resolver/CompositeModuleResolver.js +7 -4
  6. package/dist/cjs/Resolver/CompositeModuleResolver.js.map +1 -1
  7. package/dist/cjs/Resolver/SimpleModuleResolver.js +6 -3
  8. package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
  9. package/dist/esm/AbstractIndirectModule.js +1 -2
  10. package/dist/esm/AbstractIndirectModule.js.map +1 -1
  11. package/dist/esm/AbstractModule.js +5 -0
  12. package/dist/esm/AbstractModule.js.map +1 -1
  13. package/dist/esm/Resolver/CompositeModuleResolver.js +7 -4
  14. package/dist/esm/Resolver/CompositeModuleResolver.js.map +1 -1
  15. package/dist/esm/Resolver/SimpleModuleResolver.js +7 -4
  16. package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
  17. package/dist/types/AbstractIndirectModule.d.ts +5 -1
  18. package/dist/types/AbstractIndirectModule.d.ts.map +1 -1
  19. package/dist/types/AbstractModule.d.ts +1 -0
  20. package/dist/types/AbstractModule.d.ts.map +1 -1
  21. package/dist/types/Resolver/CompositeModuleResolver.d.ts +5 -5
  22. package/dist/types/Resolver/CompositeModuleResolver.d.ts.map +1 -1
  23. package/dist/types/Resolver/SimpleModuleResolver.d.ts +5 -5
  24. package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
  25. package/package.json +22 -21
  26. package/src/AbstractIndirectModule.ts +7 -2
  27. package/src/AbstractModule.ts +6 -0
  28. package/src/Resolver/CompositeModuleResolver.ts +16 -13
  29. package/src/Resolver/SimpleModuleResolver.ts +28 -25
  30. package/dist/docs.json +0 -35662
package/package.json CHANGED
@@ -12,29 +12,29 @@
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.9.3",
14
14
  "@xylabs/exists": "^2.9.3",
15
- "@xyo-network/account": "~2.66.8",
16
- "@xyo-network/account-model": "~2.66.8",
17
- "@xyo-network/address-payload-plugin": "~2.66.8",
18
- "@xyo-network/archivist-model": "~2.66.8",
19
- "@xyo-network/boundwitness-builder": "~2.66.8",
20
- "@xyo-network/boundwitness-model": "~2.66.8",
21
- "@xyo-network/config-payload-plugin": "~2.66.8",
22
- "@xyo-network/core": "~2.66.8",
23
- "@xyo-network/error": "~2.66.8",
24
- "@xyo-network/manifest-model": "~2.66.8",
25
- "@xyo-network/module-events": "~2.66.8",
26
- "@xyo-network/module-model": "~2.66.8",
27
- "@xyo-network/payload-builder": "~2.66.8",
28
- "@xyo-network/payload-model": "~2.66.8",
29
- "@xyo-network/payload-wrapper": "~2.66.8",
30
- "@xyo-network/promise": "~2.66.8",
31
- "@xyo-network/query-payload-plugin": "~2.66.8",
32
- "@xyo-network/shared": "~2.66.8",
15
+ "@xyo-network/account": "~2.67.0-rc.1",
16
+ "@xyo-network/account-model": "~2.67.0-rc.1",
17
+ "@xyo-network/address-payload-plugin": "~2.67.0-rc.1",
18
+ "@xyo-network/archivist-model": "~2.67.0-rc.1",
19
+ "@xyo-network/boundwitness-builder": "~2.67.0-rc.1",
20
+ "@xyo-network/boundwitness-model": "~2.67.0-rc.1",
21
+ "@xyo-network/config-payload-plugin": "~2.67.0-rc.1",
22
+ "@xyo-network/core": "~2.67.0-rc.1",
23
+ "@xyo-network/error": "~2.67.0-rc.1",
24
+ "@xyo-network/manifest-model": "~2.67.0-rc.1",
25
+ "@xyo-network/module-events": "~2.67.0-rc.1",
26
+ "@xyo-network/module-model": "~2.67.0-rc.1",
27
+ "@xyo-network/payload-builder": "~2.67.0-rc.1",
28
+ "@xyo-network/payload-model": "~2.67.0-rc.1",
29
+ "@xyo-network/payload-wrapper": "~2.67.0-rc.1",
30
+ "@xyo-network/promise": "~2.67.0-rc.1",
31
+ "@xyo-network/query-payload-plugin": "~2.67.0-rc.1",
32
+ "@xyo-network/shared": "~2.67.0-rc.1",
33
33
  "lodash": "^4.17.21"
34
34
  },
35
35
  "devDependencies": {
36
- "@xylabs/ts-scripts-yarn3": "^2.18.11",
37
- "@xylabs/tsconfig": "^2.18.11",
36
+ "@xylabs/ts-scripts-yarn3": "^2.19.0",
37
+ "@xylabs/tsconfig": "^2.19.0",
38
38
  "jest": "^29.6.1",
39
39
  "jest-mock-extended": "^3.0.4",
40
40
  "typescript": "^5.1.6"
@@ -72,5 +72,6 @@
72
72
  },
73
73
  "sideEffects": false,
74
74
  "types": "dist/types/index.d.ts",
75
- "version": "2.66.8"
75
+ "version": "2.67.0-rc.1",
76
+ "stableVersion": "2.66.9"
76
77
  }
@@ -23,6 +23,7 @@ import {
23
23
  ModuleBusyEventArgs,
24
24
  ModuleConfig,
25
25
  ModuleDescribeQuerySchema,
26
+ ModuleDescription,
26
27
  ModuleDescriptionPayload,
27
28
  ModuleDescriptionSchema,
28
29
  ModuleDiscoverQuerySchema,
@@ -125,7 +126,7 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
125
126
  }
126
127
 
127
128
  get queries(): string[] {
128
- return [ModuleDiscoverQuerySchema, ModuleAddressQuerySchema, ModuleSubscribeQuerySchema]
129
+ return [ModuleDiscoverQuerySchema, ModuleAddressQuerySchema, ModuleSubscribeQuerySchema, ModuleDescribeQuerySchema, ModuleManifestQuerySchema]
129
130
  }
130
131
 
131
132
  get queryAccountPaths(): Readonly<Record<Query['schema'], string | undefined>> {
@@ -199,7 +200,6 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
199
200
  if (!account) console.warn(`AbstractModule.loadAccount: No account provided - Creating Random account [${this.config.schema}]`)
200
201
  this._account = account ?? (await HDWallet.random())
201
202
  }
202
- this.downResolver.add(this as Module)
203
203
  return this._account
204
204
  }
205
205
 
@@ -571,4 +571,9 @@ export abstract class AbstractIndirectModule<TParams extends ModuleParams = Modu
571
571
  const resolved = await this.upResolver.resolve(filter)
572
572
  return asArchivistInstance(resolved)
573
573
  }
574
+
575
+ abstract describe(): Promise<ModuleDescription>
576
+ abstract discover(): Promisable<Payload[]>
577
+ abstract manifest(): Promisable<ModuleManifestPayload>
578
+ abstract moduleAddress(): Promisable<AddressPreviousHashPayload[]>
574
579
  }
@@ -29,6 +29,12 @@ export abstract class AbstractModule<TParams extends ModuleParams = ModuleParams
29
29
  })
30
30
  }
31
31
 
32
+ override async loadAccount() {
33
+ const account = await super.loadAccount()
34
+ this.downResolver.add(this)
35
+ return account
36
+ }
37
+
32
38
  manifest(): Promise<ModuleManifestPayload> {
33
39
  return this.busy(async () => {
34
40
  return await super.manifestHandler()
@@ -1,6 +1,6 @@
1
1
  import { exists } from '@xylabs/exists'
2
2
  import { Base, BaseParams } from '@xyo-network/core'
3
- import { duplicateModules, Module, ModuleFilter, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'
3
+ import { duplicateModules, ModuleFilter, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'
4
4
 
5
5
  import { SimpleModuleResolver } from './SimpleModuleResolver'
6
6
 
@@ -19,9 +19,9 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
19
19
  return true
20
20
  }
21
21
 
22
- add(module: Module): this
23
- add(module: Module[]): this
24
- add(module: Module | Module[]): this {
22
+ add(module: ModuleInstance): this
23
+ add(module: ModuleInstance[]): this
24
+ add(module: ModuleInstance | ModuleInstance[]): this {
25
25
  if (Array.isArray(module)) {
26
26
  module.forEach((module) => this.addSingleModule(module))
27
27
  } else {
@@ -49,28 +49,31 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
49
49
  return this
50
50
  }
51
51
 
52
- async resolve(filter?: ModuleFilter): Promise<Module[]>
53
- async resolve(nameOrAddress: string): Promise<Module | undefined>
54
- async resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promise<Module | Module[] | undefined> {
52
+ async resolve(filter?: ModuleFilter): Promise<ModuleInstance[]>
53
+ async resolve(nameOrAddress: string): Promise<ModuleInstance | undefined>
54
+ async resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promise<ModuleInstance | ModuleInstance[] | undefined> {
55
55
  if (typeof nameOrAddressOrFilter === 'string') {
56
- const result = await Promise.all(
56
+ const results = await Promise.all(
57
57
  this.resolvers.map(async (resolver) => {
58
- return await resolver.resolve(nameOrAddressOrFilter)
58
+ const result: ModuleInstance | undefined = await resolver.resolve(nameOrAddressOrFilter)
59
+ return result
59
60
  }),
60
61
  )
61
- return result.filter(exists).filter(duplicateModules).pop()
62
+ const result: ModuleInstance | undefined = results.filter(exists).filter(duplicateModules).pop()
63
+ return result
62
64
  } else {
63
65
  const result = await Promise.all(
64
66
  this.resolvers.map(async (resolver) => {
65
- return await resolver.resolve(nameOrAddressOrFilter)
67
+ const result: ModuleInstance[] = await resolver.resolve(nameOrAddressOrFilter)
68
+ return result
66
69
  }),
67
70
  )
68
- const flatResult = result.flat()
71
+ const flatResult: ModuleInstance[] = result.flat()
69
72
  return flatResult.filter(duplicateModules)
70
73
  }
71
74
  }
72
75
 
73
- private addSingleModule(module?: Module) {
76
+ private addSingleModule(module?: ModuleInstance) {
74
77
  if (module) {
75
78
  this.localResolver.add(module)
76
79
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AddressModuleFilter,
3
- Module,
4
3
  ModuleFilter,
4
+ ModuleInstance,
5
5
  ModuleRepository,
6
6
  ModuleResolver,
7
7
  NameModuleFilter,
@@ -14,15 +14,15 @@ import flatten from 'lodash/flatten'
14
14
  //This class is now package private (not exported from index.ts)
15
15
  export class SimpleModuleResolver implements ModuleRepository {
16
16
  private addressToName: Record<string, string> = {}
17
- private modules: Record<string, Module> = {}
17
+ private modules: Record<string, ModuleInstance> = {}
18
18
 
19
19
  get isModuleResolver() {
20
20
  return true
21
21
  }
22
22
 
23
- add(module: Module): this
24
- add(module: Module[]): this
25
- add(module: Module | Module[]): this {
23
+ add(module: ModuleInstance): this
24
+ add(module: ModuleInstance[]): this
25
+ add(module: ModuleInstance | ModuleInstance[]): this {
26
26
  if (Array.isArray(module)) {
27
27
  module.forEach((module) => this.addSingleModule(module))
28
28
  } else {
@@ -48,19 +48,21 @@ export class SimpleModuleResolver implements ModuleRepository {
48
48
  throw 'Removing resolvers not supported'
49
49
  }
50
50
 
51
- resolve(filter?: ModuleFilter): Promisable<Module[]>
52
- resolve(nameOrAddress: string): Promisable<Module | undefined>
53
- resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promisable<Module | Module[] | undefined> {
51
+ resolve(filter?: ModuleFilter): Promisable<ModuleInstance[]>
52
+ resolve(nameOrAddress: string): Promisable<ModuleInstance | undefined>
53
+ resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promisable<ModuleInstance[] | ModuleInstance | undefined> {
54
54
  if (nameOrAddressOrFilter) {
55
55
  if (typeof nameOrAddressOrFilter === 'string') {
56
- return (
56
+ const result: ModuleInstance | undefined =
57
57
  this.resolveByName(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??
58
58
  this.resolveByAddress(Object.values(this.modules), [nameOrAddressOrFilter]).pop()
59
- )
59
+ return result
60
60
  } else if ((nameOrAddressOrFilter as AddressModuleFilter).address) {
61
- return this.resolveByAddress(Object.values(this.modules), (nameOrAddressOrFilter as AddressModuleFilter).address)
61
+ const result: ModuleInstance[] = this.resolveByAddress(Object.values(this.modules), (nameOrAddressOrFilter as AddressModuleFilter).address)
62
+ return result
62
63
  } else if ((nameOrAddressOrFilter as NameModuleFilter).name) {
63
- return this.resolveByName(Object.values(this.modules), (nameOrAddressOrFilter as NameModuleFilter).name)
64
+ const result: ModuleInstance[] = this.resolveByName(Object.values(this.modules), (nameOrAddressOrFilter as NameModuleFilter).name)
65
+ return result
64
66
  } else if ((nameOrAddressOrFilter as QueryModuleFilter).query) {
65
67
  return this.resolveByQuery(Object.values(this.modules), (nameOrAddressOrFilter as QueryModuleFilter).query)
66
68
  }
@@ -69,7 +71,7 @@ export class SimpleModuleResolver implements ModuleRepository {
69
71
  }
70
72
  }
71
73
 
72
- private addSingleModule(module?: Module) {
74
+ private addSingleModule(module?: ModuleInstance) {
73
75
  if (module) {
74
76
  this.modules[module.address] = module
75
77
  }
@@ -87,7 +89,7 @@ export class SimpleModuleResolver implements ModuleRepository {
87
89
  }
88
90
  }
89
91
 
90
- private resolveByAddress<T extends Module = Module>(modules: T[], address?: string[]): T[] {
92
+ private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: T[], address?: string[]): T[] {
91
93
  return address
92
94
  ? compact(
93
95
  flatten(
@@ -99,25 +101,26 @@ export class SimpleModuleResolver implements ModuleRepository {
99
101
  : modules
100
102
  }
101
103
 
102
- private resolveByName<T extends Module = Module>(modules: T[], name?: string[]): T[] {
104
+ private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: T[], name?: string[]): T[] {
103
105
  if (name) {
104
106
  return compact(name.map((name) => modules.filter((module) => module.config.name === name)).flat())
105
107
  }
106
108
  return modules
107
109
  }
108
110
 
109
- private resolveByQuery<T extends Module = Module>(modules: T[], query?: string[][]): T[] {
111
+ private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: T[], query?: string[][]): T[] {
110
112
  return query
111
113
  ? compact(
112
- modules.filter((module) =>
113
- query?.reduce((supported, queryList) => {
114
- return (
115
- queryList.reduce((supported, query) => {
116
- const queryable = module.queries.includes(query)
117
- return supported && queryable
118
- }, true) || supported
119
- )
120
- }, false),
114
+ modules.filter(
115
+ (module) =>
116
+ query?.reduce((supported, queryList) => {
117
+ return (
118
+ queryList.reduce((supported, query) => {
119
+ const queryable = module.queries.includes(query)
120
+ return supported && queryable
121
+ }, true) || supported
122
+ )
123
+ }, false),
121
124
  ),
122
125
  )
123
126
  : modules