@xyo-network/boundwitness-builder 2.89.0-rc.8 → 2.89.0

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.
@@ -1,48 +1,49 @@
1
1
  import { Address, Hash } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
2
  import { AccountInstance } from '@xyo-network/account-model';
4
- import { BoundWitness } from '@xyo-network/boundwitness-model';
3
+ import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model';
4
+ import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload';
5
5
  import { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
6
- export interface BoundWitnessBuilderConfig {
7
- /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
8
- /** @deprecated We will be removing support for inlinePayloads soon */
9
- readonly inlinePayloads?: boolean;
10
- /** @deprecated We will be removing support for meta soon */
11
- readonly meta?: boolean;
12
- /** @deprecated We will be removing support for timestamp soon */
13
- readonly timestamp?: boolean;
6
+ type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
7
+ export interface BoundWitnessBuilderOptions<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<T, GeneratedBoundWitnessFields>>, 'schema'> {
8
+ readonly accounts?: AccountInstance[];
9
+ readonly destination?: string[];
10
+ readonly payloadHashes?: T['payload_hashes'];
11
+ readonly payloadSchemas?: T['payload_schemas'];
12
+ readonly payloads?: TPayload[];
13
+ readonly sourceQuery?: Hash;
14
+ readonly timestamp?: boolean | number;
14
15
  }
15
- export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
16
- schema: string;
17
- }> = BoundWitness, TPayload extends Payload = Payload> {
18
- readonly config: BoundWitnessBuilderConfig;
19
- protected readonly logger?: Logger | undefined;
16
+ export declare class BoundWitnessBuilder<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<T, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<T> & {
17
+ schema: BoundWitnessSchema;
18
+ }> {
20
19
  private static readonly _buildMutex;
21
20
  private _accounts;
22
- private _errorHashes;
21
+ private _destination?;
22
+ private _errorHashes?;
23
23
  private _errors;
24
- private _payloadHashes;
25
- private _payloadSchemas;
24
+ private _payloadHashes?;
25
+ private _payloadSchemas?;
26
26
  private _payloads;
27
- private _sourceQuery;
27
+ private _sourceQuery?;
28
28
  private _timestamp;
29
- constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
29
+ constructor(options?: BoundWitnessBuilderOptions<T, TPayload>);
30
30
  private get _payload_schemas();
31
31
  static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
32
32
  static previousHash<T extends BoundWitness>(payload: T, address: Address): string | null;
33
33
  static signature<T extends BoundWitness>(payload: T, address: Address): string;
34
- build(meta?: boolean): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]>;
34
+ build(): Promise<[WithMeta<T>, TPayload[], ModuleError[]]>;
35
35
  error(payload?: ModuleError): Promise<this>;
36
36
  errors(errors?: (ModuleError | null)[]): Promise<this>;
37
- hashableFields(): Promise<TBoundWitness>;
37
+ hashableFields(): Promise<T>;
38
38
  hashes(hashes: Hash[], schema: Schema[]): this;
39
39
  payload(payload?: TPayload): Promise<this>;
40
40
  payloads(payloads?: (TPayload | null)[]): Promise<this>;
41
- sourceQuery(hash?: Hash): this;
41
+ sourceQuery(query?: Hash): this;
42
42
  witness(account: AccountInstance): this;
43
43
  witnesses(accounts: AccountInstance[]): this;
44
44
  protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | undefined)[]): Promise<string[]>;
45
45
  private getPayloadHashes;
46
46
  private missingSchemaMessage;
47
47
  }
48
+ export {};
48
49
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAsB,MAAM,aAAa,CAAA;AAC/D,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,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGnF,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;IA6BlF,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW;IAS3B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE;IAatC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAgC9C,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAOjC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ;IAS1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;IAY7C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI;IAKvB,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAMhG,gBAAgB;IAI9B,OAAO,CAAC,oBAAoB;CAG7B"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,49 @@
1
1
  import { Address, Hash } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
2
  import { AccountInstance } from '@xyo-network/account-model';
