@xyo-network/node-abstract 2.94.20 → 2.94.22
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/browser/AbstractNode.d.cts +1 -9
- package/dist/browser/AbstractNode.d.cts.map +1 -1
- package/dist/browser/AbstractNode.d.mts +1 -9
- package/dist/browser/AbstractNode.d.mts.map +1 -1
- package/dist/browser/AbstractNode.d.ts +1 -9
- package/dist/browser/AbstractNode.d.ts.map +1 -1
- package/dist/browser/index.cjs +6 -69
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +6 -69
- package/dist/browser/index.js.map +1 -1
- package/dist/node/AbstractNode.d.cts +1 -9
- package/dist/node/AbstractNode.d.cts.map +1 -1
- package/dist/node/AbstractNode.d.mts +1 -9
- package/dist/node/AbstractNode.d.mts.map +1 -1
- package/dist/node/AbstractNode.d.ts +1 -9
- package/dist/node/AbstractNode.d.ts.map +1 -1
- package/dist/node/index.cjs +6 -69
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +6 -69
- package/dist/node/index.js.map +1 -1
- package/package.json +11 -11
- package/src/AbstractNode.ts +5 -88
|
@@ -3,7 +3,7 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
5
5
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
6
|
-
import { Module, ModuleConfig,
|
|
6
|
+
import { Module, ModuleConfig, ModuleIdentifier, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
7
7
|
import { NodeModule, NodeModuleEventData, NodeParams, NodeQueries } from '@xyo-network/node-model';
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model';
|
|
9
9
|
export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
@@ -15,20 +15,12 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
|
|
|
15
15
|
static isNode(module: unknown): boolean;
|
|
16
16
|
attached(): Promise<Address[]>;
|
|
17
17
|
manifest(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
18
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
19
|
-
resolve(): Promise<ModuleInstance[]>;
|
|
20
|
-
resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
21
|
-
resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
22
|
-
resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
23
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
25
18
|
protected attachedPrivateModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
26
19
|
protected attachedPublicModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
27
20
|
protected generateConfigAndAddress(maxDepth?: number): Promise<Payload[]>;
|
|
28
21
|
protected manifestHandler(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
29
22
|
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
30
23
|
private resolveAll;
|
|
31
|
-
private resolvePrivate;
|
|
32
24
|
abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>;
|
|
33
25
|
abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>;
|
|
34
26
|
abstract registered(): Promisable<Address[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EAGZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAIvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY3D,eAAe,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB/F,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA6CtB,UAAU;IAoBxB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
|
@@ -3,7 +3,7 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
5
5
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
6
|
-
import { Module, ModuleConfig,
|
|
6
|
+
import { Module, ModuleConfig, ModuleIdentifier, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
7
7
|
import { NodeModule, NodeModuleEventData, NodeParams, NodeQueries } from '@xyo-network/node-model';
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model';
|
|
9
9
|
export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
@@ -15,20 +15,12 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
|
|
|
15
15
|
static isNode(module: unknown): boolean;
|
|
16
16
|
attached(): Promise<Address[]>;
|
|
17
17
|
manifest(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
18
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
19
|
-
resolve(): Promise<ModuleInstance[]>;
|
|
20
|
-
resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
21
|
-
resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
22
|
-
resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
23
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
25
18
|
protected attachedPrivateModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
26
19
|
protected attachedPublicModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
27
20
|
protected generateConfigAndAddress(maxDepth?: number): Promise<Payload[]>;
|
|
28
21
|
protected manifestHandler(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
29
22
|
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
30
23
|
private resolveAll;
|
|
31
|
-
private resolvePrivate;
|
|
32
24
|
abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>;
|
|
33
25
|
abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>;
|
|
34
26
|
abstract registered(): Promisable<Address[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EAGZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAIvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY3D,eAAe,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB/F,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA6CtB,UAAU;IAoBxB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
|
@@ -3,7 +3,7 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
5
5
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
6
|
-
import { Module, ModuleConfig,
|
|
6
|
+
import { Module, ModuleConfig, ModuleIdentifier, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
7
7
|
import { NodeModule, NodeModuleEventData, NodeParams, NodeQueries } from '@xyo-network/node-model';
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model';
|
|
9
9
|
export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
@@ -15,20 +15,12 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
|
|
|
15
15
|
static isNode(module: unknown): boolean;
|
|
16
16
|
attached(): Promise<Address[]>;
|
|
17
17
|
manifest(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
18
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
19
|
-
resolve(): Promise<ModuleInstance[]>;
|
|
20
|
-
resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
21
|
-
resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
22
|
-
resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
23
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
25
18
|
protected attachedPrivateModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
26
19
|
protected attachedPublicModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
27
20
|
protected generateConfigAndAddress(maxDepth?: number): Promise<Payload[]>;
|
|
28
21
|
protected manifestHandler(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
29
22
|
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
30
23
|
private resolveAll;
|
|
31
|
-
private resolvePrivate;
|
|
32
24
|
abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>;
|
|
33
25
|
abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>;
|
|
34
26
|
abstract registered(): Promisable<Address[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EAGZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAIvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY3D,eAAe,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB/F,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA6CtB,UAAU;IAoBxB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -73,61 +73,15 @@ var AbstractNode = class _AbstractNode extends import_module_abstract.AbstractMo
|
|
|
73
73
|
async manifest(maxDepth = 10, ignoreAddresses = []) {
|
|
74
74
|
return await this.manifestHandler(maxDepth, ignoreAddresses);
|
|
75
75
|
}
|
|
76
|
-
async resolve(idOrFilter = "*", options) {
|
|
77
|
-
const { visibility = "all" } = options ?? {};
|
|
78
|
-
const mutatedOptions = {
|
|
79
|
-
...options,
|
|
80
|
-
visibility
|
|
81
|
-
};
|
|
82
|
-
if (idOrFilter === "*") {
|
|
83
|
-
switch (options?.visibility) {
|
|
84
|
-
case "private": {
|
|
85
|
-
return (await this.resolvePrivate("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
86
|
-
}
|
|
87
|
-
case "all": {
|
|
88
|
-
return (await this.resolveAll("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
89
|
-
}
|
|
90
|
-
default: {
|
|
91
|
-
return (await super.resolve("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (typeof idOrFilter === "string") {
|
|
96
|
-
switch (options?.visibility) {
|
|
97
|
-
case "private": {
|
|
98
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
99
|
-
}
|
|
100
|
-
case "all": {
|
|
101
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
102
|
-
}
|
|
103
|
-
default: {
|
|
104
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
} else {
|
|
108
|
-
switch (options?.visibility) {
|
|
109
|
-
case "all": {
|
|
110
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
111
|
-
}
|
|
112
|
-
case "private": {
|
|
113
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
114
|
-
}
|
|
115
|
-
default: {
|
|
116
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
76
|
async attachedPrivateModules(maxDepth = 1) {
|
|
122
|
-
return (await (this.
|
|
123
|
-
maxDepth
|
|
124
|
-
visibility: "public"
|
|
77
|
+
return (await (this.resolvePrivate("*", {
|
|
78
|
+
maxDepth
|
|
125
79
|
}) ?? [])).filter((module2) => module2.address !== this.address);
|
|
126
80
|
}
|
|
127
81
|
async attachedPublicModules(maxDepth = 1) {
|
|
128
82
|
return (await (this.downResolver.resolve("*", {
|
|
129
|
-
|
|
130
|
-
|
|
83
|
+
direction: "down",
|
|
84
|
+
maxDepth
|
|
131
85
|
}) ?? [])).filter((module2) => module2.address !== this.address);
|
|
132
86
|
}
|
|
133
87
|
async generateConfigAndAddress(maxDepth = 10) {
|
|
@@ -156,8 +110,7 @@ var AbstractNode = class _AbstractNode extends import_module_abstract.AbstractMo
|
|
|
156
110
|
const toManifest = /* @__PURE__ */ __name((module2) => module2.manifest(maxDepth - 1, newIgnoreAddresses), "toManifest");
|
|
157
111
|
const publicChildren = await this.resolve("*", {
|
|
158
112
|
direction: "down",
|
|
159
|
-
maxDepth: 1
|
|
160
|
-
visibility: "public"
|
|
113
|
+
maxDepth: 1
|
|
161
114
|
});
|
|
162
115
|
const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest));
|
|
163
116
|
if (publicModules.length > 0) {
|
|
@@ -229,7 +182,7 @@ var AbstractNode = class _AbstractNode extends import_module_abstract.AbstractMo
|
|
|
229
182
|
async resolveAll(idOrFilter, options) {
|
|
230
183
|
if (idOrFilter === "*") {
|
|
231
184
|
return [
|
|
232
|
-
...await this.resolvePrivate(
|
|
185
|
+
...await this.resolvePrivate("*", options),
|
|
233
186
|
...await super.resolve(idOrFilter, options)
|
|
234
187
|
].filter(import_module_model.duplicateModules);
|
|
235
188
|
}
|
|
@@ -239,26 +192,10 @@ var AbstractNode = class _AbstractNode extends import_module_abstract.AbstractMo
|
|
|
239
192
|
}
|
|
240
193
|
default: {
|
|
241
194
|
return [
|
|
242
|
-
...await this.resolvePrivate(idOrFilter, options),
|
|
243
195
|
...await super.resolve(idOrFilter, options)
|
|
244
196
|
].filter(import_module_model.duplicateModules);
|
|
245
197
|
}
|
|
246
198
|
}
|
|
247
199
|
}
|
|
248
|
-
async resolvePrivate(idOrFilter, options) {
|
|
249
|
-
const direction = options?.direction ?? "all";
|
|
250
|
-
const down = direction === "down" || direction === "all";
|
|
251
|
-
if (idOrFilter === "*") {
|
|
252
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : [];
|
|
253
|
-
}
|
|
254
|
-
switch (typeof idOrFilter) {
|
|
255
|
-
case "string": {
|
|
256
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
257
|
-
}
|
|
258
|
-
default: {
|
|
259
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
200
|
};
|
|
264
201
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1 })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate('*', options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolvePrivate","filter","downResolver","resolve","direction","generateConfigAndAddress","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","resolveAll","idOrFilter","options","duplicateModules"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -49,61 +49,15 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
49
49
|
async manifest(maxDepth = 10, ignoreAddresses = []) {
|
|
50
50
|
return await this.manifestHandler(maxDepth, ignoreAddresses);
|
|
51
51
|
}
|
|
52
|
-
async resolve(idOrFilter = "*", options) {
|
|
53
|
-
const { visibility = "all" } = options ?? {};
|
|
54
|
-
const mutatedOptions = {
|
|
55
|
-
...options,
|
|
56
|
-
visibility
|
|
57
|
-
};
|
|
58
|
-
if (idOrFilter === "*") {
|
|
59
|
-
switch (options?.visibility) {
|
|
60
|
-
case "private": {
|
|
61
|
-
return (await this.resolvePrivate("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
62
|
-
}
|
|
63
|
-
case "all": {
|
|
64
|
-
return (await this.resolveAll("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
65
|
-
}
|
|
66
|
-
default: {
|
|
67
|
-
return (await super.resolve("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (typeof idOrFilter === "string") {
|
|
72
|
-
switch (options?.visibility) {
|
|
73
|
-
case "private": {
|
|
74
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
75
|
-
}
|
|
76
|
-
case "all": {
|
|
77
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
78
|
-
}
|
|
79
|
-
default: {
|
|
80
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
} else {
|
|
84
|
-
switch (options?.visibility) {
|
|
85
|
-
case "all": {
|
|
86
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
87
|
-
}
|
|
88
|
-
case "private": {
|
|
89
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
90
|
-
}
|
|
91
|
-
default: {
|
|
92
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
52
|
async attachedPrivateModules(maxDepth = 1) {
|
|
98
|
-
return (await (this.
|
|
99
|
-
maxDepth
|
|
100
|
-
visibility: "public"
|
|
53
|
+
return (await (this.resolvePrivate("*", {
|
|
54
|
+
maxDepth
|
|
101
55
|
}) ?? [])).filter((module) => module.address !== this.address);
|
|
102
56
|
}
|
|
103
57
|
async attachedPublicModules(maxDepth = 1) {
|
|
104
58
|
return (await (this.downResolver.resolve("*", {
|
|
105
|
-
|
|
106
|
-
|
|
59
|
+
direction: "down",
|
|
60
|
+
maxDepth
|
|
107
61
|
}) ?? [])).filter((module) => module.address !== this.address);
|
|
108
62
|
}
|
|
109
63
|
async generateConfigAndAddress(maxDepth = 10) {
|
|
@@ -132,8 +86,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
132
86
|
const toManifest = /* @__PURE__ */ __name((module) => module.manifest(maxDepth - 1, newIgnoreAddresses), "toManifest");
|
|
133
87
|
const publicChildren = await this.resolve("*", {
|
|
134
88
|
direction: "down",
|
|
135
|
-
maxDepth: 1
|
|
136
|
-
visibility: "public"
|
|
89
|
+
maxDepth: 1
|
|
137
90
|
});
|
|
138
91
|
const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest));
|
|
139
92
|
if (publicModules.length > 0) {
|
|
@@ -205,7 +158,7 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
205
158
|
async resolveAll(idOrFilter, options) {
|
|
206
159
|
if (idOrFilter === "*") {
|
|
207
160
|
return [
|
|
208
|
-
...await this.resolvePrivate(
|
|
161
|
+
...await this.resolvePrivate("*", options),
|
|
209
162
|
...await super.resolve(idOrFilter, options)
|
|
210
163
|
].filter(duplicateModules);
|
|
211
164
|
}
|
|
@@ -215,27 +168,11 @@ var AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
215
168
|
}
|
|
216
169
|
default: {
|
|
217
170
|
return [
|
|
218
|
-
...await this.resolvePrivate(idOrFilter, options),
|
|
219
171
|
...await super.resolve(idOrFilter, options)
|
|
220
172
|
].filter(duplicateModules);
|
|
221
173
|
}
|
|
222
174
|
}
|
|
223
175
|
}
|
|
224
|
-
async resolvePrivate(idOrFilter, options) {
|
|
225
|
-
const direction = options?.direction ?? "all";
|
|
226
|
-
const down = direction === "down" || direction === "all";
|
|
227
|
-
if (idOrFilter === "*") {
|
|
228
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : [];
|
|
229
|
-
}
|
|
230
|
-
switch (typeof idOrFilter) {
|
|
231
|
-
case "string": {
|
|
232
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
233
|
-
}
|
|
234
|
-
default: {
|
|
235
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
176
|
};
|
|
240
177
|
export {
|
|
241
178
|
AbstractNode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1 })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate('*', options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","configSchemas","NodeConfigSchema","uniqueName","globallyUnique","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolvePrivate","filter","downResolver","resolve","direction","generateConfigAndAddress","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","resolveAll","idOrFilter","options","duplicateModules"]}
|
|
@@ -3,7 +3,7 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
5
5
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
6
|
-
import { Module, ModuleConfig,
|
|
6
|
+
import { Module, ModuleConfig, ModuleIdentifier, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
7
7
|
import { NodeModule, NodeModuleEventData, NodeParams, NodeQueries } from '@xyo-network/node-model';
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model';
|
|
9
9
|
export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
@@ -15,20 +15,12 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
|
|
|
15
15
|
static isNode(module: unknown): boolean;
|
|
16
16
|
attached(): Promise<Address[]>;
|
|
17
17
|
manifest(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
18
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
19
|
-
resolve(): Promise<ModuleInstance[]>;
|
|
20
|
-
resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
21
|
-
resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
22
|
-
resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
23
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
25
18
|
protected attachedPrivateModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
26
19
|
protected attachedPublicModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
27
20
|
protected generateConfigAndAddress(maxDepth?: number): Promise<Payload[]>;
|
|
28
21
|
protected manifestHandler(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
29
22
|
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
30
23
|
private resolveAll;
|
|
31
|
-
private resolvePrivate;
|
|
32
24
|
abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>;
|
|
33
25
|
abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>;
|
|
34
26
|
abstract registered(): Promisable<Address[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EAGZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAIvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY3D,eAAe,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB/F,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA6CtB,UAAU;IAoBxB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
|
@@ -3,7 +3,7 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
5
5
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
6
|
-
import { Module, ModuleConfig,
|
|
6
|
+
import { Module, ModuleConfig, ModuleIdentifier, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
7
7
|
import { NodeModule, NodeModuleEventData, NodeParams, NodeQueries } from '@xyo-network/node-model';
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model';
|
|
9
9
|
export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
@@ -15,20 +15,12 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
|
|
|
15
15
|
static isNode(module: unknown): boolean;
|
|
16
16
|
attached(): Promise<Address[]>;
|
|
17
17
|
manifest(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
18
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
19
|
-
resolve(): Promise<ModuleInstance[]>;
|
|
20
|
-
resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
21
|
-
resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
22
|
-
resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
23
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
25
18
|
protected attachedPrivateModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
26
19
|
protected attachedPublicModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
27
20
|
protected generateConfigAndAddress(maxDepth?: number): Promise<Payload[]>;
|
|
28
21
|
protected manifestHandler(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
29
22
|
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
30
23
|
private resolveAll;
|
|
31
|
-
private resolvePrivate;
|
|
32
24
|
abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>;
|
|
33
25
|
abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>;
|
|
34
26
|
abstract registered(): Promisable<Address[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EAGZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAIvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY3D,eAAe,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB/F,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA6CtB,UAAU;IAoBxB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
|
@@ -3,7 +3,7 @@ import { Promisable } from '@xylabs/promise';
|
|
|
3
3
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
4
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
5
5
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
6
|
-
import { Module, ModuleConfig,
|
|
6
|
+
import { Module, ModuleConfig, ModuleIdentifier, ModuleInstance, ModuleQueryHandlerResult } from '@xyo-network/module-model';
|
|
7
7
|
import { NodeModule, NodeModuleEventData, NodeParams, NodeQueries } from '@xyo-network/node-model';
|
|
8
8
|
import { Payload } from '@xyo-network/payload-model';
|
|
9
9
|
export declare abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData> extends AbstractModuleInstance<TParams, TEventData> implements NodeModule<TParams, TEventData>, Module<TParams, TEventData> {
|
|
@@ -15,20 +15,12 @@ export declare abstract class AbstractNode<TParams extends NodeParams = NodePara
|
|
|
15
15
|
static isNode(module: unknown): boolean;
|
|
16
16
|
attached(): Promise<Address[]>;
|
|
17
17
|
manifest(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
18
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
19
|
-
resolve(): Promise<ModuleInstance[]>;
|
|
20
|
-
resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
21
|
-
resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
22
|
-
resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
23
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
-
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
25
18
|
protected attachedPrivateModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
26
19
|
protected attachedPublicModules(maxDepth?: number): Promise<ModuleInstance[]>;
|
|
27
20
|
protected generateConfigAndAddress(maxDepth?: number): Promise<Payload[]>;
|
|
28
21
|
protected manifestHandler(maxDepth?: number, ignoreAddresses?: Address[]): Promise<ModuleManifestPayload>;
|
|
29
22
|
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
30
23
|
private resolveAll;
|
|
31
|
-
private resolvePrivate;
|
|
32
24
|
abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>;
|
|
33
25
|
abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>;
|
|
34
26
|
abstract registered(): Promisable<Address[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,
|
|
1
|
+
{"version":3,"file":"AbstractNode.d.ts","sourceRoot":"","sources":["../../src/AbstractNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAkD,MAAM,6BAA6B,CAAA;AACnH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAEL,MAAM,EACN,YAAY,EAGZ,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACzB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAKL,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,WAAW,EAEZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,8BAAsB,YAAY,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,UAAU,SAAS,mBAAmB,GAAG,mBAAmB,CACtI,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvE,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAqB;IACrE,gBAAyB,UAAU,SAAsD;IAEzF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAE9B,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAOjF;IAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;IAIvB,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOrB,QAAQ,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAIvF,sBAAsB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAI/D,qBAAqB,CAAC,QAAQ,SAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAIrD,wBAAwB,CAAC,QAAQ,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAY3D,eAAe,CAAC,QAAQ,SAAK,EAAE,eAAe,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAiB/F,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;YA6CtB,UAAU;IAoBxB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1F,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;CAC7C"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -71,61 +71,15 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
71
71
|
async manifest(maxDepth = 10, ignoreAddresses = []) {
|
|
72
72
|
return await this.manifestHandler(maxDepth, ignoreAddresses);
|
|
73
73
|
}
|
|
74
|
-
async resolve(idOrFilter = "*", options) {
|
|
75
|
-
const { visibility = "all" } = options ?? {};
|
|
76
|
-
const mutatedOptions = {
|
|
77
|
-
...options,
|
|
78
|
-
visibility
|
|
79
|
-
};
|
|
80
|
-
if (idOrFilter === "*") {
|
|
81
|
-
switch (options == null ? void 0 : options.visibility) {
|
|
82
|
-
case "private": {
|
|
83
|
-
return (await this.resolvePrivate("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
84
|
-
}
|
|
85
|
-
case "all": {
|
|
86
|
-
return (await this.resolveAll("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
87
|
-
}
|
|
88
|
-
default: {
|
|
89
|
-
return (await super.resolve("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (typeof idOrFilter === "string") {
|
|
94
|
-
switch (options == null ? void 0 : options.visibility) {
|
|
95
|
-
case "private": {
|
|
96
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
97
|
-
}
|
|
98
|
-
case "all": {
|
|
99
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
100
|
-
}
|
|
101
|
-
default: {
|
|
102
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
} else {
|
|
106
|
-
switch (options == null ? void 0 : options.visibility) {
|
|
107
|
-
case "all": {
|
|
108
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
109
|
-
}
|
|
110
|
-
case "private": {
|
|
111
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
112
|
-
}
|
|
113
|
-
default: {
|
|
114
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
74
|
async attachedPrivateModules(maxDepth = 1) {
|
|
120
|
-
return (await (this.
|
|
121
|
-
maxDepth
|
|
122
|
-
visibility: "public"
|
|
75
|
+
return (await (this.resolvePrivate("*", {
|
|
76
|
+
maxDepth
|
|
123
77
|
}) ?? [])).filter((module2) => module2.address !== this.address);
|
|
124
78
|
}
|
|
125
79
|
async attachedPublicModules(maxDepth = 1) {
|
|
126
80
|
return (await (this.downResolver.resolve("*", {
|
|
127
|
-
|
|
128
|
-
|
|
81
|
+
direction: "down",
|
|
82
|
+
maxDepth
|
|
129
83
|
}) ?? [])).filter((module2) => module2.address !== this.address);
|
|
130
84
|
}
|
|
131
85
|
async generateConfigAndAddress(maxDepth = 10) {
|
|
@@ -154,8 +108,7 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
154
108
|
const toManifest = /* @__PURE__ */ __name((module2) => module2.manifest(maxDepth - 1, newIgnoreAddresses), "toManifest");
|
|
155
109
|
const publicChildren = await this.resolve("*", {
|
|
156
110
|
direction: "down",
|
|
157
|
-
maxDepth: 1
|
|
158
|
-
visibility: "public"
|
|
111
|
+
maxDepth: 1
|
|
159
112
|
});
|
|
160
113
|
const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest));
|
|
161
114
|
if (publicModules.length > 0) {
|
|
@@ -227,7 +180,7 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
227
180
|
async resolveAll(idOrFilter, options) {
|
|
228
181
|
if (idOrFilter === "*") {
|
|
229
182
|
return [
|
|
230
|
-
...await this.resolvePrivate(
|
|
183
|
+
...await this.resolvePrivate("*", options),
|
|
231
184
|
...await super.resolve(idOrFilter, options)
|
|
232
185
|
].filter(import_module_model.duplicateModules);
|
|
233
186
|
}
|
|
@@ -237,27 +190,11 @@ var _AbstractNode = class _AbstractNode extends import_module_abstract.AbstractM
|
|
|
237
190
|
}
|
|
238
191
|
default: {
|
|
239
192
|
return [
|
|
240
|
-
...await this.resolvePrivate(idOrFilter, options),
|
|
241
193
|
...await super.resolve(idOrFilter, options)
|
|
242
194
|
].filter(import_module_model.duplicateModules);
|
|
243
195
|
}
|
|
244
196
|
}
|
|
245
197
|
}
|
|
246
|
-
async resolvePrivate(idOrFilter, options) {
|
|
247
|
-
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
248
|
-
const down = direction === "down" || direction === "all";
|
|
249
|
-
if (idOrFilter === "*") {
|
|
250
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : [];
|
|
251
|
-
}
|
|
252
|
-
switch (typeof idOrFilter) {
|
|
253
|
-
case "string": {
|
|
254
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
255
|
-
}
|
|
256
|
-
default: {
|
|
257
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
198
|
};
|
|
262
199
|
__name(_AbstractNode, "AbstractNode");
|
|
263
200
|
__publicField(_AbstractNode, "configSchemas", [
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/AbstractNode.ts"],"sourcesContent":["export * from './AbstractNode'\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1 })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate('*', options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolvePrivate","filter","downResolver","resolve","direction","generateConfigAndAddress","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","resolveAll","idOrFilter","options","duplicateModules","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
package/dist/node/index.js
CHANGED
|
@@ -47,61 +47,15 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
47
47
|
async manifest(maxDepth = 10, ignoreAddresses = []) {
|
|
48
48
|
return await this.manifestHandler(maxDepth, ignoreAddresses);
|
|
49
49
|
}
|
|
50
|
-
async resolve(idOrFilter = "*", options) {
|
|
51
|
-
const { visibility = "all" } = options ?? {};
|
|
52
|
-
const mutatedOptions = {
|
|
53
|
-
...options,
|
|
54
|
-
visibility
|
|
55
|
-
};
|
|
56
|
-
if (idOrFilter === "*") {
|
|
57
|
-
switch (options == null ? void 0 : options.visibility) {
|
|
58
|
-
case "private": {
|
|
59
|
-
return (await this.resolvePrivate("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
60
|
-
}
|
|
61
|
-
case "all": {
|
|
62
|
-
return (await this.resolveAll("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
63
|
-
}
|
|
64
|
-
default: {
|
|
65
|
-
return (await super.resolve("*", mutatedOptions)).filter((mod) => mod.address !== this.address);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (typeof idOrFilter === "string") {
|
|
70
|
-
switch (options == null ? void 0 : options.visibility) {
|
|
71
|
-
case "private": {
|
|
72
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
73
|
-
}
|
|
74
|
-
case "all": {
|
|
75
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
76
|
-
}
|
|
77
|
-
default: {
|
|
78
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
} else {
|
|
82
|
-
switch (options == null ? void 0 : options.visibility) {
|
|
83
|
-
case "all": {
|
|
84
|
-
return await this.resolveAll(idOrFilter, mutatedOptions);
|
|
85
|
-
}
|
|
86
|
-
case "private": {
|
|
87
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions);
|
|
88
|
-
}
|
|
89
|
-
default: {
|
|
90
|
-
return await super.resolve(idOrFilter, mutatedOptions);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
50
|
async attachedPrivateModules(maxDepth = 1) {
|
|
96
|
-
return (await (this.
|
|
97
|
-
maxDepth
|
|
98
|
-
visibility: "public"
|
|
51
|
+
return (await (this.resolvePrivate("*", {
|
|
52
|
+
maxDepth
|
|
99
53
|
}) ?? [])).filter((module) => module.address !== this.address);
|
|
100
54
|
}
|
|
101
55
|
async attachedPublicModules(maxDepth = 1) {
|
|
102
56
|
return (await (this.downResolver.resolve("*", {
|
|
103
|
-
|
|
104
|
-
|
|
57
|
+
direction: "down",
|
|
58
|
+
maxDepth
|
|
105
59
|
}) ?? [])).filter((module) => module.address !== this.address);
|
|
106
60
|
}
|
|
107
61
|
async generateConfigAndAddress(maxDepth = 10) {
|
|
@@ -130,8 +84,7 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
130
84
|
const toManifest = /* @__PURE__ */ __name((module) => module.manifest(maxDepth - 1, newIgnoreAddresses), "toManifest");
|
|
131
85
|
const publicChildren = await this.resolve("*", {
|
|
132
86
|
direction: "down",
|
|
133
|
-
maxDepth: 1
|
|
134
|
-
visibility: "public"
|
|
87
|
+
maxDepth: 1
|
|
135
88
|
});
|
|
136
89
|
const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest));
|
|
137
90
|
if (publicModules.length > 0) {
|
|
@@ -203,7 +156,7 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
203
156
|
async resolveAll(idOrFilter, options) {
|
|
204
157
|
if (idOrFilter === "*") {
|
|
205
158
|
return [
|
|
206
|
-
...await this.resolvePrivate(
|
|
159
|
+
...await this.resolvePrivate("*", options),
|
|
207
160
|
...await super.resolve(idOrFilter, options)
|
|
208
161
|
].filter(duplicateModules);
|
|
209
162
|
}
|
|
@@ -213,27 +166,11 @@ var _AbstractNode = class _AbstractNode extends AbstractModuleInstance {
|
|
|
213
166
|
}
|
|
214
167
|
default: {
|
|
215
168
|
return [
|
|
216
|
-
...await this.resolvePrivate(idOrFilter, options),
|
|
217
169
|
...await super.resolve(idOrFilter, options)
|
|
218
170
|
].filter(duplicateModules);
|
|
219
171
|
}
|
|
220
172
|
}
|
|
221
173
|
}
|
|
222
|
-
async resolvePrivate(idOrFilter, options) {
|
|
223
|
-
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
224
|
-
const down = direction === "down" || direction === "all";
|
|
225
|
-
if (idOrFilter === "*") {
|
|
226
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : [];
|
|
227
|
-
}
|
|
228
|
-
switch (typeof idOrFilter) {
|
|
229
|
-
case "string": {
|
|
230
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
231
|
-
}
|
|
232
|
-
default: {
|
|
233
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : void 0;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
174
|
};
|
|
238
175
|
__name(_AbstractNode, "AbstractNode");
|
|
239
176
|
__publicField(_AbstractNode, "configSchemas", [
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n override async resolve(\n idOrFilter: ModuleFilter | ModuleIdentifier = '*',\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const { visibility = 'all' } = options ?? {}\n const mutatedOptions = { ...options, visibility }\n //checking type of nameOrAddressOrFilter before calling other functions since TS seems\n //to need help here narrowing before the call\n if (idOrFilter === '*') {\n switch (options?.visibility) {\n case 'private': {\n return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n case 'all': {\n return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n if (typeof idOrFilter === 'string') {\n switch (options?.visibility) {\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n } else {\n switch (options?.visibility) {\n case 'all': {\n return await this.resolveAll(idOrFilter, mutatedOptions)\n }\n case 'private': {\n return await this.resolvePrivate(idOrFilter, mutatedOptions)\n }\n default: {\n return await super.resolve(idOrFilter, mutatedOptions)\n }\n }\n }\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.privateResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { maxDepth, visibility: 'public' }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n /*const privateModules = await Promise.all((await this.privateResolver.resolve()).filter(notThisModule).map(toManifest))\n if (privateModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.private = privateModules\n }*/\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await this.resolvePrivate(idOrFilter, options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolvePrivate(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n const direction = options?.direction ?? 'all'\n const down = direction === 'down' || direction === 'all'\n if (idOrFilter === '*') {\n return down ? await this.privateResolver.resolve(idOrFilter) : []\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n default: {\n return down ? await this.privateResolver.resolve(idOrFilter) : undefined\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolve","idOrFilter","options","visibility","mutatedOptions","resolvePrivate","filter","mod","resolveAll","privateResolver","downResolver","generateConfigAndAddress","childMods","childModAddresses","Promise","all","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","direction","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","duplicateModules","down","undefined","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractNode.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport {\n duplicateModules,\n Module,\n ModuleConfig,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n} from '@xyo-network/module-model'\nimport {\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeConfigSchema,\n NodeDetachQuerySchema,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeQueries,\n NodeRegisteredQuerySchema,\n} from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEventData extends NodeModuleEventData = NodeModuleEventData>\n extends AbstractModuleInstance<TParams, TEventData>\n implements NodeModule<TParams, TEventData>, Module<TParams, TEventData>\n{\n static override readonly configSchemas: string[] = [NodeConfigSchema]\n static override readonly uniqueName = globallyUnique('AbstractNode', AbstractNode, 'xyo')\n\n private readonly isNode = true\n\n override get queries(): string[] {\n return [NodeAttachQuerySchema, NodeDetachQuerySchema, NodeAttachedQuerySchema, NodeRegisteredQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<NodeQueries['schema'], string> {\n return {\n 'network.xyo.query.node.attach': '1/1',\n 'network.xyo.query.node.attached': '1/2',\n 'network.xyo.query.node.detach': '1/3',\n 'network.xyo.query.node.registered': '1/4',\n }\n }\n\n static isNode(module: unknown) {\n return (module as AbstractNode).isNode\n }\n\n async attached(): Promise<Address[]> {\n return [\n ...(await this.attachedPublicModules()).map((module) => module.address),\n ...(await this.attachedPrivateModules()).map((module) => module.address),\n ]\n }\n\n override async manifest(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n return await this.manifestHandler(maxDepth, ignoreAddresses)\n }\n\n protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {\n return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)\n }\n\n protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {\n const childMods = await this.attachedPublicModules(maxDepth)\n //console.log(`childMods: ${toJsonString(childMods)}`)\n const childModAddresses = await Promise.all(\n childMods.map((mod) =>\n new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address: mod.address, name: mod.config.name }).build(),\n ),\n )\n\n return [...(await super.generateConfigAndAddress(maxDepth)), ...childModAddresses]\n }\n\n protected override async manifestHandler(maxDepth = 10, ignoreAddresses: Address[] = []): Promise<ModuleManifestPayload> {\n const manifest: NodeManifestPayload = { ...(await super.manifestHandler(maxDepth, ignoreAddresses)), schema: NodeManifestPayloadSchema }\n const newIgnoreAddresses = [...ignoreAddresses, this.address]\n\n const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)\n const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)\n\n const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1 })\n const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))\n if (publicModules.length > 0) {\n manifest.modules = manifest.modules ?? {}\n manifest.modules.public = publicModules\n }\n\n return manifest\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<NodeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case NodeAttachQuerySchema: {\n const address = await this.attach(queryPayload.nameOrAddress, queryPayload.external)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeDetachQuerySchema: {\n const address = await this.detach(queryPayload.nameOrAddress)\n if (address) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeAttachedQuerySchema: {\n const addresses = await this.attached()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n case NodeRegisteredQuerySchema: {\n const addresses = await this.registered()\n for (const address of addresses) {\n const payload = await new PayloadBuilder<AddressPayload>({ schema: AddressSchema }).fields({ address }).build()\n resultPayloads.push(payload)\n }\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n private async resolveAll(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n private async resolveAll(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n private async resolveAll(\n idOrFilter: ModuleFilter | ModuleIdentifier,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n if (idOrFilter === '*') {\n return [...(await this.resolvePrivate('*', options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n switch (typeof idOrFilter) {\n case 'string': {\n return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))\n }\n default: {\n return [...(await super.resolve(idOrFilter, options))].filter(duplicateModules)\n }\n }\n }\n\n abstract attach(id: ModuleIdentifier, external?: boolean): Promisable<Address | undefined>\n abstract detach(id: ModuleIdentifier): Promisable<Address | undefined>\n abstract registered(): Promisable<Address[]>\n}\n"],"mappings":"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","names":["assertEx","globallyUnique","AddressSchema","QueryBoundWitnessWrapper","NodeManifestPayloadSchema","AbstractModuleInstance","duplicateModules","NodeAttachedQuerySchema","NodeAttachQuerySchema","NodeConfigSchema","NodeDetachQuerySchema","NodeRegisteredQuerySchema","PayloadBuilder","AbstractNode","AbstractModuleInstance","isNode","queries","NodeAttachQuerySchema","NodeDetachQuerySchema","NodeAttachedQuerySchema","NodeRegisteredQuerySchema","_queryAccountPaths","module","attached","attachedPublicModules","map","address","attachedPrivateModules","manifest","maxDepth","ignoreAddresses","manifestHandler","resolvePrivate","filter","downResolver","resolve","direction","generateConfigAndAddress","childMods","childModAddresses","Promise","all","mod","PayloadBuilder","schema","AddressSchema","fields","name","config","build","NodeManifestPayloadSchema","newIgnoreAddresses","notThisModule","includes","toManifest","publicChildren","publicModules","length","modules","public","queryHandler","query","payloads","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","assertEx","queryable","resultPayloads","attach","nameOrAddress","external","payload","push","detach","addresses","registered","resolveAll","idOrFilter","options","duplicateModules","configSchemas","NodeConfigSchema","uniqueName","globallyUnique"]}
|
package/package.json
CHANGED
|
@@ -14,20 +14,20 @@
|
|
|
14
14
|
"@xylabs/hex": "^3.0.25",
|
|
15
15
|
"@xylabs/object": "^3.0.25",
|
|
16
16
|
"@xylabs/promise": "^3.0.25",
|
|
17
|
-
"@xyo-network/address-payload-plugin": "~2.94.
|
|
18
|
-
"@xyo-network/boundwitness-model": "~2.94.
|
|
19
|
-
"@xyo-network/boundwitness-wrapper": "~2.94.
|
|
20
|
-
"@xyo-network/manifest-model": "~2.94.
|
|
21
|
-
"@xyo-network/module-abstract": "~2.94.
|
|
22
|
-
"@xyo-network/module-model": "~2.94.
|
|
23
|
-
"@xyo-network/node-model": "~2.94.
|
|
24
|
-
"@xyo-network/payload-builder": "~2.94.
|
|
25
|
-
"@xyo-network/payload-model": "~2.94.
|
|
17
|
+
"@xyo-network/address-payload-plugin": "~2.94.22",
|
|
18
|
+
"@xyo-network/boundwitness-model": "~2.94.22",
|
|
19
|
+
"@xyo-network/boundwitness-wrapper": "~2.94.22",
|
|
20
|
+
"@xyo-network/manifest-model": "~2.94.22",
|
|
21
|
+
"@xyo-network/module-abstract": "~2.94.22",
|
|
22
|
+
"@xyo-network/module-model": "~2.94.22",
|
|
23
|
+
"@xyo-network/node-model": "~2.94.22",
|
|
24
|
+
"@xyo-network/payload-builder": "~2.94.22",
|
|
25
|
+
"@xyo-network/payload-model": "~2.94.22"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@xylabs/ts-scripts-yarn3": "^3.9.0",
|
|
29
29
|
"@xylabs/tsconfig": "^3.9.0",
|
|
30
|
-
"typescript": "^5.4.
|
|
30
|
+
"typescript": "^5.4.4"
|
|
31
31
|
},
|
|
32
32
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
33
33
|
"types": "dist/node/index.d.ts",
|
|
@@ -68,6 +68,6 @@
|
|
|
68
68
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
69
69
|
},
|
|
70
70
|
"sideEffects": false,
|
|
71
|
-
"version": "2.94.
|
|
71
|
+
"version": "2.94.22",
|
|
72
72
|
"type": "module"
|
|
73
73
|
}
|
package/src/AbstractNode.ts
CHANGED
|
@@ -68,67 +68,12 @@ export abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEve
|
|
|
68
68
|
return await this.manifestHandler(maxDepth, ignoreAddresses)
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
72
|
-
override async resolve(): Promise<ModuleInstance[]>
|
|
73
|
-
override async resolve(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
74
|
-
override async resolve(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
75
|
-
override async resolve(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>
|
|
76
|
-
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
77
|
-
override async resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
78
|
-
override async resolve(
|
|
79
|
-
idOrFilter: ModuleFilter | ModuleIdentifier = '*',
|
|
80
|
-
options?: ModuleFilterOptions,
|
|
81
|
-
): Promise<ModuleInstance | ModuleInstance[] | undefined> {
|
|
82
|
-
const { visibility = 'all' } = options ?? {}
|
|
83
|
-
const mutatedOptions = { ...options, visibility }
|
|
84
|
-
//checking type of nameOrAddressOrFilter before calling other functions since TS seems
|
|
85
|
-
//to need help here narrowing before the call
|
|
86
|
-
if (idOrFilter === '*') {
|
|
87
|
-
switch (options?.visibility) {
|
|
88
|
-
case 'private': {
|
|
89
|
-
return (await this.resolvePrivate('*', mutatedOptions)).filter((mod) => mod.address !== this.address)
|
|
90
|
-
}
|
|
91
|
-
case 'all': {
|
|
92
|
-
return (await this.resolveAll('*', mutatedOptions)).filter((mod) => mod.address !== this.address)
|
|
93
|
-
}
|
|
94
|
-
default: {
|
|
95
|
-
return (await super.resolve('*', mutatedOptions)).filter((mod) => mod.address !== this.address)
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (typeof idOrFilter === 'string') {
|
|
100
|
-
switch (options?.visibility) {
|
|
101
|
-
case 'private': {
|
|
102
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions)
|
|
103
|
-
}
|
|
104
|
-
case 'all': {
|
|
105
|
-
return await this.resolveAll(idOrFilter, mutatedOptions)
|
|
106
|
-
}
|
|
107
|
-
default: {
|
|
108
|
-
return await super.resolve(idOrFilter, mutatedOptions)
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
} else {
|
|
112
|
-
switch (options?.visibility) {
|
|
113
|
-
case 'all': {
|
|
114
|
-
return await this.resolveAll(idOrFilter, mutatedOptions)
|
|
115
|
-
}
|
|
116
|
-
case 'private': {
|
|
117
|
-
return await this.resolvePrivate(idOrFilter, mutatedOptions)
|
|
118
|
-
}
|
|
119
|
-
default: {
|
|
120
|
-
return await super.resolve(idOrFilter, mutatedOptions)
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
71
|
protected async attachedPrivateModules(maxDepth = 1): Promise<ModuleInstance[]> {
|
|
127
|
-
return (await (this.
|
|
72
|
+
return (await (this.resolvePrivate('*', { maxDepth }) ?? [])).filter((module) => module.address !== this.address)
|
|
128
73
|
}
|
|
129
74
|
|
|
130
75
|
protected async attachedPublicModules(maxDepth = 1): Promise<ModuleInstance[]> {
|
|
131
|
-
return (await (this.downResolver.resolve('*', {
|
|
76
|
+
return (await (this.downResolver.resolve('*', { direction: 'down', maxDepth }) ?? [])).filter((module) => module.address !== this.address)
|
|
132
77
|
}
|
|
133
78
|
|
|
134
79
|
protected override async generateConfigAndAddress(maxDepth = 10): Promise<Payload[]> {
|
|
@@ -150,13 +95,7 @@ export abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEve
|
|
|
150
95
|
const notThisModule = (module: ModuleInstance) => module.address !== this.address && !ignoreAddresses.includes(module.address)
|
|
151
96
|
const toManifest = (module: ModuleInstance) => module.manifest(maxDepth - 1, newIgnoreAddresses)
|
|
152
97
|
|
|
153
|
-
|
|
154
|
-
if (privateModules.length > 0) {
|
|
155
|
-
manifest.modules = manifest.modules ?? {}
|
|
156
|
-
manifest.modules.private = privateModules
|
|
157
|
-
}*/
|
|
158
|
-
|
|
159
|
-
const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1, visibility: 'public' })
|
|
98
|
+
const publicChildren = await this.resolve('*', { direction: 'down', maxDepth: 1 })
|
|
160
99
|
const publicModules = await Promise.all(publicChildren.filter(notThisModule).map(toManifest))
|
|
161
100
|
if (publicModules.length > 0) {
|
|
162
101
|
manifest.modules = manifest.modules ?? {}
|
|
@@ -223,36 +162,14 @@ export abstract class AbstractNode<TParams extends NodeParams = NodeParams, TEve
|
|
|
223
162
|
options?: ModuleFilterOptions,
|
|
224
163
|
): Promise<ModuleInstance | ModuleInstance[] | undefined> {
|
|
225
164
|
if (idOrFilter === '*') {
|
|
226
|
-
return [...(await this.resolvePrivate(
|
|
165
|
+
return [...(await this.resolvePrivate('*', options)), ...(await super.resolve(idOrFilter, options))].filter(duplicateModules)
|
|
227
166
|
}
|
|
228
167
|
switch (typeof idOrFilter) {
|
|
229
168
|
case 'string': {
|
|
230
169
|
return (await this.resolvePrivate(idOrFilter, options)) ?? (await super.resolve(idOrFilter, options))
|
|
231
170
|
}
|
|
232
171
|
default: {
|
|
233
|
-
return [...(await
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
private async resolvePrivate(all: '*', options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
239
|
-
private async resolvePrivate(filter: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>
|
|
240
|
-
private async resolvePrivate(id: ModuleIdentifier, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>
|
|
241
|
-
private async resolvePrivate(
|
|
242
|
-
idOrFilter: ModuleFilter | ModuleIdentifier,
|
|
243
|
-
options?: ModuleFilterOptions,
|
|
244
|
-
): Promise<ModuleInstance | ModuleInstance[] | undefined> {
|
|
245
|
-
const direction = options?.direction ?? 'all'
|
|
246
|
-
const down = direction === 'down' || direction === 'all'
|
|
247
|
-
if (idOrFilter === '*') {
|
|
248
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : []
|
|
249
|
-
}
|
|
250
|
-
switch (typeof idOrFilter) {
|
|
251
|
-
case 'string': {
|
|
252
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : undefined
|
|
253
|
-
}
|
|
254
|
-
default: {
|
|
255
|
-
return down ? await this.privateResolver.resolve(idOrFilter) : undefined
|
|
172
|
+
return [...(await super.resolve(idOrFilter, options))].filter(duplicateModules)
|
|
256
173
|
}
|
|
257
174
|
}
|
|
258
175
|
}
|