@xyo-network/boundwitness-builder 2.63.5 → 2.63.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Builder.js +18 -1
- package/dist/cjs/Builder.js.map +1 -1
- package/dist/docs.json +1192 -245
- package/dist/esm/Builder.js +19 -1
- package/dist/esm/Builder.js.map +1 -1
- package/dist/types/Builder.d.ts +6 -1
- package/dist/types/Builder.d.ts.map +1 -1
- package/package.json +9 -8
- package/src/Builder.ts +23 -2
package/dist/esm/Builder.js
CHANGED
|
@@ -10,6 +10,8 @@ export class BoundWitnessBuilder {
|
|
|
10
10
|
logger;
|
|
11
11
|
static _buildMutex = new Mutex();
|
|
12
12
|
_accounts = [];
|
|
13
|
+
_errorHashes;
|
|
14
|
+
_errors = [];
|
|
13
15
|
_payloadHashes;
|
|
14
16
|
_payloadSchemas;
|
|
15
17
|
_payloads = [];
|
|
@@ -47,9 +49,25 @@ export class BoundWitnessBuilder {
|
|
|
47
49
|
//leaving this in here to prevent breaking code (for now)
|
|
48
50
|
anyRet._payloads = this.inlinePayloads();
|
|
49
51
|
}
|
|
50
|
-
return [ret, this._payloads];
|
|
52
|
+
return [ret, this._payloads, this._errors];
|
|
51
53
|
});
|
|
52
54
|
}
|
|
55
|
+
error(payload) {
|
|
56
|
+
const unwrappedPayload = PayloadWrapper.unwrap(payload);
|
|
57
|
+
assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set');
|
|
58
|
+
if (unwrappedPayload) {
|
|
59
|
+
this._errors.push(assertEx(sortFields(unwrappedPayload)));
|
|
60
|
+
}
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
errors(errors) {
|
|
64
|
+
errors?.forEach((error) => {
|
|
65
|
+
if (error !== null) {
|
|
66
|
+
this.error(error);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
53
71
|
async hashableFields() {
|
|
54
72
|
const addresses = this._accounts.map((account) => account.address);
|
|
55
73
|
const previous_hashes = this._accounts.map((account) => account.previousHash ?? null);
|
package/dist/esm/Builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAQ,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
|
package/dist/types/Builder.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
2
2
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
3
|
import { Data } from '@xyo-network/core';
|
|
4
|
+
import { ModuleError } from '@xyo-network/module-model';
|
|
4
5
|
import { Payload } from '@xyo-network/payload-model';
|
|
5
6
|
import { Logger } from '@xyo-network/shared';
|
|
6
7
|
export interface BoundWitnessBuilderConfig {
|
|
@@ -16,13 +17,17 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
16
17
|
protected readonly logger?: Logger | undefined;
|
|
17
18
|
private static readonly _buildMutex;
|
|
18
19
|
private _accounts;
|
|
20
|
+
private _errorHashes;
|
|
21
|
+
private _errors;
|
|
19
22
|
private _payloadHashes;
|
|
20
23
|
private _payloadSchemas;
|
|
21
24
|
private _payloads;
|
|
22
25
|
private _timestamp;
|
|
23
26
|
constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
|
|
24
27
|
private get _payload_schemas();
|
|
25
|
-
build(meta?: boolean): Promise<[TBoundWitness, TPayload[]]>;
|
|
28
|
+
build(meta?: boolean): Promise<[TBoundWitness, TPayload[], ModuleError[]]>;
|
|
29
|
+
error(payload?: ModuleError): this;
|
|
30
|
+
errors(errors?: (ModuleError | null)[]): this;
|
|
26
31
|
hashableFields(): Promise<TBoundWitness>;
|
|
27
32
|
hashes(hashes: string[], schema: string[]): this;
|
|
28
33
|
payload(payload?: TPayload): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,IAAI,EAA6B,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAE,IAAI,EAA6B,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAG5C,MAAM,WAAW,yBAAyB;IACxC,8GAA8G;IAC9G,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,qBAAa,mBAAmB,CAAC,aAAa,SAAS,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,YAAY,EAAE,QAAQ,SAAS,OAAO,GAAG,OAAO;IAU5H,QAAQ,CAAC,MAAM,EAAE,yBAAyB;IAA8B,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAT9G,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAc;IACjD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEV,MAAM,GAAE,yBAAqD,EAAqB,MAAM,CAAC,oBAAQ;IAEtH,OAAO,KAAK,gBAAgB,GAO3B;IAEK,KAAK,CAAC,IAAI,UAAQ,GAAG,OAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IA6B9E,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW;IAS3B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE;IAShC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IA0B9C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAOzC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ;IAS1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;IASvC,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE;YAOzE,gBAAgB;IAI9B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;CAG7B"}
|
package/package.json
CHANGED
|
@@ -12,13 +12,14 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.9.1",
|
|
14
14
|
"@xylabs/buffer": "^2.9.1",
|
|
15
|
-
"@xyo-network/account-model": "^2.63.
|
|
16
|
-
"@xyo-network/boundwitness-model": "^2.63.
|
|
17
|
-
"@xyo-network/boundwitness-wrapper": "^2.63.
|
|
18
|
-
"@xyo-network/core": "^2.63.
|
|
19
|
-
"@xyo-network/
|
|
20
|
-
"@xyo-network/payload
|
|
21
|
-
"@xyo-network/
|
|
15
|
+
"@xyo-network/account-model": "^2.63.8",
|
|
16
|
+
"@xyo-network/boundwitness-model": "^2.63.8",
|
|
17
|
+
"@xyo-network/boundwitness-wrapper": "^2.63.8",
|
|
18
|
+
"@xyo-network/core": "^2.63.8",
|
|
19
|
+
"@xyo-network/module-model": "^2.63.8",
|
|
20
|
+
"@xyo-network/payload": "^2.63.8",
|
|
21
|
+
"@xyo-network/payload-model": "^2.63.8",
|
|
22
|
+
"@xyo-network/shared": "^2.63.8",
|
|
22
23
|
"async-mutex": "^0.4.0"
|
|
23
24
|
},
|
|
24
25
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -59,5 +60,5 @@
|
|
|
59
60
|
},
|
|
60
61
|
"sideEffects": false,
|
|
61
62
|
"types": "dist/types/index.d.ts",
|
|
62
|
-
"version": "2.63.
|
|
63
|
+
"version": "2.63.8"
|
|
63
64
|
}
|
package/src/Builder.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { AccountInstance } from '@xyo-network/account-model'
|
|
|
4
4
|
import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
5
5
|
import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
|
|
6
6
|
import { Data, PayloadHasher, sortFields } from '@xyo-network/core'
|
|
7
|
+
import { ModuleError } from '@xyo-network/module-model'
|
|
7
8
|
import { PayloadWrapper } from '@xyo-network/payload'
|
|
8
9
|
import { Payload } from '@xyo-network/payload-model'
|
|
9
10
|
import { Logger } from '@xyo-network/shared'
|
|
@@ -19,6 +20,8 @@ export interface BoundWitnessBuilderConfig {
|
|
|
19
20
|
export class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness, TPayload extends Payload = Payload> {
|
|
20
21
|
private static readonly _buildMutex = new Mutex()
|
|
21
22
|
private _accounts: AccountInstance[] = []
|
|
23
|
+
private _errorHashes: string[] | undefined
|
|
24
|
+
private _errors: ModuleError[] = []
|
|
22
25
|
private _payloadHashes: string[] | undefined
|
|
23
26
|
private _payloadSchemas: string[] | undefined
|
|
24
27
|
private _payloads: TPayload[] = []
|
|
@@ -35,7 +38,7 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: st
|
|
|
35
38
|
)
|
|
36
39
|
}
|
|
37
40
|
|
|
38
|
-
async build(meta = false): Promise<[TBoundWitness, TPayload[]]> {
|
|
41
|
+
async build(meta = false): Promise<[TBoundWitness, TPayload[], ModuleError[]]> {
|
|
39
42
|
return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {
|
|
40
43
|
const hashableFields = await this.hashableFields()
|
|
41
44
|
const _hash = await BoundWitnessWrapper.hashAsync(hashableFields)
|
|
@@ -60,10 +63,28 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: st
|
|
|
60
63
|
//leaving this in here to prevent breaking code (for now)
|
|
61
64
|
anyRet._payloads = this.inlinePayloads()
|
|
62
65
|
}
|
|
63
|
-
return [ret, this._payloads]
|
|
66
|
+
return [ret, this._payloads, this._errors]
|
|
64
67
|
})
|
|
65
68
|
}
|
|
66
69
|
|
|
70
|
+
error(payload?: ModuleError) {
|
|
71
|
+
const unwrappedPayload = PayloadWrapper.unwrap(payload)
|
|
72
|
+
assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')
|
|
73
|
+
if (unwrappedPayload) {
|
|
74
|
+
this._errors.push(assertEx(sortFields(unwrappedPayload)))
|
|
75
|
+
}
|
|
76
|
+
return this
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
errors(errors?: (ModuleError | null)[]) {
|
|
80
|
+
errors?.forEach((error) => {
|
|
81
|
+
if (error !== null) {
|
|
82
|
+
this.error(error)
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
return this
|
|
86
|
+
}
|
|
87
|
+
|
|
67
88
|
async hashableFields(): Promise<TBoundWitness> {
|
|
68
89
|
const addresses = this._accounts.map((account) => account.address)
|
|
69
90
|
const previous_hashes = this._accounts.map((account) => account.previousHash ?? null)
|