4
- import { BoundWitness } from '@xyo-network/boundwitness-model';
3
+ import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model';
4
+ import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload';
5
5
  import { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
6
- export interface BoundWitnessBuilderConfig {
7
- /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
8
- /** @deprecated We will be removing support for inlinePayloads soon */
9
- readonly inlinePayloads?: boolean;
10
- /** @deprecated We will be removing support for meta soon */
11
- readonly meta?: boolean;
12
- /** @deprecated We will be removing support for timestamp soon */
13
- readonly timestamp?: boolean;
6
+ type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
7
+ export interface BoundWitnessBuilderOptions<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<T, GeneratedBoundWitnessFields>>, 'schema'> {
8
+ readonly accounts?: AccountInstance[];
9
+ readonly destination?: string[];
10
+ readonly payloadHashes?: T['payload_hashes'];
11
+ readonly payloadSchemas?: T['payload_schemas'];
12
+ readonly payloads?: TPayload[];
13
+ readonly sourceQuery?: Hash;
14
+ readonly timestamp?: boolean | number;
14
15
  }
15
- export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
16
- schema: string;
17
- }> = BoundWitness, TPayload extends Payload = Payload> {
18
- readonly config: BoundWitnessBuilderConfig;
19
- protected readonly logger?: Logger | undefined;
16
+ export declare class BoundWitnessBuilder<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<T, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<T> & {
17
+ schema: BoundWitnessSchema;
18
+ }> {
20
19
  private static readonly _buildMutex;
21
20
  private _accounts;
22
- private _errorHashes;
21
+ private _destination?;
22
+ private _errorHashes?;
23
23
  private _errors;
24
- private _payloadHashes;
25
- private _payloadSchemas;
24
+ private _payloadHashes?;
25
+ private _payloadSchemas?;
26
26
  private _payloads;
27
- private _sourceQuery;
27
+ private _sourceQuery?;
28
28
  private _timestamp;
29
- constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
29
+ constructor(options?: BoundWitnessBuilderOptions<T, TPayload>);
30
30
  private get _payload_schemas();
31
31
  static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
32
32
  static previousHash<T extends BoundWitness>(payload: T, address: Address): string | null;
33
33
  static signature<T extends BoundWitness>(payload: T, address: Address): string;
34
- build(meta?: boolean): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]>;
34
+ build(): Promise<[WithMeta<T>, TPayload[], ModuleError[]]>;
35
35
  error(payload?: ModuleError): Promise<this>;
36
36
  errors(errors?: (ModuleError | null)[]): Promise<this>;
37
- hashableFields(): Promise<TBoundWitness>;
37
+ hashableFields(): Promise<T>;
38
38
  hashes(hashes: Hash[], schema: Schema[]): this;
39
39
  payload(payload?: TPayload): Promise<this>;
40
40
  payloads(payloads?: (TPayload | null)[]): Promise<this>;
41
- sourceQuery(hash?: Hash): this;
41
+ sourceQuery(query?: Hash): this;
42
42
  witness(account: AccountInstance): this;
43
43
  witnesses(accounts: AccountInstance[]): this;
44
44
  protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | undefined)[]): Promise<string[]>;
45
45
  private getPayloadHashes;
46
46
  private missingSchemaMessage;
47
47
  }
48
+ export {};
48
49
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAsB,MAAM,aAAa,CAAA;AAC/D,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,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGnF,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;IA6BlF,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW;IAS3B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE;IAatC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAgC9C,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAOjC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ;IAS1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;IAY7C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI;IAKvB,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAMhG,gBAAgB;IAI9B,OAAO,CAAC,oBAAoB;CAG7B"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,49 @@
1
1
  import { Address, Hash } from '@xylabs/hex';
2
- import { Logger } from '@xylabs/logger';
3
2
  import { AccountInstance } from '@xyo-network/account-model';
