@xyo-network/boundwitness-wrapper 2.42.16
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 +81 -0
- package/dist/cjs/Wrapper.d.ts +33 -0
- package/dist/cjs/Wrapper.d.ts.map +1 -0
- package/dist/cjs/Wrapper.js +105 -0
- package/dist/cjs/Wrapper.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +2414 -0
- package/dist/esm/Wrapper.d.ts +33 -0
- package/dist/esm/Wrapper.d.ts.map +1 -0
- package/dist/esm/Wrapper.js +96 -0
- package/dist/esm/Wrapper.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +63 -0
- package/src/Wrapper.ts +123 -0
- package/src/index.ts +1 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { XyoBoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import { DataLike } from '@xyo-network/core';
|
|
3
|
+
import { Huri } from '@xyo-network/huri';
|
|
4
|
+
import { XyoPayload } from '@xyo-network/payload-model';
|
|
5
|
+
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
|
|
6
|
+
export declare class BoundWitnessWrapper<TBoundWitness extends XyoBoundWitness<{
|
|
7
|
+
schema: string;
|
|
8
|
+
}> = XyoBoundWitness, TPayload extends XyoPayload = XyoPayload> extends PayloadWrapperBase<TBoundWitness> {
|
|
9
|
+
protected _payloads: Record<string, PayloadWrapper<TPayload>> | undefined;
|
|
10
|
+
private isBoundWitnessWrapper;
|
|
11
|
+
constructor(boundwitness: TBoundWitness, payloads?: (TPayload | PayloadWrapper<TPayload> | null)[]);
|
|
12
|
+
get addresses(): string[];
|
|
13
|
+
get boundwitness(): TBoundWitness;
|
|
14
|
+
get errors(): Error[];
|
|
15
|
+
get missingPayloads(): string[];
|
|
16
|
+
get payloadHashes(): string[];
|
|
17
|
+
get payloadSchemas(): string[];
|
|
18
|
+
get payloads(): Record<string, PayloadWrapper<TPayload>>;
|
|
19
|
+
set payloads(payloads: Record<string, PayloadWrapper<TPayload>> | (TPayload | PayloadWrapper<TPayload>)[] | undefined);
|
|
20
|
+
get payloadsArray(): PayloadWrapper<TPayload>[];
|
|
21
|
+
get previousHashes(): (string | null)[];
|
|
22
|
+
static load(address: DataLike | Huri): Promise<BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/boundwitness-model").XyoBoundWitnessFields & {
|
|
23
|
+
schema: "network.xyo.boundwitness";
|
|
24
|
+
}, import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
|
|
25
|
+
schema: string;
|
|
26
|
+
}> | null>;
|
|
27
|
+
static parse<T extends XyoBoundWitness = XyoBoundWitness, P extends XyoPayload = XyoPayload>(obj: unknown): BoundWitnessWrapper<T, P>;
|
|
28
|
+
dig(depth?: number): BoundWitnessWrapper<TBoundWitness>;
|
|
29
|
+
payloadsBySchema(schema: string): PayloadWrapper<TPayload>[];
|
|
30
|
+
prev(address: string): string | null;
|
|
31
|
+
toResult(): (TBoundWitness | TPayload[])[];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=Wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,eAAe,EAAyB,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAGjF,qBAAa,mBAAmB,CAC9B,aAAa,SAAS,eAAe,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,eAAe,EAC3E,QAAQ,SAAS,UAAU,GAAG,UAAU,CACxC,SAAQ,kBAAkB,CAAC,aAAa,CAAC;IACzC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAA;IACzE,OAAO,CAAC,qBAAqB,CAAO;gBAExB,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE;IAKlG,IAAW,SAAS,aAEnB;IAED,IAAW,YAAY,kBAEtB;IAED,IAAa,MAAM,YAElB;IAED,IAAW,eAAe,aAEzB;IAED,IAAW,aAAa,aAEvB;IAED,IAAW,cAAc,aAExB;IAED,IAAW,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAE9D;IAED,IAAW,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,SAAS,EAU3H;IAED,IAAW,aAAa,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAErD;IAED,IAAW,cAAc,sBAExB;WAE4B,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;;;;;WAQnC,KAAK,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,EAAE,CAAC,SAAS,UAAU,GAAG,UAAU,EACzG,GAAG,EAAE,OAAO,GACX,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;IAWrB,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC,aAAa,CAAC;IAqBvD,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAI/B,IAAI,CAAC,OAAO,EAAE,MAAM;IAIpB,QAAQ;CAGhB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { isXyoBoundWitnessPayload, XyoBoundWitnessSchema } from '@xyo-network/boundwitness-model';
|
|
3
|
+
import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
|
|
4
|
+
import { Huri } from '@xyo-network/huri';
|
|
5
|
+
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
|
|
6
|
+
import compact from 'lodash/compact';
|
|
7
|
+
export class BoundWitnessWrapper extends PayloadWrapperBase {
|
|
8
|
+
_payloads;
|
|
9
|
+
isBoundWitnessWrapper = true;
|
|
10
|
+
constructor(boundwitness, payloads) {
|
|
11
|
+
super(boundwitness);
|
|
12
|
+
this.payloads = payloads ? compact(payloads) : undefined;
|
|
13
|
+
}
|
|
14
|
+
get addresses() {
|
|
15
|
+
return this.boundwitness.addresses;
|
|
16
|
+
}
|
|
17
|
+
get boundwitness() {
|
|
18
|
+
return this.obj;
|
|
19
|
+
}
|
|
20
|
+
get errors() {
|
|
21
|
+
return new BoundWitnessValidator(this.boundwitness).validate();
|
|
22
|
+
}
|
|
23
|
+
get missingPayloads() {
|
|
24
|
+
return this.payloadHashes.filter((hash) => !this.payloads[hash]);
|
|
25
|
+
}
|
|
26
|
+
get payloadHashes() {
|
|
27
|
+
return this.boundwitness.payload_hashes;
|
|
28
|
+
}
|
|
29
|
+
get payloadSchemas() {
|
|
30
|
+
return this.boundwitness.payload_schemas;
|
|
31
|
+
}
|
|
32
|
+
get payloads() {
|
|
33
|
+
return this._payloads ?? {};
|
|
34
|
+
}
|
|
35
|
+
set payloads(payloads) {
|
|
36
|
+
if (Array.isArray(payloads)) {
|
|
37
|
+
this._payloads = payloads?.reduce((map, payload) => {
|
|
38
|
+
const wrapper = PayloadWrapper.parse(payload);
|
|
39
|
+
map[wrapper.hash] = wrapper;
|
|
40
|
+
return map;
|
|
41
|
+
}, {});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this._payloads = payloads;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
get payloadsArray() {
|
|
48
|
+
return Object.values(this._payloads ?? {});
|
|
49
|
+
}
|
|
50
|
+
get previousHashes() {
|
|
51
|
+
return this.boundwitness.previous_hashes;
|
|
52
|
+
}
|
|
53
|
+
static async load(address) {
|
|
54
|
+
const payload = await new Huri(address).fetch();
|
|
55
|
+
assertEx(payload && isXyoBoundWitnessPayload(payload), 'Attempt to load non-boundwitness');
|
|
56
|
+
const boundWitness = payload && isXyoBoundWitnessPayload(payload) ? payload : undefined;
|
|
57
|
+
return boundWitness ? new BoundWitnessWrapper(boundWitness) : null;
|
|
58
|
+
}
|
|
59
|
+
static parse(obj) {
|
|
60
|
+
assertEx(!Array.isArray(obj), 'Array can not be converted to BoundWitnessWrapper');
|
|
61
|
+
switch (typeof obj) {
|
|
62
|
+
case 'object': {
|
|
63
|
+
const castWrapper = obj;
|
|
64
|
+
return castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(obj);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw Error(`Unable to parse [${typeof obj}]`);
|
|
68
|
+
}
|
|
69
|
+
dig(depth) {
|
|
70
|
+
if (depth === 0)
|
|
71
|
+
return this;
|
|
72
|
+
const innerBoundwitnessIndex = this.payloadSchemas.findIndex((item) => item === XyoBoundWitnessSchema);
|
|
73
|
+
if (innerBoundwitnessIndex > -1) {
|
|
74
|
+
const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
|
|
75
|
+
const innerBoundwitnessPayload = this.payloads[innerBoundwitnessHash];
|
|
76
|
+
const innerBoundwitness = innerBoundwitnessPayload
|
|
77
|
+
? new BoundWitnessWrapper(innerBoundwitnessPayload.body, this.payloadsArray.filter((payload) => payload.hash !== innerBoundwitnessHash).map((item) => item.body))
|
|
78
|
+
: undefined;
|
|
79
|
+
if (innerBoundwitness) {
|
|
80
|
+
return innerBoundwitness.dig(depth ? depth - 1 : undefined);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
payloadsBySchema(schema) {
|
|
87
|
+
return Object.values(this.payloads)?.filter((payload) => payload.schemaName === schema);
|
|
88
|
+
}
|
|
89
|
+
prev(address) {
|
|
90
|
+
return this.previousHashes[this.addresses.findIndex((addr) => address === addr)];
|
|
91
|
+
}
|
|
92
|
+
toResult() {
|
|
93
|
+
return [this.boundwitness, this.payloadsArray.map((payload) => payload.body)];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=Wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/boundwitness-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.6.12",
|
|
14
|
+
"@xyo-network/boundwitness-model": "^2.42.16",
|
|
15
|
+
"@xyo-network/boundwitness-validator": "^2.42.16",
|
|
16
|
+
"@xyo-network/core": "^2.42.16",
|
|
17
|
+
"@xyo-network/huri": "^2.42.15",
|
|
18
|
+
"@xyo-network/payload-model": "^2.42.15",
|
|
19
|
+
"@xyo-network/payload-wrapper": "^2.42.15",
|
|
20
|
+
"lodash": "^4.17.21"
|
|
21
|
+
},
|
|
22
|
+
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/lodash": "^4.14.191",
|
|
25
|
+
"@xylabs/ts-scripts-yarn3": "^2.10.25"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"axios": "^1.2.1"
|
|
29
|
+
},
|
|
30
|
+
"browser": "dist/esm/index.js",
|
|
31
|
+
"docs": "dist/docs.json",
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"node": {
|
|
35
|
+
"import": "./dist/esm/index.js",
|
|
36
|
+
"require": "./dist/cjs/index.js"
|
|
37
|
+
},
|
|
38
|
+
"browser": {
|
|
39
|
+
"import": "./dist/esm/index.js",
|
|
40
|
+
"require": "./dist/cjs/index.js"
|
|
41
|
+
},
|
|
42
|
+
"default": "./dist/esm/index.js"
|
|
43
|
+
},
|
|
44
|
+
"./dist/docs.json": {
|
|
45
|
+
"default": "./dist/docs.json"
|
|
46
|
+
},
|
|
47
|
+
"./package.json": "./package.json"
|
|
48
|
+
},
|
|
49
|
+
"main": "dist/cjs/index.js",
|
|
50
|
+
"module": "dist/esm/index.js",
|
|
51
|
+
"homepage": "https://xyo.network",
|
|
52
|
+
"license": "LGPL-3.0-only",
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
59
|
+
},
|
|
60
|
+
"sideEffects": false,
|
|
61
|
+
"types": "dist/esm/index.d.ts",
|
|
62
|
+
"version": "2.42.16"
|
|
63
|
+
}
|
package/src/Wrapper.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { isXyoBoundWitnessPayload, XyoBoundWitness, XyoBoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
3
|
+
import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'
|
|
4
|
+
import { DataLike } from '@xyo-network/core'
|
|
5
|
+
import { Huri } from '@xyo-network/huri'
|
|
6
|
+
import { XyoPayload } from '@xyo-network/payload-model'
|
|
7
|
+
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'
|
|
8
|
+
import compact from 'lodash/compact'
|
|
9
|
+
|
|
10
|
+
export class BoundWitnessWrapper<
|
|
11
|
+
TBoundWitness extends XyoBoundWitness<{ schema: string }> = XyoBoundWitness,
|
|
12
|
+
TPayload extends XyoPayload = XyoPayload,
|
|
13
|
+
> extends PayloadWrapperBase<TBoundWitness> {
|
|
14
|
+
protected _payloads: Record<string, PayloadWrapper<TPayload>> | undefined
|
|
15
|
+
private isBoundWitnessWrapper = true
|
|
16
|
+
|
|
17
|
+
constructor(boundwitness: TBoundWitness, payloads?: (TPayload | PayloadWrapper<TPayload> | null)[]) {
|
|
18
|
+
super(boundwitness)
|
|
19
|
+
this.payloads = payloads ? compact(payloads) : undefined
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
public get addresses() {
|
|
23
|
+
return this.boundwitness.addresses
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public get boundwitness() {
|
|
27
|
+
return this.obj
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override get errors() {
|
|
31
|
+
return new BoundWitnessValidator(this.boundwitness).validate()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public get missingPayloads() {
|
|
35
|
+
return this.payloadHashes.filter((hash) => !this.payloads[hash])
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public get payloadHashes() {
|
|
39
|
+
return this.boundwitness.payload_hashes
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public get payloadSchemas() {
|
|
43
|
+
return this.boundwitness.payload_schemas
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public get payloads(): Record<string, PayloadWrapper<TPayload>> {
|
|
47
|
+
return this._payloads ?? {}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public set payloads(payloads: Record<string, PayloadWrapper<TPayload>> | (TPayload | PayloadWrapper<TPayload>)[] | undefined) {
|
|
51
|
+
if (Array.isArray(payloads)) {
|
|
52
|
+
this._payloads = payloads?.reduce((map, payload) => {
|
|
53
|
+
const wrapper = PayloadWrapper.parse<TPayload>(payload)
|
|
54
|
+
map[wrapper.hash] = wrapper
|
|
55
|
+
return map
|
|
56
|
+
}, {} as Record<string, PayloadWrapper<TPayload>>)
|
|
57
|
+
} else {
|
|
58
|
+
this._payloads = payloads
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public get payloadsArray(): PayloadWrapper<TPayload>[] {
|
|
63
|
+
return Object.values(this._payloads ?? {})
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public get previousHashes() {
|
|
67
|
+
return this.boundwitness.previous_hashes
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public static override async load(address: DataLike | Huri) {
|
|
71
|
+
const payload = await new Huri(address).fetch()
|
|
72
|
+
assertEx(payload && isXyoBoundWitnessPayload(payload), 'Attempt to load non-boundwitness')
|
|
73
|
+
|
|
74
|
+
const boundWitness: XyoBoundWitness | undefined = payload && isXyoBoundWitnessPayload(payload) ? payload : undefined
|
|
75
|
+
return boundWitness ? new BoundWitnessWrapper(boundWitness) : null
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public static override parse<T extends XyoBoundWitness = XyoBoundWitness, P extends XyoPayload = XyoPayload>(
|
|
79
|
+
obj: unknown,
|
|
80
|
+
): BoundWitnessWrapper<T, P> {
|
|
81
|
+
assertEx(!Array.isArray(obj), 'Array can not be converted to BoundWitnessWrapper')
|
|
82
|
+
switch (typeof obj) {
|
|
83
|
+
case 'object': {
|
|
84
|
+
const castWrapper = obj as BoundWitnessWrapper<T, P>
|
|
85
|
+
return castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(obj as T)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
throw Error(`Unable to parse [${typeof obj}]`)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public dig(depth?: number): BoundWitnessWrapper<TBoundWitness> {
|
|
92
|
+
if (depth === 0) return this
|
|
93
|
+
|
|
94
|
+
const innerBoundwitnessIndex: number = this.payloadSchemas.findIndex((item) => item === XyoBoundWitnessSchema)
|
|
95
|
+
if (innerBoundwitnessIndex > -1) {
|
|
96
|
+
const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]
|
|
97
|
+
const innerBoundwitnessPayload = this.payloads[innerBoundwitnessHash]
|
|
98
|
+
const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload
|
|
99
|
+
? new BoundWitnessWrapper<TBoundWitness>(
|
|
100
|
+
innerBoundwitnessPayload.body as unknown as TBoundWitness,
|
|
101
|
+
this.payloadsArray.filter((payload) => payload.hash !== innerBoundwitnessHash).map((item) => item.body as unknown as TBoundWitness),
|
|
102
|
+
)
|
|
103
|
+
: undefined
|
|
104
|
+
if (innerBoundwitness) {
|
|
105
|
+
return innerBoundwitness.dig(depth ? depth - 1 : undefined)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)
|
|
109
|
+
return this
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
public payloadsBySchema(schema: string) {
|
|
113
|
+
return Object.values(this.payloads)?.filter((payload) => payload.schemaName === schema)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
public prev(address: string) {
|
|
117
|
+
return this.previousHashes[this.addresses.findIndex((addr) => address === addr)]
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
public toResult() {
|
|
121
|
+
return [this.boundwitness, this.payloadsArray.map((payload) => payload.body)]
|
|
122
|
+
}
|
|
123
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Wrapper'
|