@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.
- package/dist/cjs/AbstractIndirectModule.js +1 -2
- package/dist/cjs/AbstractIndirectModule.js.map +1 -1
- package/dist/cjs/AbstractModule.js +10 -0
- package/dist/cjs/AbstractModule.js.map +1 -1
- package/dist/cjs/Resolver/CompositeModuleResolver.js +7 -4
- package/dist/cjs/Resolver/CompositeModuleResolver.js.map +1 -1
- package/dist/cjs/Resolver/SimpleModuleResolver.js +6 -3
- package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/esm/AbstractIndirectModule.js +1 -2
- package/dist/esm/AbstractIndirectModule.js.map +1 -1
- package/dist/esm/AbstractModule.js +5 -0
- package/dist/esm/AbstractModule.js.map +1 -1
- package/dist/esm/Resolver/CompositeModuleResolver.js +7 -4
- package/dist/esm/Resolver/CompositeModuleResolver.js.map +1 -1
- package/dist/esm/Resolver/SimpleModuleResolver.js +7 -4
- package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/types/AbstractIndirectModule.d.ts +5 -1
- package/dist/types/AbstractIndirectModule.d.ts.map +1 -1
- package/dist/types/AbstractModule.d.ts +1 -0
- package/dist/types/AbstractModule.d.ts.map +1 -1
- package/dist/types/Resolver/CompositeModuleResolver.d.ts +5 -5
- package/dist/types/Resolver/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/types/Resolver/SimpleModuleResolver.d.ts +5 -5
- package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
- package/package.json +22 -21
- package/src/AbstractIndirectModule.ts +7 -2
- package/src/AbstractModule.ts +6 -0
- package/src/Resolver/CompositeModuleResolver.ts +16 -13
- package/src/Resolver/SimpleModuleResolver.ts +28 -25
- 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.
|
|
16
|
-
"@xyo-network/account-model": "~2.
|
|
17
|
-
"@xyo-network/address-payload-plugin": "~2.
|
|
18
|
-
"@xyo-network/archivist-model": "~2.
|
|
19
|
-
"@xyo-network/boundwitness-builder": "~2.
|
|
20
|
-
"@xyo-network/boundwitness-model": "~2.
|
|
21
|
-
"@xyo-network/config-payload-plugin": "~2.
|
|
22
|
-
"@xyo-network/core": "~2.
|
|
23
|
-
"@xyo-network/error": "~2.
|
|
24
|
-
"@xyo-network/manifest-model": "~2.
|
|
25
|
-
"@xyo-network/module-events": "~2.
|
|
26
|
-
"@xyo-network/module-model": "~2.
|
|
27
|
-
"@xyo-network/payload-builder": "~2.
|
|
28
|
-
"@xyo-network/payload-model": "~2.
|
|
29
|
-
"@xyo-network/payload-wrapper": "~2.
|
|
30
|
-
"@xyo-network/promise": "~2.
|
|
31
|
-
"@xyo-network/query-payload-plugin": "~2.
|
|
32
|
-
"@xyo-network/shared": "~2.
|
|
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.
|
|
37
|
-
"@xylabs/tsconfig": "^2.
|
|
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.
|
|
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
|
}
|
package/src/AbstractModule.ts
CHANGED
|
@@ -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,
|
|
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:
|
|
23
|
-
add(module:
|
|
24
|
-
add(module:
|
|
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<
|
|
53
|
-
async resolve(nameOrAddress: string): Promise<
|
|
54
|
-
async resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promise<
|
|
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
|
|
56
|
+
const results = await Promise.all(
|
|
57
57
|
this.resolvers.map(async (resolver) => {
|
|
58
|
-
|
|
58
|
+
const result: ModuleInstance | undefined = await resolver.resolve(nameOrAddressOrFilter)
|
|
59
|
+
return result
|
|
59
60
|
}),
|
|
60
61
|
)
|
|
61
|
-
|
|
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
|
-
|
|
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?:
|
|
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,
|
|
17
|
+
private modules: Record<string, ModuleInstance> = {}
|
|
18
18
|
|
|
19
19
|
get isModuleResolver() {
|
|
20
20
|
return true
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
add(module:
|
|
24
|
-
add(module:
|
|
25
|
-
add(module:
|
|
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<
|
|
52
|
-
resolve(nameOrAddress: string): Promisable<
|
|
53
|
-
resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promisable<
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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?:
|
|
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
|
|
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
|
|
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
|
|
111
|
+
private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: T[], query?: string[][]): T[] {
|
|
110
112
|
return query
|
|
111
113
|
? compact(
|
|
112
|
-
modules.filter(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|