@xyo-network/node 2.65.5 → 2.66.0
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/AbstractNode.js +68 -12
- package/dist/cjs/AbstractNode.js.map +1 -1
- package/dist/cjs/MemoryNode.js +19 -5
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/esm/AbstractNode.js +57 -15
- package/dist/esm/AbstractNode.js.map +1 -1
- package/dist/esm/MemoryNode.js +17 -3
- package/dist/esm/MemoryNode.js.map +1 -1
- package/dist/types/AbstractNode.d.ts +5 -3
- package/dist/types/AbstractNode.d.ts.map +1 -1
- package/dist/types/MemoryNode.d.ts +1 -0
- package/dist/types/MemoryNode.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/AbstractNode.ts +81 -19
- package/src/MemoryNode.ts +18 -5
- package/dist/docs.json +0 -43696
package/package.json
CHANGED
|
@@ -11,26 +11,26 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.9.3",
|
|
14
|
-
"@xyo-network/account": "^2.
|
|
15
|
-
"@xyo-network/account-model": "^2.
|
|
16
|
-
"@xyo-network/address-payload-plugin": "^2.
|
|
17
|
-
"@xyo-network/boundwitness-builder": "^2.
|
|
18
|
-
"@xyo-network/error": "^2.
|
|
19
|
-
"@xyo-network/manifest-model": "^2.
|
|
20
|
-
"@xyo-network/module": "^2.
|
|
21
|
-
"@xyo-network/module-abstract": "^2.
|
|
22
|
-
"@xyo-network/module-model": "^2.
|
|
23
|
-
"@xyo-network/node-model": "^2.
|
|
24
|
-
"@xyo-network/node-wrapper": "^2.
|
|
25
|
-
"@xyo-network/payload-builder": "^2.
|
|
26
|
-
"@xyo-network/payload-model": "^2.
|
|
27
|
-
"@xyo-network/promise": "^2.
|
|
14
|
+
"@xyo-network/account": "^2.66.0",
|
|
15
|
+
"@xyo-network/account-model": "^2.66.0",
|
|
16
|
+
"@xyo-network/address-payload-plugin": "^2.66.0",
|
|
17
|
+
"@xyo-network/boundwitness-builder": "^2.66.0",
|
|
18
|
+
"@xyo-network/error": "^2.66.0",
|
|
19
|
+
"@xyo-network/manifest-model": "^2.66.0",
|
|
20
|
+
"@xyo-network/module": "^2.66.0",
|
|
21
|
+
"@xyo-network/module-abstract": "^2.66.0",
|
|
22
|
+
"@xyo-network/module-model": "^2.66.0",
|
|
23
|
+
"@xyo-network/node-model": "^2.66.0",
|
|
24
|
+
"@xyo-network/node-wrapper": "^2.66.0",
|
|
25
|
+
"@xyo-network/payload-builder": "^2.66.0",
|
|
26
|
+
"@xyo-network/payload-model": "^2.66.0",
|
|
27
|
+
"@xyo-network/promise": "^2.66.0",
|
|
28
28
|
"lodash": "^4.17.21"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/lodash": "^4.14.195",
|
|
32
|
-
"@xylabs/ts-scripts-yarn3": "^2.18.
|
|
33
|
-
"@xylabs/tsconfig": "^2.18.
|
|
32
|
+
"@xylabs/ts-scripts-yarn3": "^2.18.11",
|
|
33
|
+
"@xylabs/tsconfig": "^2.18.11",
|
|
34
34
|
"typescript": "^5.1.6"
|
|
35
35
|
},
|
|
36
36
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -66,5 +66,5 @@
|
|
|
66
66
|
},
|
|
67
67
|
"sideEffects": false,
|
|
68
68
|
"types": "dist/types/index.d.ts",
|
|
69
|
-
"version": "2.
|
|
69
|
+
"version": "2.66.0"
|
|
70
70
|
}
|
package/src/AbstractNode.ts
CHANGED
|
@@ -6,7 +6,15 @@ import { handleErrorAsync } from '@xyo-network/error'
|
|
|
6
6
|
import { NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'
|
|
7
7
|
import { ModuleWrapper } from '@xyo-network/module'
|
|
8
8
|
import { AbstractIndirectModule, CompositeModuleResolver, ModuleErrorBuilder } from '@xyo-network/module-abstract'
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
duplicateModules,
|
|
11
|
+
isDirectModule,
|
|
12
|
+
Module,
|
|
13
|
+
ModuleConfig,
|
|
14
|
+
ModuleFilter,
|
|
15
|
+
ModuleFilterOptions,
|
|
16
|
+
ModuleQueryResult,
|
|
17
|
+
} from '@xyo-network/module-model'
|
|
10
18
|
import {
|
|
11
19
|
IndirectNodeModule,
|
|
12
20
|
NodeAttachedQuerySchema,
|
|
@@ -59,7 +67,7 @@ export abstract class AbstractNode<TParams extends NodeModuleParams = NodeModule
|
|
|
59
67
|
}
|
|
60
68
|
|
|
61
69
|
async attachedModules(): Promise<Module[]> {
|
|
62
|
-
return await (this.
|
|
70
|
+
return (await (this.downResolver.resolve() ?? [])).filter((module) => module.address !== this.address)
|
|
63
71
|
}
|
|
64
72
|
|
|
65
73
|
register(_module: Module): Promisable<void> {
|
|
@@ -74,24 +82,37 @@ export abstract class AbstractNode<TParams extends NodeModuleParams = NodeModule
|
|
|
74
82
|
throw new Error('Method not implemented.')
|
|
75
83
|
}
|
|
76
84
|
|
|
77
|
-
async
|
|
78
|
-
async
|
|
79
|
-
async
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
override async resolve<TModule extends Module = Module>(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<TModule[]>
|
|
86
|
+
override async resolve<TModule extends Module = Module>(nameOrAddress: string, options?: ModuleFilterOptions): Promise<TModule | undefined>
|
|
87
|
+
override async resolve<TModule extends Module = Module>(
|
|
88
|
+
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
89
|
+
options?: ModuleFilterOptions,
|
|
90
|
+
): Promise<TModule | TModule[] | undefined> {
|
|
91
|
+
//checking type of nameOrAddressOrFilter before calling other functions since TS seems
|
|
92
|
+
//to need help here narrowing before the call
|
|
93
|
+
if (typeof nameOrAddressOrFilter === 'string') {
|
|
94
|
+
switch (options?.visibility) {
|
|
95
|
+
case 'private': {
|
|
96
|
+
return await this.resolvePrivate<TModule>(nameOrAddressOrFilter)
|
|
97
|
+
}
|
|
98
|
+
case 'all': {
|
|
99
|
+
return await this.resolveAll<TModule>(nameOrAddressOrFilter)
|
|
100
|
+
}
|
|
101
|
+
default: {
|
|
102
|
+
return await super.resolve<TModule>(nameOrAddressOrFilter, options)
|
|
103
|
+
}
|
|
91
104
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
} else {
|
|
106
|
+
switch (options?.visibility) {
|
|
107
|
+
case 'all': {
|
|
108
|
+
return await this.resolveAll<TModule>(nameOrAddressOrFilter)
|
|
109
|
+
}
|
|
110
|
+
case 'private': {
|
|
111
|
+
return await this.resolvePrivate<TModule>(nameOrAddressOrFilter)
|
|
112
|
+
}
|
|
113
|
+
default: {
|
|
114
|
+
return await super.resolve<TModule>(nameOrAddressOrFilter, options)
|
|
115
|
+
}
|
|
95
116
|
}
|
|
96
117
|
}
|
|
97
118
|
}
|
|
@@ -115,13 +136,17 @@ export abstract class AbstractNode<TParams extends NodeModuleParams = NodeModule
|
|
|
115
136
|
const notThisModule = (module: Module) => module.address !== this.address
|
|
116
137
|
const toManifest = (module: Module) => (isDirectModule(module) ? module.manifest() : ModuleWrapper.wrap(module, this.account).manifest())
|
|
117
138
|
|
|
139
|
+
const privateModulesList = await this.privateResolver.resolve()
|
|
118
140
|
const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))
|
|
141
|
+
console.log(`manifestHandler:privateModules:${privateModulesList.length}`)
|
|
119
142
|
if (privateModules.length > 0) {
|
|
120
143
|
manifest.modules = manifest.modules ?? {}
|
|
121
144
|
manifest.modules.private = privateModules
|
|
122
145
|
}
|
|
123
146
|
|
|
147
|
+
const publicModulesList = await this.downResolver.resolve()
|
|
124
148
|
const publicModules = await Promise.all((await this.downResolver.resolve()).filter(notThisModule).map(toManifest))
|
|
149
|
+
console.log(`manifestHandler:publicModules:${publicModulesList.length}`)
|
|
125
150
|
if (publicModules.length > 0) {
|
|
126
151
|
manifest.modules = manifest.modules ?? {}
|
|
127
152
|
manifest.modules.public = publicModules
|
|
@@ -193,6 +218,43 @@ export abstract class AbstractNode<TParams extends NodeModuleParams = NodeModule
|
|
|
193
218
|
return (await this.bindQueryResult(queryPayload, resultPayloads, [queryAccount], errorPayloads))[0]
|
|
194
219
|
}
|
|
195
220
|
|
|
221
|
+
private async resolveAll<TModule extends Module = Module>(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<TModule[]>
|
|
222
|
+
private async resolveAll<TModule extends Module = Module>(nameOrAddress: string, options?: ModuleFilterOptions): Promise<TModule | undefined>
|
|
223
|
+
private async resolveAll<TModule extends Module = Module>(
|
|
224
|
+
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
225
|
+
options?: ModuleFilterOptions,
|
|
226
|
+
): Promise<TModule | TModule[] | undefined> {
|
|
227
|
+
switch (typeof nameOrAddressOrFilter) {
|
|
228
|
+
case 'string': {
|
|
229
|
+
return (await this.resolvePrivate<TModule>(nameOrAddressOrFilter, options)) ?? (await super.resolve<TModule>(nameOrAddressOrFilter, options))
|
|
230
|
+
}
|
|
231
|
+
default: {
|
|
232
|
+
return [
|
|
233
|
+
...(await this.resolvePrivate<TModule>(nameOrAddressOrFilter, options)),
|
|
234
|
+
...(await super.resolve<TModule>(nameOrAddressOrFilter, options)),
|
|
235
|
+
].filter(duplicateModules)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
private async resolvePrivate<TModule extends Module = Module>(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<TModule[]>
|
|
241
|
+
private async resolvePrivate<TModule extends Module = Module>(nameOrAddress: string, options?: ModuleFilterOptions): Promise<TModule | undefined>
|
|
242
|
+
private async resolvePrivate<TModule extends Module = Module>(
|
|
243
|
+
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
244
|
+
options?: ModuleFilterOptions,
|
|
245
|
+
): Promise<TModule | TModule[] | undefined> {
|
|
246
|
+
const direction = options?.direction ?? 'all'
|
|
247
|
+
const down = direction === 'down' || direction === 'all'
|
|
248
|
+
switch (typeof nameOrAddressOrFilter) {
|
|
249
|
+
case 'string': {
|
|
250
|
+
return down ? await this.privateResolver.resolve<TModule>(nameOrAddressOrFilter) : undefined
|
|
251
|
+
}
|
|
252
|
+
default: {
|
|
253
|
+
return down ? await this.privateResolver.resolve<TModule>(nameOrAddressOrFilter) : undefined
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
196
258
|
abstract attach(nameOrAddress: string, external?: boolean): Promisable<string | undefined>
|
|
197
259
|
abstract detach(nameOrAddress: string): Promisable<string | undefined>
|
|
198
260
|
}
|
package/src/MemoryNode.ts
CHANGED
|
@@ -27,30 +27,37 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams, TEv
|
|
|
27
27
|
private registeredModuleMap: Record<string, Module> = {}
|
|
28
28
|
|
|
29
29
|
override async attach(nameOrAddress: string, external?: boolean) {
|
|
30
|
+
await this.started('throw')
|
|
30
31
|
return (await this.attachUsingAddress(nameOrAddress, external)) ?? (await this.attachUsingName(nameOrAddress, external))
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
async describe(): Promise<ModuleDescriptionPayload> {
|
|
35
|
+
await this.started('throw')
|
|
34
36
|
return await super.describeHandler()
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
override async detach(nameOrAddress: string) {
|
|
40
|
+
await this.started('throw')
|
|
38
41
|
return (await this.detachUsingAddress(nameOrAddress)) ?? (await this.detachUsingName(nameOrAddress))
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
async discover(): Promise<Payload[]> {
|
|
45
|
+
await this.started('throw')
|
|
42
46
|
return await super.discoverHandler()
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
async manifest(): Promise<NodeManifestPayload> {
|
|
50
|
+
await this.started('throw')
|
|
46
51
|
return await super.manifestHandler()
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
async moduleAddress(): Promise<AddressPreviousHashPayload[]> {
|
|
55
|
+
await this.started('throw')
|
|
50
56
|
return await super.moduleAddressHandler()
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
override async register(module: Module) {
|
|
60
|
+
await this.started('throw')
|
|
54
61
|
assertEx(!this.registeredModuleMap[module.address], `Module already registered at that address[${module.address}]`)
|
|
55
62
|
this.registeredModuleMap[module.address] = module
|
|
56
63
|
const args = { module, name: module.config.name }
|
|
@@ -74,6 +81,7 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams, TEv
|
|
|
74
81
|
}
|
|
75
82
|
|
|
76
83
|
override async unregister(module: Module) {
|
|
84
|
+
await this.started('throw')
|
|
77
85
|
await this.detach(module.address)
|
|
78
86
|
delete this.registeredModuleMap[module.address]
|
|
79
87
|
const args = { module, name: module.config.name }
|
|
@@ -81,6 +89,10 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams, TEv
|
|
|
81
89
|
return this
|
|
82
90
|
}
|
|
83
91
|
|
|
92
|
+
protected override startHandler() {
|
|
93
|
+
return super.startHandler()
|
|
94
|
+
}
|
|
95
|
+
|
|
84
96
|
private async attachUsingAddress(address: string, external?: boolean) {
|
|
85
97
|
const existingModule = (await this.resolve({ address: [address] })).pop()
|
|
86
98
|
assertEx(!existingModule, `Module [${existingModule?.config.name ?? existingModule?.address}] already attached at address [${address}]`)
|
|
@@ -116,17 +128,20 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams, TEv
|
|
|
116
128
|
|
|
117
129
|
const notificationList = await getModulesToNotifyAbout(module)
|
|
118
130
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
//give it inside access
|
|
131
|
+
//give it private access
|
|
122
132
|
module.upResolver.addResolver?.(this.privateResolver)
|
|
123
133
|
|
|
134
|
+
//give it public access
|
|
135
|
+
module.upResolver.addResolver?.(this.downResolver)
|
|
136
|
+
|
|
124
137
|
//give it outside access
|
|
125
138
|
module.upResolver.addResolver?.(this.upResolver)
|
|
126
139
|
|
|
127
140
|
if (external) {
|
|
128
141
|
//expose it externally
|
|
129
142
|
this.downResolver.addResolver(module.downResolver)
|
|
143
|
+
} else {
|
|
144
|
+
this.privateResolver.addResolver(module.downResolver)
|
|
130
145
|
}
|
|
131
146
|
|
|
132
147
|
const args = { module, name: module.config.name }
|
|
@@ -173,8 +188,6 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams, TEv
|
|
|
173
188
|
return
|
|
174
189
|
}
|
|
175
190
|
|
|
176
|
-
this.privateResolver.removeResolver(module.downResolver)
|
|
177
|
-
|
|
178
191
|
//remove inside access
|
|
179
192
|
module.upResolver?.removeResolver?.(this.privateResolver)
|
|
180
193
|
|