@xyo-network/boundwitness-builder 2.88.3 → 2.89.0-rc.1
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/Builder.d.cts +6 -3
- package/dist/browser/Builder.d.cts.map +1 -1
- package/dist/browser/Builder.d.mts +6 -3
- package/dist/browser/Builder.d.mts.map +1 -1
- package/dist/browser/Builder.d.ts +6 -3
- package/dist/browser/Builder.d.ts.map +1 -1
- package/dist/browser/Query/QueryBoundWitnessBuilder.d.cts.map +1 -1
- package/dist/browser/Query/QueryBoundWitnessBuilder.d.mts.map +1 -1
- package/dist/browser/Query/QueryBoundWitnessBuilder.d.ts.map +1 -1
- package/dist/browser/Query/QueryBoundWitnessWrapper.d.cts +1 -1
- package/dist/browser/Query/QueryBoundWitnessWrapper.d.cts.map +1 -1
- package/dist/browser/Query/QueryBoundWitnessWrapper.d.mts +1 -1
- package/dist/browser/Query/QueryBoundWitnessWrapper.d.mts.map +1 -1
- package/dist/browser/Query/QueryBoundWitnessWrapper.d.ts +1 -1
- package/dist/browser/Query/QueryBoundWitnessWrapper.d.ts.map +1 -1
- package/dist/browser/index.cjs +33 -33
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +36 -36
- package/dist/browser/index.js.map +1 -1
- package/dist/node/Builder.d.cts +6 -3
- package/dist/node/Builder.d.cts.map +1 -1
- package/dist/node/Builder.d.mts +6 -3
- package/dist/node/Builder.d.mts.map +1 -1
- package/dist/node/Builder.d.ts +6 -3
- package/dist/node/Builder.d.ts.map +1 -1
- package/dist/node/Query/QueryBoundWitnessBuilder.d.cts.map +1 -1
- package/dist/node/Query/QueryBoundWitnessBuilder.d.mts.map +1 -1
- package/dist/node/Query/QueryBoundWitnessBuilder.d.ts.map +1 -1
- package/dist/node/Query/QueryBoundWitnessWrapper.d.cts +1 -1
- package/dist/node/Query/QueryBoundWitnessWrapper.d.cts.map +1 -1
- package/dist/node/Query/QueryBoundWitnessWrapper.d.mts +1 -1
- package/dist/node/Query/QueryBoundWitnessWrapper.d.mts.map +1 -1
- package/dist/node/Query/QueryBoundWitnessWrapper.d.ts +1 -1
- package/dist/node/Query/QueryBoundWitnessWrapper.d.ts.map +1 -1
- package/dist/node/index.cjs +33 -35
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +36 -38
- package/dist/node/index.js.map +1 -1
- package/package.json +12 -11
- package/src/Builder.ts +35 -34
- package/src/Query/QueryBoundWitnessBuilder.ts +5 -5
- package/src/Query/QueryBoundWitnessValidator.ts +3 -3
- package/src/Query/QueryBoundWitnessWrapper.ts +16 -10
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Logger } from '@xylabs/logger';
|
|
2
3
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
3
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
-
import { ModuleError, Payload } from '@xyo-network/payload-model';
|
|
5
|
+
import { ModuleError, Payload, WithMeta } from '@xyo-network/payload-model';
|
|
5
6
|
export interface BoundWitnessBuilderConfig {
|
|
6
7
|
/** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
|
|
7
8
|
/** @deprecated We will be removing support for inlinePayloads soon */
|
|
@@ -27,7 +28,10 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
27
28
|
private _timestamp;
|
|
28
29
|
constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
|
|
29
30
|
private get _payload_schemas();
|
|
30
|
-
|
|
31
|
+
static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
|
|
32
|
+
static previousHash<T extends BoundWitness>(payload: T, address: Address): string | null;
|
|
33
|
+
static signature<T extends BoundWitness>(payload: T, address: Address): string;
|
|
34
|
+
build(meta?: boolean): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]>;
|
|
31
35
|
error(payload?: ModuleError): this;
|
|
32
36
|
errors(errors?: (ModuleError | null)[]): this;
|
|
33
37
|
hashableFields(): Promise<TBoundWitness>;
|
|
@@ -39,7 +43,6 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
39
43
|
witnesses(accounts: AccountInstance[]): this;
|
|
40
44
|
protected signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]>;
|
|
41
45
|
private getPayloadHashes;
|
|
42
|
-
private inlinePayloads;
|
|
43
46
|
private missingSchemaMessage;
|
|
44
47
|
}
|
|
45
48
|
//# sourceMappingURL=Builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAG3E,MAAM,WAAW,yBAAyB;IACxC,8GAA8G;IAC9G,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,iEAAiE;IACjE,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;IAYtI,QAAQ,CAAC,MAAM,EAAE,yBAAyB;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAZ5B,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,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAa;gBAGpB,MAAM,GAAE,yBAAqD,EACnD,MAAM,CAAC,oBAAQ;IAGpC,OAAO,KAAK,gBAAgB,GAO3B;IAED,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAQxE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAIxE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAI/D,KAAK,CAAC,IAAI,UAAQ,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IA6BxF,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;IAgC9C,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;IAUvC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM;IAKzB,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAMpG,gBAAgB;IAI9B,OAAO,CAAC,oBAAoB;CAG7B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Logger } from '@xylabs/logger';
|
|
2
3
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
3
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
-
import { ModuleError, Payload } from '@xyo-network/payload-model';
|
|
5
|
+
import { ModuleError, Payload, WithMeta } from '@xyo-network/payload-model';
|
|
5
6
|
export interface BoundWitnessBuilderConfig {
|
|
6
7
|
/** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
|
|
7
8
|
/** @deprecated We will be removing support for inlinePayloads soon */
|
|
@@ -27,7 +28,10 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
27
28
|
private _timestamp;
|
|
28
29
|
constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
|
|
29
30
|
private get _payload_schemas();
|
|
30
|
-
|
|
31
|
+
static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
|
|
32
|
+
static previousHash<T extends BoundWitness>(payload: T, address: Address): string | null;
|
|
33
|
+
static signature<T extends BoundWitness>(payload: T, address: Address): string;
|
|
34
|
+
build(meta?: boolean): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]>;
|
|
31
35
|
error(payload?: ModuleError): this;
|
|
32
36
|
errors(errors?: (ModuleError | null)[]): this;
|
|
33
37
|
hashableFields(): Promise<TBoundWitness>;
|
|
@@ -39,7 +43,6 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
39
43
|
witnesses(accounts: AccountInstance[]): this;
|
|
40
44
|
protected signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]>;
|
|
41
45
|
private getPayloadHashes;
|
|
42
|
-
private inlinePayloads;
|
|
43
46
|
private missingSchemaMessage;
|
|
44
47
|
}
|
|
45
48
|
//# sourceMappingURL=Builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAG3E,MAAM,WAAW,yBAAyB;IACxC,8GAA8G;IAC9G,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,iEAAiE;IACjE,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;IAYtI,QAAQ,CAAC,MAAM,EAAE,yBAAyB;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAZ5B,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,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAa;gBAGpB,MAAM,GAAE,yBAAqD,EACnD,MAAM,CAAC,oBAAQ;IAGpC,OAAO,KAAK,gBAAgB,GAO3B;IAED,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAQxE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAIxE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAI/D,KAAK,CAAC,IAAI,UAAQ,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IA6BxF,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;IAgC9C,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;IAUvC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM;IAKzB,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAMpG,gBAAgB;IAI9B,OAAO,CAAC,oBAAoB;CAG7B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Logger } from '@xylabs/logger';
|
|
2
3
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
3
4
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
4
|
-
import { ModuleError, Payload } from '@xyo-network/payload-model';
|
|
5
|
+
import { ModuleError, Payload, WithMeta } from '@xyo-network/payload-model';
|
|
5
6
|
export interface BoundWitnessBuilderConfig {
|
|
6
7
|
/** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
|
|
7
8
|
/** @deprecated We will be removing support for inlinePayloads soon */
|
|
@@ -27,7 +28,10 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
27
28
|
private _timestamp;
|
|
28
29
|
constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
|
|
29
30
|
private get _payload_schemas();
|
|
30
|
-
|
|
31
|
+
static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
|
|
32
|
+
static previousHash<T extends BoundWitness>(payload: T, address: Address): string | null;
|
|
33
|
+
static signature<T extends BoundWitness>(payload: T, address: Address): string;
|
|
34
|
+
build(meta?: boolean): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]>;
|
|
31
35
|
error(payload?: ModuleError): this;
|
|
32
36
|
errors(errors?: (ModuleError | null)[]): this;
|
|
33
37
|
hashableFields(): Promise<TBoundWitness>;
|
|
@@ -39,7 +43,6 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
|
|
|
39
43
|
witnesses(accounts: AccountInstance[]): this;
|
|
40
44
|
protected signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]>;
|
|
41
45
|
private getPayloadHashes;
|
|
42
|
-
private inlinePayloads;
|
|
43
46
|
private missingSchemaMessage;
|
|
44
47
|
}
|
|
45
48
|
//# sourceMappingURL=Builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAsB,MAAM,iCAAiC,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAG3E,MAAM,WAAW,yBAAyB;IACxC,8GAA8G;IAC9G,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,iEAAiE;IACjE,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;IAYtI,QAAQ,CAAC,MAAM,EAAE,yBAAyB;IAC1C,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAZ5B,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,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAa;gBAGpB,MAAM,GAAE,yBAAqD,EACnD,MAAM,CAAC,oBAAQ;IAGpC,OAAO,KAAK,gBAAgB,GAO3B;IAED,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAQxE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAIxE,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO;IAI/D,KAAK,CAAC,IAAI,UAAQ,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IA6BxF,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;IAgC9C,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;IAUvC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM;IAKzB,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAMpG,gBAAgB;IAI9B,OAAO,CAAC,oBAAoB;CAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAE5F,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAoB;IAEnB,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAQvD,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAE5F,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAoB;IAEnB,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAQvD,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessBuilder.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iCAAiC,CAAA;AAE5F,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhD,qBAAa,wBAAwB,CACnC,aAAa,SAAS,iBAAiB,GAAG,iBAAiB,EAC3D,MAAM,SAAS,KAAK,GAAG,KAAK,CAC5B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAoB;IAEnB,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAQvD,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC;CAKjC"}
|
|
@@ -7,7 +7,7 @@ export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends B
|
|
|
7
7
|
private _query;
|
|
8
8
|
private _resultSet;
|
|
9
9
|
private isQueryBoundWitnessWrapper;
|
|
10
|
-
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T
|
|
10
|
+
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
|
|
11
11
|
getQuery(): Promise<T>;
|
|
12
12
|
getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAGvE,OAAO,EAAE,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,0BAA0B,CAAO;WAE5B,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAkBpH,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;IAMb,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CAexE"}
|
|
@@ -7,7 +7,7 @@ export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends B
|
|
|
7
7
|
private _query;
|
|
8
8
|
private _resultSet;
|
|
9
9
|
private isQueryBoundWitnessWrapper;
|
|
10
|
-
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T
|
|
10
|
+
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
|
|
11
11
|
getQuery(): Promise<T>;
|
|
12
12
|
getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAGvE,OAAO,EAAE,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,0BAA0B,CAAO;WAE5B,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAkBpH,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;IAMb,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CAexE"}
|
|
@@ -7,7 +7,7 @@ export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends B
|
|
|
7
7
|
private _query;
|
|
8
8
|
private _resultSet;
|
|
9
9
|
private isQueryBoundWitnessWrapper;
|
|
10
|
-
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T
|
|
10
|
+
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
|
|
11
11
|
getQuery(): Promise<T>;
|
|
12
12
|
getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAGvE,OAAO,EAAE,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,0BAA0B,CAAO;WAE5B,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAkBpH,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;IAMb,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CAexE"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -32,7 +32,6 @@ var import_arraybuffer = require("@xylabs/arraybuffer");
|
|
|
32
32
|
var import_assert = require("@xylabs/assert");
|
|
33
33
|
var import_hex = require("@xylabs/hex");
|
|
34
34
|
var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
35
|
-
var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
|
|
36
35
|
var import_hash = require("@xyo-network/hash");
|
|
37
36
|
var import_payload = require("@xyo-network/payload");
|
|
38
37
|
var import_async_mutex = require("async-mutex");
|
|
@@ -66,28 +65,37 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
|
|
|
66
65
|
return (0, import_assert.assertEx)(payload.schema, () => this.missingSchemaMessage(payload));
|
|
67
66
|
});
|
|
68
67
|
}
|
|
68
|
+
static addressIndex(payload, address) {
|
|
69
|
+
const index = payload.addresses.indexOf(address);
|
|
70
|
+
if (index === -1) {
|
|
71
|
+
throw new Error("Invalid address");
|
|
72
|
+
}
|
|
73
|
+
return index;
|
|
74
|
+
}
|
|
75
|
+
static previousHash(payload, address) {
|
|
76
|
+
return payload.previous_hashes[this.addressIndex(payload, address)];
|
|
77
|
+
}
|
|
78
|
+
static signature(payload, address) {
|
|
79
|
+
return payload.$meta.signatures[this.addressIndex(payload, address)];
|
|
80
|
+
}
|
|
69
81
|
async build(meta = false) {
|
|
70
82
|
if (meta) {
|
|
71
83
|
console.log("BoundWitnessBuilder: Calling build with meta=true will be disallowed soon");
|
|
72
84
|
}
|
|
73
85
|
return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
|
|
74
86
|
const hashableFields = await this.hashableFields();
|
|
75
|
-
const
|
|
87
|
+
const hash = (await import_payload.PayloadBuilder.build(hashableFields)).$hash;
|
|
76
88
|
const previousHashes = this._accounts.map((account) => account.previousHash);
|
|
89
|
+
const meta2 = hashableFields.addresses.length > 0 ? {
|
|
90
|
+
$meta: {
|
|
91
|
+
signatures: await this.signatures(hash, previousHashes)
|
|
92
|
+
}
|
|
93
|
+
} : {};
|
|
77
94
|
const ret = {
|
|
78
95
|
...hashableFields,
|
|
79
|
-
|
|
96
|
+
$hash: hash,
|
|
97
|
+
...meta2
|
|
80
98
|
};
|
|
81
|
-
if (meta ?? this.config?.meta) {
|
|
82
|
-
const bwWithMeta = ret;
|
|
83
|
-
bwWithMeta._client = "js";
|
|
84
|
-
bwWithMeta._hash = _hash;
|
|
85
|
-
bwWithMeta._timestamp = this._timestamp;
|
|
86
|
-
}
|
|
87
|
-
if (this.config.inlinePayloads) {
|
|
88
|
-
const anyRet = ret;
|
|
89
|
-
anyRet._payloads = this.inlinePayloads();
|
|
90
|
-
}
|
|
91
99
|
return [
|
|
92
100
|
ret,
|
|
93
101
|
this._payloads,
|
|
@@ -177,16 +185,7 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
|
|
|
177
185
|
return await Promise.all(this._accounts.map(async (account, index) => (0, import_hex.hexFromArrayBuffer)(await account.sign(hash, previousHashesBytes[index]))));
|
|
178
186
|
}
|
|
179
187
|
async getPayloadHashes() {
|
|
180
|
-
return this._payloadHashes ?? await Promise.all(this._payloads.map((payload) =>
|
|
181
|
-
}
|
|
182
|
-
inlinePayloads() {
|
|
183
|
-
console.log("BoundWitnessBuilder: Using inlinePayloads will soon be disallowed");
|
|
184
|
-
return this._payloads.map((payload, index) => {
|
|
185
|
-
return {
|
|
186
|
-
...payload,
|
|
187
|
-
schema: this._payload_schemas[index]
|
|
188
|
-
};
|
|
189
|
-
});
|
|
188
|
+
return this._payloadHashes ?? await Promise.all(this._payloads.map(async (payload) => (await import_payload.PayloadBuilder.build(payload)).$hash));
|
|
190
189
|
}
|
|
191
190
|
missingSchemaMessage(payload) {
|
|
192
191
|
return `Builder: Missing Schema
|
|
@@ -197,7 +196,7 @@ ${JSON.stringify(payload, null, 2)}`;
|
|
|
197
196
|
// src/Query/QueryBoundWitnessBuilder.ts
|
|
198
197
|
var import_assert2 = require("@xylabs/assert");
|
|
199
198
|
var import_boundwitness_model2 = require("@xyo-network/boundwitness-model");
|
|
200
|
-
var
|
|
199
|
+
var import_payload2 = require("@xyo-network/payload");
|
|
201
200
|
var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
|
|
202
201
|
static {
|
|
203
202
|
__name(this, "QueryBoundWitnessBuilder");
|
|
@@ -206,13 +205,13 @@ var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
|
|
|
206
205
|
async hashableFields() {
|
|
207
206
|
return {
|
|
208
207
|
...await super.hashableFields(),
|
|
209
|
-
query: (0, import_assert2.assertEx)(
|
|
208
|
+
query: (await import_payload2.PayloadBuilder.build((0, import_assert2.assertEx)(this._query, "No Query Specified"))).$hash,
|
|
210
209
|
schema: import_boundwitness_model2.QueryBoundWitnessSchema
|
|
211
210
|
};
|
|
212
211
|
}
|
|
213
212
|
query(query) {
|
|
214
|
-
this._query =
|
|
215
|
-
this.payload(this._query
|
|
213
|
+
this._query = query;
|
|
214
|
+
this.payload(this._query);
|
|
216
215
|
return this;
|
|
217
216
|
}
|
|
218
217
|
};
|
|
@@ -220,10 +219,11 @@ var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
|
|
|
220
219
|
// src/Query/QueryBoundWitnessWrapper.ts
|
|
221
220
|
var import_assert3 = require("@xylabs/assert");
|
|
222
221
|
var import_lodash = require("@xylabs/lodash");
|
|
223
|
-
var
|
|
222
|
+
var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
|
|
224
223
|
var import_hash2 = require("@xyo-network/hash");
|
|
225
|
-
var
|
|
226
|
-
var
|
|
224
|
+
var import_payload3 = require("@xyo-network/payload");
|
|
225
|
+
var import_payload_wrapper = require("@xyo-network/payload-wrapper");
|
|
226
|
+
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends import_boundwitness_wrapper.BoundWitnessWrapper {
|
|
227
227
|
static {
|
|
228
228
|
__name(this, "QueryBoundWitnessWrapper");
|
|
229
229
|
}
|
|
@@ -231,12 +231,12 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends import_bo
|
|
|
231
231
|
_query;
|
|
232
232
|
_resultSet;
|
|
233
233
|
isQueryBoundWitnessWrapper = true;
|
|
234
|
-
static parseQuery(obj, payloads) {
|
|
234
|
+
static async parseQuery(obj, payloads) {
|
|
235
235
|
(0, import_assert3.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
236
236
|
switch (typeof obj) {
|
|
237
237
|
case "object": {
|
|
238
238
|
const castWrapper = obj;
|
|
239
|
-
const wrapper = castWrapper
|
|
239
|
+
const wrapper = castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(await import_payload3.PayloadBuilder.build(obj), payloads);
|
|
240
240
|
return wrapper;
|
|
241
241
|
}
|
|
242
242
|
}
|
|
@@ -248,7 +248,7 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends import_bo
|
|
|
248
248
|
return (0, import_assert3.assertEx)(this._query, `Missing Query [${this.boundwitness}]`);
|
|
249
249
|
}
|
|
250
250
|
async getWrappedPayloads() {
|
|
251
|
-
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? (0, import_lodash.compact)((await import_hash2.PayloadHasher.filterExclude((await super.getWrappedPayloads()).map((wrapper) => wrapper.
|
|
251
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all((0, import_lodash.compact)((await import_hash2.PayloadHasher.filterExclude((await super.getWrappedPayloads()).map((wrapper) => wrapper.jsonPayload()), this.jsonPayload().query)).map((payload) => import_payload_wrapper.PayloadWrapper.wrap(payload))));
|
|
252
252
|
return this._payloadsWithoutQuery;
|
|
253
253
|
}
|
|
254
254
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts","../../src/Query/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './Builder'\nexport * from './Query'\n","import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher, sortFields } from '@xyo-network/hash'\nimport { PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport interface BoundWitnessBuilderConfig {\n /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */\n /** @deprecated We will be removing support for inlinePayloads soon */\n readonly inlinePayloads?: boolean\n /** @deprecated We will be removing support for meta soon */\n readonly meta?: boolean\n /** @deprecated We will be removing support for timestamp soon */\n readonly timestamp?: boolean\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness, TPayload extends Payload = Payload> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[] = []\n private _errorHashes: string[] | undefined\n private _errors: ModuleError[] = []\n private _payloadHashes: string[] | undefined\n private _payloadSchemas: string[] | undefined\n private _payloads: TPayload[] = []\n private _sourceQuery: string | undefined\n private _timestamp = Date.now()\n\n constructor(\n readonly config: BoundWitnessBuilderConfig = { inlinePayloads: false },\n protected readonly logger?: Logger,\n ) {}\n\n private get _payload_schemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n async build(meta = false): Promise<[TBoundWitness, TPayload[], ModuleError[]]> {\n if (meta) {\n console.log('BoundWitnessBuilder: Calling build with meta=true will be disallowed soon')\n }\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const hashableFields = await this.hashableFields()\n const _hash = await BoundWitnessWrapper.hashAsync(hashableFields)\n\n /* get all the previousHashes to verify atomic signing */\n const previousHashes = this._accounts.map((account) => account.previousHash)\n\n const ret: TBoundWitness = {\n ...hashableFields,\n _signatures: await this.signatures(_hash, previousHashes),\n }\n if (meta ?? this.config?.meta) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bwWithMeta = ret as any\n bwWithMeta._client = 'js'\n bwWithMeta._hash = _hash\n bwWithMeta._timestamp = this._timestamp\n }\n if (this.config.inlinePayloads) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const anyRet = ret as any\n //leaving this in here to prevent breaking code (for now)\n anyRet._payloads = this.inlinePayloads()\n }\n return [ret, this._payloads, this._errors]\n })\n }\n\n error(payload?: ModuleError) {\n const unwrappedPayload = PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n for (const error of errors ?? []) {\n if (error !== null) {\n this.error(error)\n }\n }\n return this\n }\n\n async hashableFields(): Promise<TBoundWitness> {\n const addresses = this._accounts.map((account) =>\n account.addressBytes ? hexFromArrayBuffer(account.addressBytes, { prefix: false }) : undefined,\n )\n const previous_hashes = this._accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = assertEx(await this.getPayloadHashes(), 'Missing payload_hashes')\n const payload_schemas = assertEx(this._payload_schemas, 'Missing payload_schemas')\n const result: TBoundWitness = {\n addresses: assertEx(addresses, 'Missing addresses'),\n payload_hashes,\n payload_schemas,\n previous_hashes,\n schema: BoundWitnessSchema,\n } as TBoundWitness\n\n assertEx(result.payload_hashes?.length === result.payload_schemas?.length, 'Payload hash/schema mismatch')\n\n assertEx(!result.payload_hashes.some((hash) => !hash), () => 'nulls found in hashes')\n\n assertEx(!result.payload_schemas.some((schema) => !schema), 'nulls found in schemas')\n\n if (this.config.timestamp ?? true) {\n result.timestamp = this._timestamp\n }\n\n if (this._sourceQuery) {\n result.sourceQuery = this._sourceQuery\n }\n\n return result\n }\n\n hashes(hashes: string[], schema: string[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n const unwrappedPayload = PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n for (const payload of payloads) {\n if (payload !== null) {\n this.payload(payload)\n }\n }\n return this\n }\n\n sourceQuery(hash?: string) {\n this._sourceQuery = hash\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]> {\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async getPayloadHashes(): Promise<string[]> {\n return this._payloadHashes ?? (await Promise.all(this._payloads.map((payload) => PayloadHasher.hashAsync(payload))))\n }\n\n private inlinePayloads() {\n console.log('BoundWitnessBuilder: Using inlinePayloads will soon be disallowed')\n\n return this._payloads.map<TPayload>((payload, index) => {\n return {\n ...payload,\n schema: this._payload_schemas[index],\n }\n })\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessBuilder } from '../Builder'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: PayloadWrapper<TQuery> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(await this._query?.hashAsync(), 'No Query Specified'),\n schema: QueryBoundWitnessSchema,\n }\n }\n\n query<T extends TQuery>(query: T) {\n this._query = PayloadWrapper.wrap(query)\n this.payload(this._query.payload())\n return this\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { Payload, PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n private _resultSet: PayloadSetPayload | undefined\n\n private isQueryBoundWitnessWrapper = true\n\n static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper = castWrapper?.isQueryBoundWitnessWrapper ? castWrapper : new QueryBoundWitnessWrapper<T>(obj as QueryBoundWitness, payloads)\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.allPayloadMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, `Missing Query [${this.boundwitness}]`)\n }\n\n override async getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n compact(\n (\n await PayloadHasher.filterExclude(\n (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),\n this.payload().query,\n )\n ).map((payload) => PayloadWrapper.wrap(payload)),\n )\n return this._payloadsWithoutQuery\n }\n}\n"],"mappings":"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","names":["BoundWitnessBuilder","_buildMutex","Mutex","_accounts","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","config","inlinePayloads","logger","Date","now","_payload_schemas","map","payload","assertEx","schema","missingSchemaMessage","build","meta","console","log","runExclusive","hashableFields","_hash","BoundWitnessWrapper","hashAsync","previousHashes","account","previousHash","ret","_signatures","signatures","bwWithMeta","_client","anyRet","error","unwrappedPayload","PayloadWrapper","unwrap","undefined","push","sortFields","errors","addresses","addressBytes","hexFromArrayBuffer","prefix","previous_hashes","payload_hashes","getPayloadHashes","payload_schemas","result","BoundWitnessSchema","length","some","hash","timestamp","sourceQuery","hashes","payloads","witness","witnesses","accounts","toArrayBuffer","previousHashesBytes","ph","toUint8Array","Promise","all","index","sign","PayloadHasher","JSON","stringify","import_assert","import_boundwitness_model","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","hashableFields","query","assertEx","hashAsync","schema","QueryBoundWitnessSchema","PayloadWrapper","wrap","payload","import_assert","import_boundwitness_wrapper","import_hash","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","_resultSet","isQueryBoundWitnessWrapper","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","Error","getQuery","payloadMap","allPayloadMap","boundwitness","query","getWrappedPayloads","compact","PayloadHasher","filterExclude","map","payload","PayloadWrapper","wrap"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts","../../src/Query/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './Builder'\nexport * from './Query'\n","import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { Address, hexFromArrayBuffer } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { sortFields } from '@xyo-network/hash'\nimport { PayloadBuilder, PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport interface BoundWitnessBuilderConfig {\n /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */\n /** @deprecated We will be removing support for inlinePayloads soon */\n readonly inlinePayloads?: boolean\n /** @deprecated We will be removing support for meta soon */\n readonly meta?: boolean\n /** @deprecated We will be removing support for timestamp soon */\n readonly timestamp?: boolean\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness, TPayload extends Payload = Payload> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[] = []\n private _errorHashes: string[] | undefined\n private _errors: ModuleError[] = []\n private _payloadHashes: string[] | undefined\n private _payloadSchemas: string[] | undefined\n private _payloads: TPayload[] = []\n private _sourceQuery: string | undefined\n private _timestamp = Date.now()\n\n constructor(\n readonly config: BoundWitnessBuilderConfig = { inlinePayloads: false },\n protected readonly logger?: Logger,\n ) {}\n\n private get _payload_schemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n static addressIndex<T extends BoundWitness>(payload: T, address: Address) {\n const index = payload.addresses.indexOf(address)\n if (index === -1) {\n throw new Error('Invalid address')\n }\n return index\n }\n\n static previousHash<T extends BoundWitness>(payload: T, address: Address) {\n return payload.previous_hashes[this.addressIndex(payload, address)]\n }\n\n static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$meta.signatures[this.addressIndex(payload, address)]\n }\n\n async build(meta = false): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]> {\n if (meta) {\n console.log('BoundWitnessBuilder: Calling build with meta=true will be disallowed soon')\n }\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const hashableFields = await this.hashableFields()\n const hash = (await PayloadBuilder.build(hashableFields)).$hash\n\n /* get all the previousHashes to verify atomic signing */\n const previousHashes = this._accounts.map((account) => account.previousHash)\n\n const meta =\n hashableFields.addresses.length > 0\n ? {\n $meta: {\n signatures: await this.signatures(hash, previousHashes),\n },\n }\n : {}\n\n const ret: WithMeta<TBoundWitness> = {\n ...hashableFields,\n $hash: hash,\n ...meta,\n }\n return [ret, this._payloads, this._errors]\n })\n }\n\n error(payload?: ModuleError) {\n const unwrappedPayload = PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n for (const error of errors ?? []) {\n if (error !== null) {\n this.error(error)\n }\n }\n return this\n }\n\n async hashableFields(): Promise<TBoundWitness> {\n const addresses = this._accounts.map((account) =>\n account.addressBytes ? hexFromArrayBuffer(account.addressBytes, { prefix: false }) : undefined,\n )\n const previous_hashes = this._accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = assertEx(await this.getPayloadHashes(), 'Missing payload_hashes')\n const payload_schemas = assertEx(this._payload_schemas, 'Missing payload_schemas')\n const result: TBoundWitness = {\n addresses: assertEx(addresses, 'Missing addresses'),\n payload_hashes,\n payload_schemas,\n previous_hashes,\n schema: BoundWitnessSchema,\n } as TBoundWitness\n\n assertEx(result.payload_hashes?.length === result.payload_schemas?.length, 'Payload hash/schema mismatch')\n\n assertEx(!result.payload_hashes.some((hash) => !hash), () => 'nulls found in hashes')\n\n assertEx(!result.payload_schemas.some((schema) => !schema), 'nulls found in schemas')\n\n if (this.config.timestamp ?? true) {\n result.timestamp = this._timestamp\n }\n\n if (this._sourceQuery) {\n result.sourceQuery = this._sourceQuery\n }\n\n return result\n }\n\n hashes(hashes: string[], schema: string[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n const unwrappedPayload = PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n for (const payload of payloads) {\n if (payload !== null) {\n this.payload(payload)\n }\n }\n return this\n }\n\n sourceQuery(hash?: string) {\n this._sourceQuery = hash\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]> {\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async getPayloadHashes(): Promise<string[]> {\n return this._payloadHashes ?? (await Promise.all(this._payloads.map(async (payload) => (await PayloadBuilder.build(payload)).$hash)))\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Query } from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: TQuery | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: (await PayloadBuilder.build(assertEx(this._query, 'No Query Specified'))).$hash,\n schema: QueryBoundWitnessSchema,\n }\n }\n\n query<T extends TQuery>(query: T) {\n this._query = query\n this.payload(this._query)\n return this\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n private _resultSet: PayloadSetPayload | undefined\n\n private isQueryBoundWitnessWrapper = true\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper\n ? castWrapper\n : new QueryBoundWitnessWrapper<T>(await PayloadBuilder.build(obj as QueryBoundWitness), payloads)\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.allPayloadMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, `Missing Query [${this.boundwitness}]`)\n }\n\n override async getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact(\n (\n await PayloadHasher.filterExclude(\n (await super.getWrappedPayloads()).map((wrapper) => wrapper.jsonPayload()),\n this.jsonPayload().query,\n )\n ).map((payload) => PayloadWrapper.wrap(payload)),\n ),\n ))\n return this._payloadsWithoutQuery\n }\n}\n"],"mappings":"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","names":["BoundWitnessBuilder","_buildMutex","Mutex","_accounts","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","config","inlinePayloads","logger","Date","now","_payload_schemas","map","payload","assertEx","schema","missingSchemaMessage","addressIndex","address","index","addresses","indexOf","Error","previousHash","previous_hashes","signature","$meta","signatures","build","meta","console","log","runExclusive","hashableFields","hash","PayloadBuilder","$hash","previousHashes","account","length","ret","error","unwrappedPayload","PayloadWrapper","unwrap","undefined","push","sortFields","errors","addressBytes","hexFromArrayBuffer","prefix","payload_hashes","getPayloadHashes","payload_schemas","result","BoundWitnessSchema","some","timestamp","sourceQuery","hashes","payloads","witness","witnesses","accounts","_hash","toArrayBuffer","previousHashesBytes","ph","toUint8Array","Promise","all","sign","JSON","stringify","import_assert","import_boundwitness_model","import_payload","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","hashableFields","query","PayloadBuilder","build","assertEx","$hash","schema","QueryBoundWitnessSchema","payload","import_assert","import_hash","import_payload","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","_resultSet","isQueryBoundWitnessWrapper","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Error","getQuery","payloadMap","allPayloadMap","boundwitness","query","getWrappedPayloads","Promise","all","compact","PayloadHasher","filterExclude","map","jsonPayload","payload","PayloadWrapper","wrap"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -6,9 +6,8 @@ import { toArrayBuffer, toUint8Array } from "@xylabs/arraybuffer";
|
|
|
6
6
|
import { assertEx } from "@xylabs/assert";
|
|
7
7
|
import { hexFromArrayBuffer } from "@xylabs/hex";
|
|
8
8
|
import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { PayloadWrapper } from "@xyo-network/payload";
|
|
9
|
+
import { sortFields } from "@xyo-network/hash";
|
|
10
|
+
import { PayloadBuilder, PayloadWrapper } from "@xyo-network/payload";
|
|
12
11
|
import { Mutex } from "async-mutex";
|
|
13
12
|
var BoundWitnessBuilder = class _BoundWitnessBuilder {
|
|
14
13
|
static {
|
|
@@ -40,28 +39,37 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
|
|
|
40
39
|
return assertEx(payload.schema, () => this.missingSchemaMessage(payload));
|
|
41
40
|
});
|
|
42
41
|
}
|
|
42
|
+
static addressIndex(payload, address) {
|
|
43
|
+
const index = payload.addresses.indexOf(address);
|
|
44
|
+
if (index === -1) {
|
|
45
|
+
throw new Error("Invalid address");
|
|
46
|
+
}
|
|
47
|
+
return index;
|
|
48
|
+
}
|
|
49
|
+
static previousHash(payload, address) {
|
|
50
|
+
return payload.previous_hashes[this.addressIndex(payload, address)];
|
|
51
|
+
}
|
|
52
|
+
static signature(payload, address) {
|
|
53
|
+
return payload.$meta.signatures[this.addressIndex(payload, address)];
|
|
54
|
+
}
|
|
43
55
|
async build(meta = false) {
|
|
44
56
|
if (meta) {
|
|
45
57
|
console.log("BoundWitnessBuilder: Calling build with meta=true will be disallowed soon");
|
|
46
58
|
}
|
|
47
59
|
return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
|
|
48
60
|
const hashableFields = await this.hashableFields();
|
|
49
|
-
const
|
|
61
|
+
const hash = (await PayloadBuilder.build(hashableFields)).$hash;
|
|
50
62
|
const previousHashes = this._accounts.map((account) => account.previousHash);
|
|
63
|
+
const meta2 = hashableFields.addresses.length > 0 ? {
|
|
64
|
+
$meta: {
|
|
65
|
+
signatures: await this.signatures(hash, previousHashes)
|
|
66
|
+
}
|
|
67
|
+
} : {};
|
|
51
68
|
const ret = {
|
|
52
69
|
...hashableFields,
|
|
53
|
-
|
|
70
|
+
$hash: hash,
|
|
71
|
+
...meta2
|
|
54
72
|
};
|
|
55
|
-
if (meta ?? this.config?.meta) {
|
|
56
|
-
const bwWithMeta = ret;
|
|
57
|
-
bwWithMeta._client = "js";
|
|
58
|
-
bwWithMeta._hash = _hash;
|
|
59
|
-
bwWithMeta._timestamp = this._timestamp;
|
|
60
|
-
}
|
|
61
|
-
if (this.config.inlinePayloads) {
|
|
62
|
-
const anyRet = ret;
|
|
63
|
-
anyRet._payloads = this.inlinePayloads();
|
|
64
|
-
}
|
|
65
73
|
return [
|
|
66
74
|
ret,
|
|
67
75
|
this._payloads,
|
|
@@ -151,16 +159,7 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
|
|
|
151
159
|
return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))));
|
|
152
160
|
}
|
|
153
161
|
async getPayloadHashes() {
|
|
154
|
-
return this._payloadHashes ?? await Promise.all(this._payloads.map((payload) =>
|
|
155
|
-
}
|
|
156
|
-
inlinePayloads() {
|
|
157
|
-
console.log("BoundWitnessBuilder: Using inlinePayloads will soon be disallowed");
|
|
158
|
-
return this._payloads.map((payload, index) => {
|
|
159
|
-
return {
|
|
160
|
-
...payload,
|
|
161
|
-
schema: this._payload_schemas[index]
|
|
162
|
-
};
|
|
163
|
-
});
|
|
162
|
+
return this._payloadHashes ?? await Promise.all(this._payloads.map(async (payload) => (await PayloadBuilder.build(payload)).$hash));
|
|
164
163
|
}
|
|
165
164
|
missingSchemaMessage(payload) {
|
|
166
165
|
return `Builder: Missing Schema
|
|
@@ -171,7 +170,7 @@ ${JSON.stringify(payload, null, 2)}`;
|
|
|
171
170
|
// src/Query/QueryBoundWitnessBuilder.ts
|
|
172
171
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
173
172
|
import { QueryBoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
174
|
-
import {
|
|
173
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload";
|
|
175
174
|
var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
|
|
176
175
|
static {
|
|
177
176
|
__name(this, "QueryBoundWitnessBuilder");
|
|
@@ -180,13 +179,13 @@ var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
|
|
|
180
179
|
async hashableFields() {
|
|
181
180
|
return {
|
|
182
181
|
...await super.hashableFields(),
|
|
183
|
-
query:
|
|
182
|
+
query: (await PayloadBuilder2.build(assertEx2(this._query, "No Query Specified"))).$hash,
|
|
184
183
|
schema: QueryBoundWitnessSchema
|
|
185
184
|
};
|
|
186
185
|
}
|
|
187
186
|
query(query) {
|
|
188
|
-
this._query =
|
|
189
|
-
this.payload(this._query
|
|
187
|
+
this._query = query;
|
|
188
|
+
this.payload(this._query);
|
|
190
189
|
return this;
|
|
191
190
|
}
|
|
192
191
|
};
|
|
@@ -194,10 +193,11 @@ var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
|
|
|
194
193
|
// src/Query/QueryBoundWitnessWrapper.ts
|
|
195
194
|
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
196
195
|
import { compact } from "@xylabs/lodash";
|
|
197
|
-
import { BoundWitnessWrapper
|
|
198
|
-
import { PayloadHasher
|
|
199
|
-
import {
|
|
200
|
-
|
|
196
|
+
import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
197
|
+
import { PayloadHasher } from "@xyo-network/hash";
|
|
198
|
+
import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload";
|
|
199
|
+
import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
|
|
200
|
+
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper {
|
|
201
201
|
static {
|
|
202
202
|
__name(this, "QueryBoundWitnessWrapper");
|
|
203
203
|
}
|
|
@@ -205,12 +205,12 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
205
205
|
_query;
|
|
206
206
|
_resultSet;
|
|
207
207
|
isQueryBoundWitnessWrapper = true;
|
|
208
|
-
static parseQuery(obj, payloads) {
|
|
208
|
+
static async parseQuery(obj, payloads) {
|
|
209
209
|
assertEx3(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
210
210
|
switch (typeof obj) {
|
|
211
211
|
case "object": {
|
|
212
212
|
const castWrapper = obj;
|
|
213
|
-
const wrapper = castWrapper
|
|
213
|
+
const wrapper = castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(await PayloadBuilder3.build(obj), payloads);
|
|
214
214
|
return wrapper;
|
|
215
215
|
}
|
|
216
216
|
}
|
|
@@ -222,7 +222,7 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
222
222
|
return assertEx3(this._query, `Missing Query [${this.boundwitness}]`);
|
|
223
223
|
}
|
|
224
224
|
async getWrappedPayloads() {
|
|
225
|
-
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? compact((await
|
|
225
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(compact((await PayloadHasher.filterExclude((await super.getWrappedPayloads()).map((wrapper) => wrapper.jsonPayload()), this.jsonPayload().query)).map((payload) => PayloadWrapper2.wrap(payload))));
|
|
226
226
|
return this._payloadsWithoutQuery;
|
|
227
227
|
}
|
|
228
228
|
};
|