4
- import { BoundWitness } from '@xyo-network/boundwitness-model';
3
+ import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model';
4
+ import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload';
5
5
  import { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
6
- export interface BoundWitnessBuilderConfig {
7
- /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */
8
- /** @deprecated We will be removing support for inlinePayloads soon */
9
- readonly inlinePayloads?: boolean;
10
- /** @deprecated We will be removing support for meta soon */
11
- readonly meta?: boolean;
12
- /** @deprecated We will be removing support for timestamp soon */
13
- readonly timestamp?: boolean;
6
+ type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
7
+ export interface BoundWitnessBuilderOptions<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<T, GeneratedBoundWitnessFields>>, 'schema'> {
8
+ readonly accounts?: AccountInstance[];
9
+ readonly destination?: string[];
10
+ readonly payloadHashes?: T['payload_hashes'];
11
+ readonly payloadSchemas?: T['payload_schemas'];
12
+ readonly payloads?: TPayload[];
13
+ readonly sourceQuery?: Hash;
14
+ readonly timestamp?: boolean | number;
14
15
  }
15
- export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{
16
- schema: string;
17
- }> = BoundWitness, TPayload extends Payload = Payload> {
18
- readonly config: BoundWitnessBuilderConfig;
19
- protected readonly logger?: Logger | undefined;
16
+ export declare class BoundWitnessBuilder<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<T, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<T> & {
17
+ schema: BoundWitnessSchema;
18
+ }> {
20
19
  private static readonly _buildMutex;
21
20
  private _accounts;
22
- private _errorHashes;
21
+ private _destination?;
22
+ private _errorHashes?;
23
23
  private _errors;
24
- private _payloadHashes;
25
- private _payloadSchemas;
24
+ private _payloadHashes?;
25
+ private _payloadSchemas?;
26
26
  private _payloads;
27
- private _sourceQuery;
27
+ private _sourceQuery?;
28
28
  private _timestamp;
29
- constructor(config?: BoundWitnessBuilderConfig, logger?: Logger | undefined);
29
+ constructor(options?: BoundWitnessBuilderOptions<T, TPayload>);
30
30
  private get _payload_schemas();
31
31
  static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
32
32
  static previousHash<T extends BoundWitness>(payload: T, address: Address): string | null;
33
33
  static signature<T extends BoundWitness>(payload: T, address: Address): string;
34
- build(meta?: boolean): Promise<[WithMeta<TBoundWitness>, TPayload[], ModuleError[]]>;
34
+ build(): Promise<[WithMeta<T>, TPayload[], ModuleError[]]>;
35
35
  error(payload?: ModuleError): Promise<this>;
36
36
  errors(errors?: (ModuleError | null)[]): Promise<this>;
37
- hashableFields(): Promise<TBoundWitness>;
37
+ hashableFields(): Promise<T>;
38
38
  hashes(hashes: Hash[], schema: Schema[]): this;
39
39
  payload(payload?: TPayload): Promise<this>;
40
40
  payloads(payloads?: (TPayload | null)[]): Promise<this>;
41
- sourceQuery(hash?: Hash): this;
41
+ sourceQuery(query?: Hash): this;
42
42
  witness(account: AccountInstance): this;
43
43
  witnesses(accounts: AccountInstance[]): this;
44
44
  protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | undefined)[]): Promise<string[]>;
45
45
  private getPayloadHashes;
46
46
  private missingSchemaMessage;
47
47
  }
48
+ export {};
48
49
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAsB,MAAM,aAAa,CAAA;AAC/D,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,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAGnF,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;IA6BlF,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW;IAS3B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE;IAatC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAgC9C,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;IAOjC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ;IAS1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;IAY7C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI;IAKvB,OAAO,CAAC,OAAO,EAAE,eAAe;IAKhC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE;cAKrB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAMhG,gBAAgB;IAI9B,OAAO,CAAC,oBAAoB;CAG7B"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
@@ -35,30 +35,33 @@ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
35
35
  var import_hash = require("@xyo-network/hash");
36
36
  var import_payload = require("@xyo-network/payload");
37
37
  var import_async_mutex = require("async-mutex");
38
- var BoundWitnessBuilder = class _BoundWitnessBuilder {
38
+ var BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.PayloadBuilderBase {
39
39
  static {
40
40
  __name(this, "BoundWitnessBuilder");
41
41
  }
42
- config;
43
- logger;
44
42
  static _buildMutex = new import_async_mutex.Mutex();
45
43
  _accounts;
44
+ _destination;
46
45
  _errorHashes;
47
- _errors;
46
+ _errors = [];
48
47
  _payloadHashes;
49
48
  _payloadSchemas;
50
49
  _payloads;
51
50
  _sourceQuery;
52
51
  _timestamp;
53
- constructor(config = {
54
- inlinePayloads: false
55
- }, logger) {
56
- this.config = config;
57
- this.logger = logger;
58
- this._accounts = [];
59
- this._errors = [];
60
- this._payloads = [];
61
- this._timestamp = Date.now();
52
+ constructor(options) {
53
+ super({
54
+ ...options,
55
+ schema: import_boundwitness_model.BoundWitnessSchema
56
+ });
57
+ const { accounts, payloadHashes, payloadSchemas, payloads, sourceQuery, timestamp, destination } = options ?? {};
58
+ this._accounts = accounts ?? [];
59
+ this._payloadHashes = payloadHashes;
60
+ this._payloadSchemas = payloadSchemas;
61
+ this._payloads = payloads ?? [];
62
+ this._sourceQuery = sourceQuery;
63
+ this._destination = destination;
64
+ this._timestamp = timestamp ?? true;
62
65
  }
63
66
  get _payload_schemas() {
64
67
  return this._payloadSchemas ?? this._payloads.map((payload) => {
@@ -78,23 +81,28 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
78
81
  static signature(payload, address) {
79
82
  return payload.$meta.signatures[this.addressIndex(payload, address)];
80
83
  }
81
- async build(meta = false) {
82
- if (meta) {
83
- console.log("BoundWitnessBuilder: Calling build with meta=true will be disallowed soon");
84
- }
84
+ async build() {
85
85
  return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
86
86
  const hashableFields = await this.hashableFields();
87
87
  const hash = (await import_payload.PayloadBuilder.build(hashableFields)).$hash;
88
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
- } : {};
89
+ const metaHolder = {};
90
+ if (hashableFields.addresses.length > 0) {
91
+ metaHolder.$meta = metaHolder.$meta ?? {};
92
+ metaHolder.$meta.signatures = await this.signatures(hash, previousHashes);
93
+ }
94
+ if (this._sourceQuery) {
95
+ metaHolder.$meta = metaHolder.$meta ?? {};
96
+ metaHolder.$meta.sourceQuery = this._sourceQuery;
97
+ }
98
+ if (this._destination) {
99
+ metaHolder.$meta = metaHolder.$meta ?? {};
100
+ metaHolder.$meta.destination = this._destination;
101
+ }
94
102
  const ret = {
95
103
  ...hashableFields,
96
104
  $hash: hash,
97
- ...meta2
105
+ ...metaHolder
98
106
  };
99
107
  return [
100
108
  ret,
@@ -122,27 +130,26 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
122
130
  return this;
123
131
  }
124
132
  async hashableFields() {
125
- const addresses = this._accounts.map((account) => account.addressBytes ? (0, import_hex.hexFromArrayBuffer)(account.addressBytes, {
133
+ const addresses = this._accounts.map((account) => (0, import_hex.hexFromArrayBuffer)(account.addressBytes, {
126
134
  prefix: false
127
- }) : void 0);
135
+ }));
128
136
  const previous_hashes = this._accounts.map((account) => account.previousHash ?? null);
129
137
  const payload_hashes = (0, import_assert.assertEx)(await this.getPayloadHashes(), "Missing payload_hashes");
130
138
  const payload_schemas = (0, import_assert.assertEx)(this._payload_schemas, "Missing payload_schemas");
131
139
  const result = {
132
- addresses: (0, import_assert.assertEx)(addresses, "Missing addresses"),
140
+ ...await super.hashableFields(),
141
+ addresses,
133
142
  payload_hashes,
134
143
  payload_schemas,
135
- previous_hashes,
136
- schema: import_boundwitness_model.BoundWitnessSchema
144
+ previous_hashes
137
145
  };
138
146
  (0, import_assert.assertEx)(result.payload_hashes?.length === result.payload_schemas?.length, "Payload hash/schema mismatch");
139
147
  (0, import_assert.assertEx)(!result.payload_hashes.some((hash) => !hash), () => "nulls found in hashes");
140
148
  (0, import_assert.assertEx)(!result.payload_schemas.some((schema) => !schema), "nulls found in schemas");
141
- if (this.config.timestamp ?? true) {
149
+ if (typeof this._timestamp === "number") {
142
150
  result.timestamp = this._timestamp;
143
- }
144
- if (this._sourceQuery) {
145
- result.sourceQuery = this._sourceQuery;
151
+ } else if (this._timestamp) {
152
+ result.timestamp = Date.now();
146
153
  }
147
154
  return result;
148
155
  }
@@ -169,8 +176,8 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
169
176
  }));
170
177
  return this;
171
178
  }
172
- sourceQuery(hash) {
173
- this._sourceQuery = hash;
179
+ sourceQuery(query) {
180
+ this._sourceQuery = query;
174
181
  return this;
175
182
  }
176
183
  witness(account) {
@@ -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 { Address, Hash, 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, Schema, 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 async error(payload?: ModuleError) {\n const unwrappedPayload = await 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 async errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n await Promise.all(\n errors.map(async (error) => {\n if (error !== null) {\n await this.error(error)\n }\n }),\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: Hash[], schema: Schema[]) {\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 async payload(payload?: TPayload) {\n const unwrappedPayload = await 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 async payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n await Promise.all(\n payloads.map(async (payload) => {\n if (payload !== null) {\n await this.payload(payload)\n }\n }),\n )\n return this\n }\n\n sourceQuery(hash?: Hash) {\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: Hash, previousHashes: (Hash | 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, WithMeta } 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: WithMeta<TQuery> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n }\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n await 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 { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, 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\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>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\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 getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.jsonPayload().query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\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","Promise","all","addressBytes","hexFromArrayBuffer","prefix","payload_hashes","getPayloadHashes","payload_schemas","result","BoundWitnessSchema","some","timestamp","sourceQuery","hashes","payloads","witness","witnesses","accounts","_hash","toArrayBuffer","previousHashesBytes","ph","toUint8Array","sign","JSON","stringify","import_assert","import_boundwitness_model","import_payload","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","hashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","PayloadBuilder","build","payload","import_assert","import_payload","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","jsonPayload","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
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, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { JsonObject } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { sortFields } from '@xyo-network/hash'\nimport { PayloadBuilder, PayloadBuilderBase, PayloadBuilderOptions, PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\ntype GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload>\n extends Omit<PayloadBuilderOptions<Omit<T, GeneratedBoundWitnessFields>>, 'schema'> {\n readonly accounts?: AccountInstance[]\n readonly destination?: string[]\n readonly payloadHashes?: T['payload_hashes']\n readonly payloadSchemas?: T['payload_schemas']\n readonly payloads?: TPayload[]\n readonly sourceQuery?: Hash\n readonly timestamp?: boolean | number\n}\n\nexport class BoundWitnessBuilder<T extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<\n Omit<T, GeneratedBoundWitnessFields>,\n BoundWitnessBuilderOptions<T> & { schema: BoundWitnessSchema }\n> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: string[]\n private _errorHashes?: string[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: string[]\n private _payloadSchemas?: string[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: BoundWitnessBuilderOptions<T, TPayload>) {\n super({ ...options, schema: BoundWitnessSchema })\n const { accounts, payloadHashes, payloadSchemas, payloads, sourceQuery, timestamp, destination } = options ?? {}\n this._accounts = accounts ?? []\n this._payloadHashes = payloadHashes\n this._payloadSchemas = payloadSchemas\n this._payloads = payloads ?? []\n this._sourceQuery = sourceQuery\n this._destination = destination\n this._timestamp = timestamp ?? true\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(): Promise<[WithMeta<T>, TPayload[], ModuleError[]]> {\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 metaHolder: { $meta?: JsonObject } = {}\n\n if (hashableFields.addresses.length > 0) {\n metaHolder.$meta = metaHolder.$meta ?? {}\n metaHolder.$meta.signatures = await this.signatures(hash, previousHashes)\n }\n\n if (this._sourceQuery) {\n metaHolder.$meta = metaHolder.$meta ?? {}\n metaHolder.$meta.sourceQuery = this._sourceQuery\n }\n\n if (this._destination) {\n metaHolder.$meta = metaHolder.$meta ?? {}\n metaHolder.$meta.destination = this._destination\n }\n\n const ret: WithMeta<T> = {\n ...hashableFields,\n $hash: hash,\n ...metaHolder,\n }\n return [ret, this._payloads, this._errors]\n })\n }\n\n async error(payload?: ModuleError) {\n const unwrappedPayload = await 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 async errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n await Promise.all(\n errors.map(async (error) => {\n if (error !== null) {\n await this.error(error)\n }\n }),\n )\n }\n return this\n }\n\n override async hashableFields(): Promise<T> {\n const addresses = this._accounts.map((account) => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\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: T = {\n ...(await super.hashableFields()),\n addresses,\n payload_hashes,\n payload_schemas,\n previous_hashes,\n } as T\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 (typeof this._timestamp === 'number') {\n result.timestamp = this._timestamp\n } else if (this._timestamp) {\n result.timestamp = Date.now()\n }\n\n return result\n }\n\n hashes(hashes: Hash[], schema: Schema[]) {\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 async payload(payload?: TPayload) {\n const unwrappedPayload = await 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 async payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n await Promise.all(\n payloads.map(async (payload) => {\n if (payload !== null) {\n await this.payload(payload)\n }\n }),\n )\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query\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: Hash, previousHashes: (Hash | 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, WithMeta } 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: WithMeta<TQuery> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n }\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n await 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 { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, 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\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>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\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 getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.jsonPayload().query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["BoundWitnessBuilder","PayloadBuilderBase","_buildMutex","Mutex","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","_payload_schemas","map","payload","assertEx","missingSchemaMessage","addressIndex","address","index","addresses","indexOf","Error","previousHash","previous_hashes","signature","$meta","signatures","build","runExclusive","hashableFields","hash","PayloadBuilder","$hash","previousHashes","account","metaHolder","length","ret","error","unwrappedPayload","PayloadWrapper","unwrap","undefined","push","sortFields","errors","Promise","all","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","getPayloadHashes","payload_schemas","result","some","Date","now","hashes","query","witness","witnesses","_hash","toArrayBuffer","previousHashesBytes","ph","toUint8Array","sign","JSON","stringify","import_assert","import_boundwitness_model","import_payload","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","hashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","PayloadBuilder","build","payload","import_assert","import_payload","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","jsonPayload","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}