@xyo-network/node-wrapper 2.53.19
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/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/NodeWrapper.js +60 -0
- package/dist/cjs/NodeWrapper.js.map +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +20967 -0
- package/dist/esm/NodeWrapper.js +46 -0
- package/dist/esm/NodeWrapper.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/NodeWrapper.d.ts +14 -0
- package/dist/types/NodeWrapper.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +60 -0
- package/src/NodeWrapper.ts +63 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { AddressSchema } from '@xyo-network/address-payload-plugin';
|
|
3
|
+
import { ModuleWrapper } from '@xyo-network/module';
|
|
4
|
+
import { XyoNodeAttachedQuerySchema, XyoNodeAttachQuerySchema, XyoNodeDetachQuerySchema, XyoNodeRegisteredQuerySchema, } from '@xyo-network/node-model';
|
|
5
|
+
import { isPayloadOfSchemaType } from '@xyo-network/payload-model';
|
|
6
|
+
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
7
|
+
export class NodeWrapper extends ModuleWrapper {
|
|
8
|
+
static requiredQueries = [XyoNodeAttachQuerySchema, ...ModuleWrapper.requiredQueries];
|
|
9
|
+
static isNodeModule(module) {
|
|
10
|
+
const missingRequiredQueries = this.missingRequiredQueries(module);
|
|
11
|
+
return missingRequiredQueries.length === 0;
|
|
12
|
+
}
|
|
13
|
+
static tryWrap(module, account) {
|
|
14
|
+
if (module) {
|
|
15
|
+
const missingRequiredQueries = this.missingRequiredQueries(module);
|
|
16
|
+
if (missingRequiredQueries.length > 0) {
|
|
17
|
+
this.defaultLogger?.debug(`Missing queries: ${JSON.stringify(missingRequiredQueries, null, 2)}`);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return new NodeWrapper({ account, module });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static wrap(module, account) {
|
|
25
|
+
return assertEx(this.tryWrap(module, account), 'Unable to wrap module as NodeWrapper');
|
|
26
|
+
}
|
|
27
|
+
async attach(address, external) {
|
|
28
|
+
const queryPayload = PayloadWrapper.parse({ address, external, schema: XyoNodeAttachQuerySchema });
|
|
29
|
+
await this.sendQuery(queryPayload);
|
|
30
|
+
}
|
|
31
|
+
async attached() {
|
|
32
|
+
const queryPayload = PayloadWrapper.parse({ schema: XyoNodeAttachedQuerySchema });
|
|
33
|
+
const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType(AddressSchema));
|
|
34
|
+
return payloads.map((p) => p.address);
|
|
35
|
+
}
|
|
36
|
+
async detach(address) {
|
|
37
|
+
const queryPayload = PayloadWrapper.parse({ address, schema: XyoNodeDetachQuerySchema });
|
|
38
|
+
await this.sendQuery(queryPayload);
|
|
39
|
+
}
|
|
40
|
+
async registered() {
|
|
41
|
+
const queryPayload = PayloadWrapper.parse({ schema: XyoNodeRegisteredQuerySchema });
|
|
42
|
+
const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType(AddressSchema));
|
|
43
|
+
return payloads.map((p) => p.address);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=NodeWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AccountInstance } from '@xyo-network/account-model';
|
|
2
|
+
import { Module, ModuleWrapper } from '@xyo-network/module';
|
|
3
|
+
import { NodeModule } from '@xyo-network/node-model';
|
|
4
|
+
export declare class NodeWrapper<TWrappedModule extends NodeModule = NodeModule> extends ModuleWrapper<TWrappedModule> {
|
|
5
|
+
static requiredQueries: string[];
|
|
6
|
+
static isNodeModule(module: Module): boolean;
|
|
7
|
+
static tryWrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper<TModule> | undefined;
|
|
8
|
+
static wrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper<TModule>;
|
|
9
|
+
attach(address: string, external?: boolean): Promise<void>;
|
|
10
|
+
attached(): Promise<string[]>;
|
|
11
|
+
detach(address: string): Promise<void>;
|
|
12
|
+
registered(): Promise<string[]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=NodeWrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EACL,UAAU,EASX,MAAM,yBAAyB,CAAA;AAIhC,qBAAa,WAAW,CAAC,cAAc,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,aAAa,CAAC,cAAc,CAAC;IAC5G,OAAgB,eAAe,WAA+D;IAE9F,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;WAKlB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS;WAW/H,IAAI,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;IAI1H,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAKtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/node-wrapper",
|
|
3
|
+
"author": {
|
|
4
|
+
"email": "support@xyo.network",
|
|
5
|
+
"name": "XYO Development Team",
|
|
6
|
+
"url": "https://xyo.network"
|
|
7
|
+
},
|
|
8
|
+
"bugs": {
|
|
9
|
+
"email": "support@xyo.network",
|
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@xylabs/assert": "^2.7.6",
|
|
14
|
+
"@xyo-network/account-model": "^2.53.19",
|
|
15
|
+
"@xyo-network/address-payload-plugin": "^2.53.19",
|
|
16
|
+
"@xyo-network/module": "^2.53.19",
|
|
17
|
+
"@xyo-network/node-model": "^2.53.19",
|
|
18
|
+
"@xyo-network/payload-model": "^2.53.19",
|
|
19
|
+
"@xyo-network/payload-wrapper": "^2.53.19"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@xylabs/ts-scripts-yarn3": "^2.16.1",
|
|
23
|
+
"@xylabs/tsconfig": "^2.16.1",
|
|
24
|
+
"typescript": "^4.9.5"
|
|
25
|
+
},
|
|
26
|
+
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
27
|
+
"browser": "dist/esm/index.js",
|
|
28
|
+
"docs": "dist/docs.json",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"node": {
|
|
32
|
+
"import": "./dist/esm/index.js",
|
|
33
|
+
"require": "./dist/cjs/index.js"
|
|
34
|
+
},
|
|
35
|
+
"browser": {
|
|
36
|
+
"import": "./dist/esm/index.js",
|
|
37
|
+
"require": "./dist/cjs/index.js"
|
|
38
|
+
},
|
|
39
|
+
"default": "./dist/esm/index.js"
|
|
40
|
+
},
|
|
41
|
+
"./dist/docs.json": {
|
|
42
|
+
"default": "./dist/docs.json"
|
|
43
|
+
},
|
|
44
|
+
"./package.json": "./package.json"
|
|
45
|
+
},
|
|
46
|
+
"main": "dist/cjs/index.js",
|
|
47
|
+
"module": "dist/esm/index.js",
|
|
48
|
+
"homepage": "https://xyo.network",
|
|
49
|
+
"license": "LGPL-3.0",
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
56
|
+
},
|
|
57
|
+
"sideEffects": false,
|
|
58
|
+
"types": "dist/types/index.d.ts",
|
|
59
|
+
"version": "2.53.19"
|
|
60
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { AccountInstance } from '@xyo-network/account-model'
|
|
3
|
+
import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
|
|
4
|
+
import { Module, ModuleWrapper } from '@xyo-network/module'
|
|
5
|
+
import {
|
|
6
|
+
NodeModule,
|
|
7
|
+
XyoNodeAttachedQuery,
|
|
8
|
+
XyoNodeAttachedQuerySchema,
|
|
9
|
+
XyoNodeAttachQuery,
|
|
10
|
+
XyoNodeAttachQuerySchema,
|
|
11
|
+
XyoNodeDetachQuery,
|
|
12
|
+
XyoNodeDetachQuerySchema,
|
|
13
|
+
XyoNodeRegisteredQuery,
|
|
14
|
+
XyoNodeRegisteredQuerySchema,
|
|
15
|
+
} from '@xyo-network/node-model'
|
|
16
|
+
import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
|
|
17
|
+
import { PayloadWrapper } from '@xyo-network/payload-wrapper'
|
|
18
|
+
|
|
19
|
+
export class NodeWrapper<TWrappedModule extends NodeModule = NodeModule> extends ModuleWrapper<TWrappedModule> {
|
|
20
|
+
static override requiredQueries = [XyoNodeAttachQuerySchema, ...ModuleWrapper.requiredQueries]
|
|
21
|
+
|
|
22
|
+
static isNodeModule(module: Module) {
|
|
23
|
+
const missingRequiredQueries = this.missingRequiredQueries(module)
|
|
24
|
+
return missingRequiredQueries.length === 0
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static override tryWrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper<TModule> | undefined {
|
|
28
|
+
if (module) {
|
|
29
|
+
const missingRequiredQueries = this.missingRequiredQueries(module)
|
|
30
|
+
if (missingRequiredQueries.length > 0) {
|
|
31
|
+
this.defaultLogger?.debug(`Missing queries: ${JSON.stringify(missingRequiredQueries, null, 2)}`)
|
|
32
|
+
} else {
|
|
33
|
+
return new NodeWrapper<TModule>({ account, module })
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static override wrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper<TModule> {
|
|
39
|
+
return assertEx(this.tryWrap(module, account), 'Unable to wrap module as NodeWrapper')
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async attach(address: string, external?: boolean): Promise<void> {
|
|
43
|
+
const queryPayload = PayloadWrapper.parse<XyoNodeAttachQuery>({ address, external, schema: XyoNodeAttachQuerySchema })
|
|
44
|
+
await this.sendQuery(queryPayload)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async attached(): Promise<string[]> {
|
|
48
|
+
const queryPayload = PayloadWrapper.parse<XyoNodeAttachedQuery>({ schema: XyoNodeAttachedQuerySchema })
|
|
49
|
+
const payloads: AddressPayload[] = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))
|
|
50
|
+
return payloads.map((p) => p.address)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async detach(address: string): Promise<void> {
|
|
54
|
+
const queryPayload = PayloadWrapper.parse<XyoNodeDetachQuery>({ address, schema: XyoNodeDetachQuerySchema })
|
|
55
|
+
await this.sendQuery(queryPayload)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async registered(): Promise<string[]> {
|
|
59
|
+
const queryPayload = PayloadWrapper.parse<XyoNodeRegisteredQuery>({ schema: XyoNodeRegisteredQuerySchema })
|
|
60
|
+
const payloads: AddressPayload[] = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))
|
|
61
|
+
return payloads.map((p) => p.address)
|
|
62
|
+
}
|
|
63
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './NodeWrapper'
|