@xyo-network/boundwitness-builder 2.111.2 → 3.0.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.
Files changed (81) hide show
  1. package/dist/browser/index.d.ts +83 -3
  2. package/dist/neutral/index.d.ts +83 -3
  3. package/dist/node/index.d.ts +83 -3
  4. package/dist/node/index.mjs +12 -19
  5. package/dist/node/index.mjs.map +1 -1
  6. package/package.json +19 -38
  7. package/dist/browser/Builder.d.cts +0 -71
  8. package/dist/browser/Builder.d.cts.map +0 -1
  9. package/dist/browser/Builder.d.mts +0 -71
  10. package/dist/browser/Builder.d.mts.map +0 -1
  11. package/dist/browser/Builder.d.ts +0 -71
  12. package/dist/browser/Builder.d.ts.map +0 -1
  13. package/dist/browser/Query/QueryBoundWitnessBuilder.d.cts +0 -11
  14. package/dist/browser/Query/QueryBoundWitnessBuilder.d.cts.map +0 -1
  15. package/dist/browser/Query/QueryBoundWitnessBuilder.d.mts +0 -11
  16. package/dist/browser/Query/QueryBoundWitnessBuilder.d.mts.map +0 -1
  17. package/dist/browser/Query/QueryBoundWitnessBuilder.d.ts +0 -11
  18. package/dist/browser/Query/QueryBoundWitnessBuilder.d.ts.map +0 -1
  19. package/dist/browser/Query/index.d.cts +0 -2
  20. package/dist/browser/Query/index.d.cts.map +0 -1
  21. package/dist/browser/Query/index.d.mts +0 -2
  22. package/dist/browser/Query/index.d.mts.map +0 -1
  23. package/dist/browser/Query/index.d.ts +0 -2
  24. package/dist/browser/Query/index.d.ts.map +0 -1
  25. package/dist/browser/index.cjs +0 -279
  26. package/dist/browser/index.cjs.map +0 -1
  27. package/dist/browser/index.d.cts +0 -3
  28. package/dist/browser/index.d.cts.map +0 -1
  29. package/dist/browser/index.d.mts +0 -3
  30. package/dist/browser/index.d.mts.map +0 -1
  31. package/dist/browser/index.d.ts.map +0 -1
  32. package/dist/neutral/Builder.d.cts +0 -71
  33. package/dist/neutral/Builder.d.cts.map +0 -1
  34. package/dist/neutral/Builder.d.mts +0 -71
  35. package/dist/neutral/Builder.d.mts.map +0 -1
  36. package/dist/neutral/Builder.d.ts +0 -71
  37. package/dist/neutral/Builder.d.ts.map +0 -1
  38. package/dist/neutral/Query/QueryBoundWitnessBuilder.d.cts +0 -11
  39. package/dist/neutral/Query/QueryBoundWitnessBuilder.d.cts.map +0 -1
  40. package/dist/neutral/Query/QueryBoundWitnessBuilder.d.mts +0 -11
  41. package/dist/neutral/Query/QueryBoundWitnessBuilder.d.mts.map +0 -1
  42. package/dist/neutral/Query/QueryBoundWitnessBuilder.d.ts +0 -11
  43. package/dist/neutral/Query/QueryBoundWitnessBuilder.d.ts.map +0 -1
  44. package/dist/neutral/Query/index.d.cts +0 -2
  45. package/dist/neutral/Query/index.d.cts.map +0 -1
  46. package/dist/neutral/Query/index.d.mts +0 -2
  47. package/dist/neutral/Query/index.d.mts.map +0 -1
  48. package/dist/neutral/Query/index.d.ts +0 -2
  49. package/dist/neutral/Query/index.d.ts.map +0 -1
  50. package/dist/neutral/index.cjs +0 -279
  51. package/dist/neutral/index.cjs.map +0 -1
  52. package/dist/neutral/index.d.cts +0 -3
  53. package/dist/neutral/index.d.cts.map +0 -1
  54. package/dist/neutral/index.d.mts +0 -3
  55. package/dist/neutral/index.d.mts.map +0 -1
  56. package/dist/neutral/index.d.ts.map +0 -1
  57. package/dist/node/Builder.d.cts +0 -71
  58. package/dist/node/Builder.d.cts.map +0 -1
  59. package/dist/node/Builder.d.mts +0 -71
  60. package/dist/node/Builder.d.mts.map +0 -1
  61. package/dist/node/Builder.d.ts +0 -71
  62. package/dist/node/Builder.d.ts.map +0 -1
  63. package/dist/node/Query/QueryBoundWitnessBuilder.d.cts +0 -11
  64. package/dist/node/Query/QueryBoundWitnessBuilder.d.cts.map +0 -1
  65. package/dist/node/Query/QueryBoundWitnessBuilder.d.mts +0 -11
  66. package/dist/node/Query/QueryBoundWitnessBuilder.d.mts.map +0 -1
  67. package/dist/node/Query/QueryBoundWitnessBuilder.d.ts +0 -11
  68. package/dist/node/Query/QueryBoundWitnessBuilder.d.ts.map +0 -1
  69. package/dist/node/Query/index.d.cts +0 -2
  70. package/dist/node/Query/index.d.cts.map +0 -1
  71. package/dist/node/Query/index.d.mts +0 -2
  72. package/dist/node/Query/index.d.mts.map +0 -1
  73. package/dist/node/Query/index.d.ts +0 -2
  74. package/dist/node/Query/index.d.ts.map +0 -1
  75. package/dist/node/index.cjs +0 -291
  76. package/dist/node/index.cjs.map +0 -1
  77. package/dist/node/index.d.cts +0 -3
  78. package/dist/node/index.d.cts.map +0 -1
  79. package/dist/node/index.d.mts +0 -3
  80. package/dist/node/index.d.mts.map +0 -1
  81. package/dist/node/index.d.ts.map +0 -1
@@ -1,3 +1,83 @@
1
- export * from './Builder.ts';
2
- export * from './Query/index.ts';
3
- //# sourceMappingURL=index.d.ts.map
1
+ import * as _xylabs_object from '@xylabs/object';
2
+ import { AnyObject, JsonObject } from '@xylabs/object';
3
+ import * as _xyo_network_payload_model from '@xyo-network/payload-model';
4
+ import { Payload, WithMeta, ModuleError, Schema, Query } from '@xyo-network/payload-model';
5
+ import { Hash, Address } from '@xylabs/hex';
6
+ import { AccountInstance } from '@xyo-network/account-model';
7
+ import { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model';
8
+ import { PayloadBuilderOptions, PayloadBuilderBase, WithoutSchema, WithoutMeta } from '@xyo-network/payload-builder';
9
+
10
+ type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
11
+ interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
12
+ readonly accounts?: AccountInstance[];
13
+ readonly destination?: Hash[];
14
+ readonly payloadHashes?: TBoundWitness['payload_hashes'];
15
+ readonly payloadSchemas?: TBoundWitness['payload_schemas'];
16
+ readonly payloads?: TPayload[];
17
+ readonly sourceQuery?: Hash;
18
+ readonly timestamp?: number;
19
+ }
20
+ declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<TBoundWitness, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<TBoundWitness> & {
21
+ schema: BoundWitnessSchema;
22
+ }> {
23
+ private static readonly _buildMutex;
24
+ private _accounts;
25
+ private _destination?;
26
+ private _errorHashes?;
27
+ private _errors;
28
+ private _payloadHashes?;
29
+ private _payloadSchemas?;
30
+ private _payloads;
31
+ private _sourceQuery?;
32
+ private _timestamp;
33
+ constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>);
34
+ protected get addresses(): Address[];
35
+ protected get payloadSchemas(): string[];
36
+ protected get previousHashBuffers(): (ArrayBuffer | null)[];
37
+ protected get previousHashes(): (Hash | null)[];
38
+ protected get timestamp(): number;
39
+ static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
40
+ static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
41
+ schema: string;
42
+ } & _xyo_network_payload_model.PayloadFields>[], WithMeta<_xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & {
43
+ details?: _xylabs_object.JsonValue;
44
+ message?: string;
45
+ name?: string;
46
+ query?: Hash;
47
+ schema: _xyo_network_payload_model.ModuleErrorSchema;
48
+ sources?: Hash[];
49
+ }>[]]>;
50
+ static dataHashableFields<T extends Payload = Payload<AnyObject>>(schema: string, fields?: WithoutSchema<WithoutMeta<T>>): Promise<WithoutMeta<T>>;
51
+ static previousHash<T extends BoundWitness>(boundWitness: T, address: Address): string | undefined;
52
+ protected static linkingFields<T extends BoundWitness = BoundWitness>(accounts: AccountInstance[], payloads?: Payload[], timestamp?: number): Promise<WithoutSchema<WithoutMeta<T>>>;
53
+ protected static metaFields(dataHash: Hash, otherMeta?: JsonObject, stamp?: boolean, accounts?: AccountInstance[], previousHashes?: (Hash | null)[], destination?: Address[], sourceQuery?: Hash): Promise<JsonObject>;
54
+ protected static signature<T extends BoundWitness>(payload: T, address: Address): Lowercase<string>;
55
+ protected static signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
56
+ private static validateLinkingFields;
57
+ build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
58
+ dataHashableFields(): Promise<WithoutMeta<TBoundWitness>>;
59
+ error(payload?: ModuleError): this;
60
+ errors(errors?: (ModuleError | null)[]): this;
61
+ hashes(hashes: Hash[], schema: Schema[]): this;
62
+ payload(payload?: TPayload): this;
63
+ payloads(payloads?: (TPayload | null)[]): this;
64
+ signer(account: AccountInstance): this;
65
+ signers(accounts: AccountInstance[]): this;
66
+ sourceQuery(query?: Hash): this;
67
+ witness(account: AccountInstance): this;
68
+ witnesses(accounts: AccountInstance[]): this;
69
+ protected metaFields(dataHash: Hash, stamp?: boolean): Promise<JsonObject>;
70
+ protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
71
+ private linkingFields;
72
+ private missingSchemaMessage;
73
+ }
74
+
75
+ declare class QueryBoundWitnessBuilder<TBoundWitness extends QueryBoundWitness = QueryBoundWitness, TQuery extends Query = Query> extends BoundWitnessBuilder<TBoundWitness> {
76
+ private _additional?;
77
+ private _query;
78
+ additional(additional: Payload[]): Promise<this>;
79
+ dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>>;
80
+ query<T extends TQuery>(query: T): Promise<this>;
81
+ }
82
+
83
+ export { BoundWitnessBuilder, type BoundWitnessBuilderOptions, type GeneratedBoundWitnessFields, QueryBoundWitnessBuilder };
@@ -1,3 +1,83 @@
1
- export * from './Builder.ts';
2
- export * from './Query/index.ts';
3
- //# sourceMappingURL=index.d.ts.map
1
+ import * as _xylabs_object from '@xylabs/object';
2
+ import { AnyObject, JsonObject } from '@xylabs/object';
3
+ import * as _xyo_network_payload_model from '@xyo-network/payload-model';
4
+ import { Payload, WithMeta, ModuleError, Schema, Query } from '@xyo-network/payload-model';
5
+ import { Hash, Address } from '@xylabs/hex';
6
+ import { AccountInstance } from '@xyo-network/account-model';
7
+ import { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model';
8
+ import { PayloadBuilderOptions, PayloadBuilderBase, WithoutSchema, WithoutMeta } from '@xyo-network/payload-builder';
9
+
10
+ type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
11
+ interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
12
+ readonly accounts?: AccountInstance[];
13
+ readonly destination?: Hash[];
14
+ readonly payloadHashes?: TBoundWitness['payload_hashes'];
15
+ readonly payloadSchemas?: TBoundWitness['payload_schemas'];
16
+ readonly payloads?: TPayload[];
17
+ readonly sourceQuery?: Hash;
18
+ readonly timestamp?: number;
19
+ }
20
+ declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<TBoundWitness, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<TBoundWitness> & {
21
+ schema: BoundWitnessSchema;
22
+ }> {
23
+ private static readonly _buildMutex;
24
+ private _accounts;
25
+ private _destination?;
26
+ private _errorHashes?;
27
+ private _errors;
28
+ private _payloadHashes?;
29
+ private _payloadSchemas?;
30
+ private _payloads;
31
+ private _sourceQuery?;
32
+ private _timestamp;
33
+ constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>);
34
+ protected get addresses(): Address[];
35
+ protected get payloadSchemas(): string[];
36
+ protected get previousHashBuffers(): (ArrayBuffer | null)[];
37
+ protected get previousHashes(): (Hash | null)[];
38
+ protected get timestamp(): number;
39
+ static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
40
+ static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
41
+ schema: string;
42
+ } & _xyo_network_payload_model.PayloadFields>[], WithMeta<_xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & {
43
+ details?: _xylabs_object.JsonValue;
44
+ message?: string;
45
+ name?: string;
46
+ query?: Hash;
47
+ schema: _xyo_network_payload_model.ModuleErrorSchema;
48
+ sources?: Hash[];
49
+ }>[]]>;
50
+ static dataHashableFields<T extends Payload = Payload<AnyObject>>(schema: string, fields?: WithoutSchema<WithoutMeta<T>>): Promise<WithoutMeta<T>>;
51
+ static previousHash<T extends BoundWitness>(boundWitness: T, address: Address): string | undefined;
52
+ protected static linkingFields<T extends BoundWitness = BoundWitness>(accounts: AccountInstance[], payloads?: Payload[], timestamp?: number): Promise<WithoutSchema<WithoutMeta<T>>>;
53
+ protected static metaFields(dataHash: Hash, otherMeta?: JsonObject, stamp?: boolean, accounts?: AccountInstance[], previousHashes?: (Hash | null)[], destination?: Address[], sourceQuery?: Hash): Promise<JsonObject>;
54
+ protected static signature<T extends BoundWitness>(payload: T, address: Address): Lowercase<string>;
55
+ protected static signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
56
+ private static validateLinkingFields;
57
+ build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
58
+ dataHashableFields(): Promise<WithoutMeta<TBoundWitness>>;
59
+ error(payload?: ModuleError): this;
60
+ errors(errors?: (ModuleError | null)[]): this;
61
+ hashes(hashes: Hash[], schema: Schema[]): this;
62
+ payload(payload?: TPayload): this;
63
+ payloads(payloads?: (TPayload | null)[]): this;
64
+ signer(account: AccountInstance): this;
65
+ signers(accounts: AccountInstance[]): this;
66
+ sourceQuery(query?: Hash): this;
67
+ witness(account: AccountInstance): this;
68
+ witnesses(accounts: AccountInstance[]): this;
69
+ protected metaFields(dataHash: Hash, stamp?: boolean): Promise<JsonObject>;
70
+ protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
71
+ private linkingFields;
72
+ private missingSchemaMessage;
73
+ }
74
+
75
+ declare class QueryBoundWitnessBuilder<TBoundWitness extends QueryBoundWitness = QueryBoundWitness, TQuery extends Query = Query> extends BoundWitnessBuilder<TBoundWitness> {
76
+ private _additional?;
77
+ private _query;
78
+ additional(additional: Payload[]): Promise<this>;
79
+ dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>>;
80
+ query<T extends TQuery>(query: T): Promise<this>;
81
+ }
82
+
83
+ export { BoundWitnessBuilder, type BoundWitnessBuilderOptions, type GeneratedBoundWitnessFields, QueryBoundWitnessBuilder };
@@ -1,3 +1,83 @@
1
- export * from './Builder.ts';
2
- export * from './Query/index.ts';
3
- //# sourceMappingURL=index.d.ts.map
1
+ import * as _xylabs_object from '@xylabs/object';
2
+ import { AnyObject, JsonObject } from '@xylabs/object';
3
+ import * as _xyo_network_payload_model from '@xyo-network/payload-model';
4
+ import { Payload, WithMeta, ModuleError, Schema, Query } from '@xyo-network/payload-model';
5
+ import { Hash, Address } from '@xylabs/hex';
6
+ import { AccountInstance } from '@xyo-network/account-model';
7
+ import { BoundWitness, BoundWitnessSchema, QueryBoundWitness } from '@xyo-network/boundwitness-model';
8
+ import { PayloadBuilderOptions, PayloadBuilderBase, WithoutSchema, WithoutMeta } from '@xyo-network/payload-builder';
9
+
10
+ type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
11
+ interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
12
+ readonly accounts?: AccountInstance[];
13
+ readonly destination?: Hash[];
14
+ readonly payloadHashes?: TBoundWitness['payload_hashes'];
15
+ readonly payloadSchemas?: TBoundWitness['payload_schemas'];
16
+ readonly payloads?: TPayload[];
17
+ readonly sourceQuery?: Hash;
18
+ readonly timestamp?: number;
19
+ }
20
+ declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<TBoundWitness, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<TBoundWitness> & {
21
+ schema: BoundWitnessSchema;
22
+ }> {
23
+ private static readonly _buildMutex;
24
+ private _accounts;
25
+ private _destination?;
26
+ private _errorHashes?;
27
+ private _errors;
28
+ private _payloadHashes?;
29
+ private _payloadSchemas?;
30
+ private _payloads;
31
+ private _sourceQuery?;
32
+ private _timestamp;
33
+ constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>);
34
+ protected get addresses(): Address[];
35
+ protected get payloadSchemas(): string[];
36
+ protected get previousHashBuffers(): (ArrayBuffer | null)[];
37
+ protected get previousHashes(): (Hash | null)[];
38
+ protected get timestamp(): number;
39
+ static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
40
+ static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
41
+ schema: string;
42
+ } & _xyo_network_payload_model.PayloadFields>[], WithMeta<_xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & {
43
+ details?: _xylabs_object.JsonValue;
44
+ message?: string;
45
+ name?: string;
46
+ query?: Hash;
47
+ schema: _xyo_network_payload_model.ModuleErrorSchema;
48
+ sources?: Hash[];
49
+ }>[]]>;
50
+ static dataHashableFields<T extends Payload = Payload<AnyObject>>(schema: string, fields?: WithoutSchema<WithoutMeta<T>>): Promise<WithoutMeta<T>>;
51
+ static previousHash<T extends BoundWitness>(boundWitness: T, address: Address): string | undefined;
52
+ protected static linkingFields<T extends BoundWitness = BoundWitness>(accounts: AccountInstance[], payloads?: Payload[], timestamp?: number): Promise<WithoutSchema<WithoutMeta<T>>>;
53
+ protected static metaFields(dataHash: Hash, otherMeta?: JsonObject, stamp?: boolean, accounts?: AccountInstance[], previousHashes?: (Hash | null)[], destination?: Address[], sourceQuery?: Hash): Promise<JsonObject>;
54
+ protected static signature<T extends BoundWitness>(payload: T, address: Address): Lowercase<string>;
55
+ protected static signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
56
+ private static validateLinkingFields;
57
+ build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
58
+ dataHashableFields(): Promise<WithoutMeta<TBoundWitness>>;
59
+ error(payload?: ModuleError): this;
60
+ errors(errors?: (ModuleError | null)[]): this;
61
+ hashes(hashes: Hash[], schema: Schema[]): this;
62
+ payload(payload?: TPayload): this;
63
+ payloads(payloads?: (TPayload | null)[]): this;
64
+ signer(account: AccountInstance): this;
65
+ signers(accounts: AccountInstance[]): this;
66
+ sourceQuery(query?: Hash): this;
67
+ witness(account: AccountInstance): this;
68
+ witnesses(accounts: AccountInstance[]): this;
69
+ protected metaFields(dataHash: Hash, stamp?: boolean): Promise<JsonObject>;
70
+ protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
71
+ private linkingFields;
72
+ private missingSchemaMessage;
73
+ }
74
+
75
+ declare class QueryBoundWitnessBuilder<TBoundWitness extends QueryBoundWitness = QueryBoundWitness, TQuery extends Query = Query> extends BoundWitnessBuilder<TBoundWitness> {
76
+ private _additional?;
77
+ private _query;
78
+ additional(additional: Payload[]): Promise<this>;
79
+ dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>>;
80
+ query<T extends TQuery>(query: T): Promise<this>;
81
+ }
82
+
83
+ export { BoundWitnessBuilder, type BoundWitnessBuilderOptions, type GeneratedBoundWitnessFields, QueryBoundWitnessBuilder };
@@ -73,19 +73,18 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
73
73
  return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : void 0);
74
74
  }
75
75
  static previousHash(boundWitness, address) {
76
- var _a;
77
- return (_a = boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]) == null ? void 0 : _a.toLowerCase();
76
+ return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase();
78
77
  }
79
78
  static async linkingFields(accounts, payloads, timestamp = Date.now()) {
80
79
  const addresses = accounts.map((account) => hexFromArrayBuffer(account.addressBytes, { prefix: false }));
81
80
  const previous_hashes = accounts.map((account) => account.previousHash ?? null);
82
81
  const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : [];
83
- const payload_schemas = payloads == null ? void 0 : payloads.map(({ schema }) => schema);
82
+ const payload_schemas = payloads?.map(({ schema }) => schema);
84
83
  return { addresses, payload_hashes, payload_schemas, previous_hashes, timestamp };
85
84
  }
86
85
  static async metaFields(dataHash, otherMeta, stamp = true, accounts, previousHashes, destination, sourceQuery) {
87
86
  const meta = await super.metaFields(dataHash, otherMeta, stamp);
88
- if ((accounts == null ? void 0 : accounts.length) && (previousHashes == null ? void 0 : previousHashes.length)) {
87
+ if (accounts?.length && previousHashes?.length) {
89
88
  assertEx(accounts.length === previousHashes.length, () => "accounts and previousHashes must have same length");
90
89
  meta.signatures = await this.signatures(accounts, dataHash, previousHashes);
91
90
  }
@@ -102,18 +101,16 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
102
101
  }
103
102
  static async signatures(accounts, hash, previousHashes) {
104
103
  const hashBytes = toArrayBuffer(hash);
105
- const previousHashesBytes = previousHashes == null ? void 0 : previousHashes.map((ph) => ph ? toUint8Array(ph) : void 0);
104
+ const previousHashesBytes = previousHashes?.map((ph) => ph ? toUint8Array(ph) : void 0);
106
105
  return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))));
107
106
  }
108
107
  static validateLinkingFields(bw) {
109
- var _a, _b;
110
- assertEx(((_a = bw.payload_hashes) == null ? void 0 : _a.length) === ((_b = bw.payload_schemas) == null ? void 0 : _b.length), () => "Payload hash/schema mismatch");
108
+ assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, () => "Payload hash/schema mismatch");
111
109
  assertEx(!bw.payload_hashes.some((hash) => !hash), () => "nulls found in hashes");
112
110
  assertEx(!bw.payload_schemas.some((schema) => !schema), () => "nulls found in schemas");
113
111
  }
114
112
  async build() {
115
113
  return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
116
- var _a, _b;
117
114
  const dataHashableFields = await this.dataHashableFields();
118
115
  const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash;
119
116
  const $meta = await this.metaFields($hash);
@@ -124,8 +121,8 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
124
121
  };
125
122
  return [
126
123
  ret,
127
- await Promise.all((_a = this._payloads) == null ? void 0 : _a.map((payload) => PayloadBuilder.build(payload))),
128
- await Promise.all((_b = this._errors) == null ? void 0 : _b.map((error) => PayloadBuilder.build(error)))
124
+ await Promise.all(this._payloads?.map((payload) => PayloadBuilder.build(payload))),
125
+ await Promise.all(this._errors?.map((error) => PayloadBuilder.build(error)))
129
126
  ];
130
127
  });
131
128
  }
@@ -175,31 +172,27 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
175
172
  return this;
176
173
  }
177
174
  signer(account) {
178
- var _a;
179
175
  uniqueAccounts([...this._accounts, account], true);
180
- (_a = this._accounts) == null ? void 0 : _a.push(account);
176
+ this._accounts?.push(account);
181
177
  return this;
182
178
  }
183
179
  signers(accounts) {
184
- var _a;
185
180
  uniqueAccounts([...this._accounts, ...accounts], true);
186
- (_a = this._accounts) == null ? void 0 : _a.push(...accounts);
181
+ this._accounts?.push(...accounts);
187
182
  return this;
188
183
  }
189
184
  sourceQuery(query) {
190
- this._sourceQuery = query == null ? void 0 : query.toLowerCase();
185
+ this._sourceQuery = query?.toLowerCase();
191
186
  return this;
192
187
  }
193
188
  /** @deprecated use signer instead */
194
189
  witness(account) {
195
- var _a;
196
- (_a = this._accounts) == null ? void 0 : _a.push(account);
190
+ this._accounts?.push(account);
197
191
  return this;
198
192
  }
199
193
  /** @deprecated use signers instead */
200
194
  witnesses(accounts) {
201
- var _a;
202
- (_a = this._accounts) == null ? void 0 : _a.push(...accounts);
195
+ this._accounts?.push(...accounts);
203
196
  return this;
204
197
  }
205
198
  async metaFields(dataHash, stamp = true) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts"],"sourcesContent":["import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { Address, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { AnyObject, JsonObject } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { removeEmptyFields, sortFields } from '@xyo-network/hash'\nimport { PayloadBuilder, PayloadBuilderBase, PayloadBuilderOptions, WithoutMeta, WithoutSchema } from '@xyo-network/payload-builder'\nimport { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload>\n extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {\n readonly accounts?: AccountInstance[]\n readonly destination?: Hash[]\n readonly payloadHashes?: TBoundWitness['payload_hashes']\n readonly payloadSchemas?: TBoundWitness['payload_schemas']\n readonly payloads?: TPayload[]\n readonly sourceQuery?: Hash\n readonly timestamp?: number\n}\n\nconst uniqueAccounts = (accounts: AccountInstance[], throwOnFalse = false) => {\n const addresses = new Set<Address>()\n for (const account of accounts) {\n if (addresses.has(account.address)) {\n if (throwOnFalse) {\n throw new Error('Duplicate address')\n }\n return false\n }\n addresses.add(account.address)\n }\n return true\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<\n Omit<TBoundWitness, GeneratedBoundWitnessFields>,\n BoundWitnessBuilderOptions<TBoundWitness> & { schema: BoundWitnessSchema }\n> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: Hash[]\n private _errorHashes?: Hash[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: Hash[]\n private _payloadSchemas?: Schema[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, 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 protected get addresses(): Address[] {\n uniqueAccounts(this._accounts, true)\n return this._accounts.map(account => account.address.toLowerCase()) as Address[]\n }\n\n protected get payloadSchemas(): string[] {\n return (\n this._payloadSchemas\n ?? this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n protected get previousHashBuffers(): (ArrayBuffer | null)[] {\n return this._accounts.map(account => account.previousHashBytes ?? null)\n }\n\n protected get previousHashes(): (Hash | null)[] {\n return this._accounts.map(account => account.previousHash ?? null)\n }\n\n protected get timestamp(): number {\n return (this._timestamp = typeof this._timestamp === 'number' ? this._timestamp : Date.now())\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 async build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>) {\n return await new BoundWitnessBuilder(options).build()\n }\n\n static override async dataHashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: WithoutSchema<WithoutMeta<T>>,\n ): Promise<WithoutMeta<T>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static previousHash<T extends BoundWitness>(boundWitness: T, address: Address) {\n return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase()\n }\n\n protected static async linkingFields<T extends BoundWitness = BoundWitness>(\n accounts: AccountInstance[],\n payloads?: Payload[],\n timestamp = Date.now(),\n ) {\n const addresses = accounts.map(account => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\n const previous_hashes = accounts.map(account => account.previousHash ?? null)\n const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : []\n const payload_schemas = payloads?.map(({ schema }) => schema)\n return { addresses, payload_hashes, payload_schemas, previous_hashes, timestamp } as WithoutSchema<WithoutMeta<T>>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n stamp = true,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta = await super.metaFields(dataHash, otherMeta, stamp)\n\n if (accounts?.length && previousHashes?.length) {\n assertEx(accounts.length === previousHashes.length, () => 'accounts and previousHashes must have same length')\n meta.signatures = await this.signatures(accounts, dataHash, previousHashes)\n }\n\n if (sourceQuery) {\n meta.sourceQuery = sourceQuery\n }\n\n if (destination) {\n meta.destination = destination\n }\n\n return meta\n }\n\n protected static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$meta.signatures[this.addressIndex(payload, address)]\n }\n\n protected static async signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hashBytes = toArrayBuffer(hash)\n const previousHashesBytes = previousHashes?.map(ph => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))))\n }\n\n private static validateLinkingFields(bw: Pick<BoundWitness, 'payload_hashes' | 'payload_schemas'>) {\n assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, () => 'Payload hash/schema mismatch')\n assertEx(!bw.payload_hashes.some(hash => !hash), () => 'nulls found in hashes')\n assertEx(!bw.payload_schemas.some(schema => !schema), () => 'nulls found in schemas')\n }\n\n async build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness\n const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash\n const $meta = await this.metaFields($hash)\n\n const ret = {\n ...dataHashableFields,\n $hash,\n $meta,\n } as WithMeta<TBoundWitness>\n return [\n ret,\n await Promise.all(this._payloads?.map(payload => PayloadBuilder.build(payload))),\n await Promise.all(this._errors?.map(error => PayloadBuilder.build(error))),\n ]\n })\n }\n\n override async dataHashableFields(): Promise<WithoutMeta<TBoundWitness>> {\n const fields = await this.linkingFields()\n const result = await BoundWitnessBuilder.dataHashableFields<TBoundWitness>(this._schema, fields)\n\n BoundWitnessBuilder.validateLinkingFields(result)\n\n return result as Omit<TBoundWitness, '$meta' | '$hash'>\n }\n\n error(payload?: ModuleError) {\n assertEx(this._errorHashes === undefined, () => 'Can not set errors when hashes already set')\n if (payload) {\n this._errors.push(assertEx(sortFields(payload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n for (const error of errors) {\n if (error !== null) {\n this.error(error)\n }\n }\n }\n return this\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 payload(payload?: TPayload) {\n assertEx(this._payloadHashes === undefined, () => 'Can not set payloads when hashes already set')\n if (payload) {\n this._payloads.push(assertEx(sortFields<TPayload>(payload)))\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 signer(account: AccountInstance) {\n uniqueAccounts([...this._accounts, account], true)\n this._accounts?.push(account)\n return this\n }\n\n signers(accounts: AccountInstance[]) {\n uniqueAccounts([...this._accounts, ...accounts], true)\n this._accounts?.push(...accounts)\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase() as Hash\n return this\n }\n\n /** @deprecated use signer instead */\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n /** @deprecated use signers instead */\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected override async metaFields(dataHash: Hash, stamp = true): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(\n dataHash,\n this._$meta,\n stamp,\n this._accounts,\n this.previousHashes,\n this._destination,\n this._sourceQuery,\n )\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n uniqueAccounts(this._accounts, true)\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 linkingFields() {\n return await BoundWitnessBuilder.linkingFields<TBoundWitness>(this._accounts, this._payloads, this.timestamp)\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 { Hash } from '@xylabs/hex'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder.ts'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _additional?: Hash[]\n private _query: WithMeta<TQuery> | undefined\n\n async additional(additional: Payload[]) {\n this._additional = await PayloadBuilder.dataHashes(additional)\n return this\n }\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n const fields = {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, () => 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n if (this._additional) {\n fields.additional = this._additional\n }\n return fields\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n this.payload(this._query)\n return this\n }\n}\n"],"mappings":";AAAA,SAAS,eAAe,oBAAoB;AAC5C,SAAS,gBAAgB;AACzB,SAAwB,0BAA0B;AAGlD,SAAuB,0BAA0B;AACjD,SAAS,mBAAmB,kBAAkB;AAC9C,SAAS,gBAAgB,0BAA6E;AAEtG,SAAS,aAAa;AAetB,IAAM,iBAAiB,CAAC,UAA6B,eAAe,UAAU;AAC5E,QAAM,YAAY,oBAAI,IAAa;AACnC,aAAW,WAAW,UAAU;AAC9B,QAAI,UAAU,IAAI,QAAQ,OAAO,GAAG;AAClC,UAAI,cAAc;AAChB,cAAM,IAAI,MAAM,mBAAmB;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AACA,cAAU,IAAI,QAAQ,OAAO;AAAA,EAC/B;AACA,SAAO;AACT;AAEO,IAAM,sBAAN,MAAM,6BAAmH,mBAG9H;AAAA,EACA,OAAwB,cAAc,IAAI,MAAM;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAyB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,SAA+D;AACzE,UAAM,EAAE,GAAG,SAAS,QAAQ,mBAAmB,CAAC;AAChD,UAAM,EAAE,UAAU,eAAe,gBAAgB,UAAU,aAAa,WAAW,YAAY,IAAI,WAAW,CAAC;AAC/G,SAAK,YAAY,YAAY,CAAC;AAC9B,SAAK,iBAAiB;AACtB,SAAK,kBAAkB;AACvB,SAAK,YAAY,YAAY,CAAC;AAC9B,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,SAAK,aAAa,aAAa;AAAA,EACjC;AAAA,EAEA,IAAc,YAAuB;AACnC,mBAAe,KAAK,WAAW,IAAI;AACnC,WAAO,KAAK,UAAU,IAAI,aAAW,QAAQ,QAAQ,YAAY,CAAC;AAAA,EACpE;AAAA,EAEA,IAAc,iBAA2B;AACvC,WACE,KAAK,mBACF,KAAK,UAAU,IAAI,CAAC,YAAY;AACjC,aAAO,SAAS,QAAQ,QAAQ,MAAM,KAAK,qBAAqB,OAAO,CAAC;AAAA,IAC1E,CAAC;AAAA,EAEL;AAAA,EAEA,IAAc,sBAA8C;AAC1D,WAAO,KAAK,UAAU,IAAI,aAAW,QAAQ,qBAAqB,IAAI;AAAA,EACxE;AAAA,EAEA,IAAc,iBAAkC;AAC9C,WAAO,KAAK,UAAU,IAAI,aAAW,QAAQ,gBAAgB,IAAI;AAAA,EACnE;AAAA,EAEA,IAAc,YAAoB;AAChC,WAAQ,KAAK,aAAa,OAAO,KAAK,eAAe,WAAW,KAAK,aAAa,KAAK,IAAI;AAAA,EAC7F;AAAA,EAEA,OAAO,aAAqC,SAAY,SAAkB;AACxE,UAAM,QAAQ,QAAQ,UAAU,QAAQ,OAAO;AAC/C,QAAI,UAAU,IAAI;AAChB,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,aAAa,MAA0C,SAAoD;AACzG,WAAO,MAAM,IAAI,qBAAoB,OAAO,EAAE,MAAM;AAAA,EACtD;AAAA,EAEA,aAAsB,mBACpB,QACA,QACyB;AACzB,WAAO,MAAM,mBAAmB,mBAAmB,QAAQ,SAAS,kBAAkB,MAAM,IAAI,MAAS;AAAA,EAC3G;AAAA,EAEA,OAAO,aAAqC,cAAiB,SAAkB;AA9GjF;AA+GI,YAAO,kBAAa,gBAAgB,KAAK,aAAa,cAAc,OAAO,CAAC,MAArE,mBAAwE;AAAA,EACjF;AAAA,EAEA,aAAuB,cACrB,UACA,UACA,YAAY,KAAK,IAAI,GACrB;AACA,UAAM,YAAY,SAAS,IAAI,aAAW,mBAAmB,QAAQ,cAAc,EAAE,QAAQ,MAAM,CAAC,CAAC;AACrG,UAAM,kBAAkB,SAAS,IAAI,aAAW,QAAQ,gBAAgB,IAAI;AAC5E,UAAM,iBAAiB,WAAW,MAAM,eAAe,WAAW,QAAQ,IAAI,CAAC;AAC/E,UAAM,kBAAkB,qCAAU,IAAI,CAAC,EAAE,OAAO,MAAM;AACtD,WAAO,EAAE,WAAW,gBAAgB,iBAAiB,iBAAiB,UAAU;AAAA,EAClF;AAAA,EAEA,aAAgC,WAC9B,UACA,WACA,QAAQ,MACR,UACA,gBACA,aACA,aACqB;AACrB,UAAM,OAAO,MAAM,MAAM,WAAW,UAAU,WAAW,KAAK;AAE9D,SAAI,qCAAU,YAAU,iDAAgB,SAAQ;AAC9C,eAAS,SAAS,WAAW,eAAe,QAAQ,MAAM,mDAAmD;AAC7G,WAAK,aAAa,MAAM,KAAK,WAAW,UAAU,UAAU,cAAc;AAAA,IAC5E;AAEA,QAAI,aAAa;AACf,WAAK,cAAc;AAAA,IACrB;AAEA,QAAI,aAAa;AACf,WAAK,cAAc;AAAA,IACrB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAiB,UAAkC,SAAY,SAAkB;AAC/E,WAAO,QAAQ,MAAM,WAAW,KAAK,aAAa,SAAS,OAAO,CAAC;AAAA,EACrE;AAAA,EAEA,aAAuB,WAAW,UAA6B,MAAY,gBAAkE;AAC3I,UAAM,YAAY,cAAc,IAAI;AACpC,UAAM,sBAAsB,iDAAgB,IAAI,QAAO,KAAK,aAAa,EAAE,IAAI;AAC/E,WAAO,MAAM,QAAQ,IAAI,SAAS,IAAI,OAAO,SAAS,UAAU,mBAAmB,MAAM,QAAQ,KAAK,WAAW,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAChJ;AAAA,EAEA,OAAe,sBAAsB,IAA8D;AAnKrG;AAoKI,eAAS,QAAG,mBAAH,mBAAmB,cAAW,QAAG,oBAAH,mBAAoB,SAAQ,MAAM,8BAA8B;AACvG,aAAS,CAAC,GAAG,eAAe,KAAK,UAAQ,CAAC,IAAI,GAAG,MAAM,uBAAuB;AAC9E,aAAS,CAAC,GAAG,gBAAgB,KAAK,YAAU,CAAC,MAAM,GAAG,MAAM,wBAAwB;AAAA,EACtF;AAAA,EAEA,MAAM,QAA2F;AAC/F,WAAO,MAAM,qBAAoB,YAAY,aAAa,YAAY;AA1K1E;AA2KM,YAAM,qBAAsB,MAAM,KAAK,mBAAmB;AAC1D,YAAM,SAAS,MAAM,eAAe,MAAM,kBAAkB,GAAG;AAC/D,YAAM,QAAQ,MAAM,KAAK,WAAW,KAAK;AAEzC,YAAM,MAAM;AAAA,QACV,GAAG;AAAA,QACH;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA,MAAM,QAAQ,KAAI,UAAK,cAAL,mBAAgB,IAAI,aAAW,eAAe,MAAM,OAAO,EAAE;AAAA,QAC/E,MAAM,QAAQ,KAAI,UAAK,YAAL,mBAAc,IAAI,WAAS,eAAe,MAAM,KAAK,EAAE;AAAA,MAC3E;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAe,qBAA0D;AACvE,UAAM,SAAS,MAAM,KAAK,cAAc;AACxC,UAAM,SAAS,MAAM,qBAAoB,mBAAkC,KAAK,SAAS,MAAM;AAE/F,yBAAoB,sBAAsB,MAAM;AAEhD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SAAuB;AAC3B,aAAS,KAAK,iBAAiB,QAAW,MAAM,4CAA4C;AAC5F,QAAI,SAAS;AACX,WAAK,QAAQ,KAAK,SAAS,WAAW,OAAO,CAAC,CAAC;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAiC;AACtC,QAAI,QAAQ;AACV,iBAAW,SAAS,QAAQ;AAC1B,YAAI,UAAU,MAAM;AAClB,eAAK,MAAM,KAAK;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAgB,QAAkB;AACvC,aAAS,KAAK,SAAS,WAAW,GAAG,MAAM,8CAA8C;AACzF,SAAK,iBAAiB;AACtB,SAAK,kBAAkB;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,SAAoB;AAC1B,aAAS,KAAK,mBAAmB,QAAW,MAAM,8CAA8C;AAChG,QAAI,SAAS;AACX,WAAK,UAAU,KAAK,SAAS,WAAqB,OAAO,CAAC,CAAC;AAAA,IAC7D;AACA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,UAAgC;AACvC,QAAI;AACF,iBAAW,WAAW,UAAU;AAC9B,YAAI,YAAY,MAAM;AACpB,eAAK,QAAQ,OAAO;AAAA,QACtB;AAAA,MACF;AACF,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,SAA0B;AAjPnC;AAkPI,mBAAe,CAAC,GAAG,KAAK,WAAW,OAAO,GAAG,IAAI;AACjD,eAAK,cAAL,mBAAgB,KAAK;AACrB,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,UAA6B;AAvPvC;AAwPI,mBAAe,CAAC,GAAG,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;AACrD,eAAK,cAAL,mBAAgB,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,YAAY,OAAc;AACxB,SAAK,eAAe,+BAAO;AAC3B,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,QAAQ,SAA0B;AAnQpC;AAoQI,eAAK,cAAL,mBAAgB,KAAK;AACrB,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,UAAU,UAA6B;AAzQzC;AA0QI,eAAK,cAAL,mBAAgB,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AAAA,EAEA,MAAyB,WAAW,UAAgB,QAAQ,MAA2B;AACrF,WAAO,MAAM,qBAAoB;AAAA,MAC/B;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAEA,MAAgB,WAAW,OAAa,gBAAkE;AACxG,mBAAe,KAAK,WAAW,IAAI;AACnC,UAAM,OAAO,cAAc,KAAK;AAChC,UAAM,sBAAsB,eAAe,IAAI,QAAO,KAAK,aAAa,EAAE,IAAI,MAAU;AACxF,WAAO,MAAM,QAAQ,IAAI,KAAK,UAAU,IAAI,OAAO,SAAS,UAAU,mBAAmB,MAAM,QAAQ,KAAK,MAAM,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EACjJ;AAAA,EAEA,MAAc,gBAAgB;AAC5B,WAAO,MAAM,qBAAoB,cAA6B,KAAK,WAAW,KAAK,WAAW,KAAK,SAAS;AAAA,EAC9G;AAAA,EAEQ,qBAAqB,SAAkB;AAC7C,WAAO;AAAA,EAA4B,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA,EACrE;AACF;;;ACxSA,SAAS,YAAAA,iBAAgB;AAEzB,SAA4B,+BAA+B;AAC3D,SAAS,kBAAAC,uBAAsB;AAKxB,IAAM,2BAAN,cAGG,oBAAmC;AAAA,EACnC;AAAA,EACA;AAAA,EAER,MAAM,WAAW,YAAuB;AACtC,SAAK,cAAc,MAAMC,gBAAe,WAAW,UAAU;AAC7D,WAAO;AAAA,EACT;AAAA,EAEA,MAAe,qBAAsE;AACnF,UAAM,SAAS;AAAA,MACb,GAAI,MAAM,MAAM,mBAAmB;AAAA,MACnC,OAAOC,UAAS,KAAK,QAAQ,MAAM,oBAAoB,EAAE;AAAA,MACzD,QAAQ;AAAA,IACV;AACA,QAAI,KAAK,aAAa;AACpB,aAAO,aAAa,KAAK;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,MAAwB,OAAU;AACtC,SAAK,SAAS,MAAMD,gBAAe,MAAM,KAAK;AAC9C,SAAK,QAAQ,KAAK,MAAM;AACxB,WAAO;AAAA,EACT;AACF;","names":["assertEx","PayloadBuilder","PayloadBuilder","assertEx"]}
1
+ {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts"],"sourcesContent":["import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { Address, Hash, hexFromArrayBuffer } from '@xylabs/hex'\nimport { AnyObject, JsonObject } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { removeEmptyFields, sortFields } from '@xyo-network/hash'\nimport { PayloadBuilder, PayloadBuilderBase, PayloadBuilderOptions, WithoutMeta, WithoutSchema } from '@xyo-network/payload-builder'\nimport { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes'\n\nexport interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload>\n extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {\n readonly accounts?: AccountInstance[]\n readonly destination?: Hash[]\n readonly payloadHashes?: TBoundWitness['payload_hashes']\n readonly payloadSchemas?: TBoundWitness['payload_schemas']\n readonly payloads?: TPayload[]\n readonly sourceQuery?: Hash\n readonly timestamp?: number\n}\n\nconst uniqueAccounts = (accounts: AccountInstance[], throwOnFalse = false) => {\n const addresses = new Set<Address>()\n for (const account of accounts) {\n if (addresses.has(account.address)) {\n if (throwOnFalse) {\n throw new Error('Duplicate address')\n }\n return false\n }\n addresses.add(account.address)\n }\n return true\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<\n Omit<TBoundWitness, GeneratedBoundWitnessFields>,\n BoundWitnessBuilderOptions<TBoundWitness> & { schema: BoundWitnessSchema }\n> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[]\n private _destination?: Hash[]\n private _errorHashes?: Hash[]\n private _errors: ModuleError[] = []\n private _payloadHashes?: Hash[]\n private _payloadSchemas?: Schema[]\n private _payloads: TPayload[]\n private _sourceQuery?: Hash\n private _timestamp: boolean | number\n\n constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, 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 protected get addresses(): Address[] {\n uniqueAccounts(this._accounts, true)\n return this._accounts.map(account => account.address.toLowerCase()) as Address[]\n }\n\n protected get payloadSchemas(): string[] {\n return (\n this._payloadSchemas\n ?? this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n protected get previousHashBuffers(): (ArrayBuffer | null)[] {\n return this._accounts.map(account => account.previousHashBytes ?? null)\n }\n\n protected get previousHashes(): (Hash | null)[] {\n return this._accounts.map(account => account.previousHash ?? null)\n }\n\n protected get timestamp(): number {\n return (this._timestamp = typeof this._timestamp === 'number' ? this._timestamp : Date.now())\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 async build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>) {\n return await new BoundWitnessBuilder(options).build()\n }\n\n static override async dataHashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: WithoutSchema<WithoutMeta<T>>,\n ): Promise<WithoutMeta<T>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static previousHash<T extends BoundWitness>(boundWitness: T, address: Address) {\n return boundWitness.previous_hashes[this.addressIndex(boundWitness, address)]?.toLowerCase()\n }\n\n protected static async linkingFields<T extends BoundWitness = BoundWitness>(\n accounts: AccountInstance[],\n payloads?: Payload[],\n timestamp = Date.now(),\n ) {\n const addresses = accounts.map(account => hexFromArrayBuffer(account.addressBytes, { prefix: false }))\n const previous_hashes = accounts.map(account => account.previousHash ?? null)\n const payload_hashes = payloads ? await PayloadBuilder.dataHashes(payloads) : []\n const payload_schemas = payloads?.map(({ schema }) => schema)\n return { addresses, payload_hashes, payload_schemas, previous_hashes, timestamp } as WithoutSchema<WithoutMeta<T>>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n stamp = true,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta = await super.metaFields(dataHash, otherMeta, stamp)\n\n if (accounts?.length && previousHashes?.length) {\n assertEx(accounts.length === previousHashes.length, () => 'accounts and previousHashes must have same length')\n meta.signatures = await this.signatures(accounts, dataHash, previousHashes)\n }\n\n if (sourceQuery) {\n meta.sourceQuery = sourceQuery\n }\n\n if (destination) {\n meta.destination = destination\n }\n\n return meta\n }\n\n protected static signature<T extends BoundWitness>(payload: T, address: Address) {\n return payload.$meta.signatures[this.addressIndex(payload, address)]\n }\n\n protected static async signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n const hashBytes = toArrayBuffer(hash)\n const previousHashesBytes = previousHashes?.map(ph => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hashBytes, previousHashesBytes[index]))))\n }\n\n private static validateLinkingFields(bw: Pick<BoundWitness, 'payload_hashes' | 'payload_schemas'>) {\n assertEx(bw.payload_hashes?.length === bw.payload_schemas?.length, () => 'Payload hash/schema mismatch')\n assertEx(!bw.payload_hashes.some(hash => !hash), () => 'nulls found in hashes')\n assertEx(!bw.payload_schemas.some(schema => !schema), () => 'nulls found in schemas')\n }\n\n async build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const dataHashableFields = (await this.dataHashableFields()) as TBoundWitness\n const $hash = (await PayloadBuilder.build(dataHashableFields)).$hash\n const $meta = await this.metaFields($hash)\n\n const ret = {\n ...dataHashableFields,\n $hash,\n $meta,\n } as WithMeta<TBoundWitness>\n return [\n ret,\n await Promise.all(this._payloads?.map(payload => PayloadBuilder.build(payload))),\n await Promise.all(this._errors?.map(error => PayloadBuilder.build(error))),\n ]\n })\n }\n\n override async dataHashableFields(): Promise<WithoutMeta<TBoundWitness>> {\n const fields = await this.linkingFields()\n const result = await BoundWitnessBuilder.dataHashableFields<TBoundWitness>(this._schema, fields)\n\n BoundWitnessBuilder.validateLinkingFields(result)\n\n return result as Omit<TBoundWitness, '$meta' | '$hash'>\n }\n\n error(payload?: ModuleError) {\n assertEx(this._errorHashes === undefined, () => 'Can not set errors when hashes already set')\n if (payload) {\n this._errors.push(assertEx(sortFields(payload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n if (errors) {\n for (const error of errors) {\n if (error !== null) {\n this.error(error)\n }\n }\n }\n return this\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 payload(payload?: TPayload) {\n assertEx(this._payloadHashes === undefined, () => 'Can not set payloads when hashes already set')\n if (payload) {\n this._payloads.push(assertEx(sortFields<TPayload>(payload)))\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 signer(account: AccountInstance) {\n uniqueAccounts([...this._accounts, account], true)\n this._accounts?.push(account)\n return this\n }\n\n signers(accounts: AccountInstance[]) {\n uniqueAccounts([...this._accounts, ...accounts], true)\n this._accounts?.push(...accounts)\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase() as Hash\n return this\n }\n\n /** @deprecated use signer instead */\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n /** @deprecated use signers instead */\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected override async metaFields(dataHash: Hash, stamp = true): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(\n dataHash,\n this._$meta,\n stamp,\n this._accounts,\n this.previousHashes,\n this._destination,\n this._sourceQuery,\n )\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]> {\n uniqueAccounts(this._accounts, true)\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 linkingFields() {\n return await BoundWitnessBuilder.linkingFields<TBoundWitness>(this._accounts, this._payloads, this.timestamp)\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 { Hash } from '@xylabs/hex'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\n\nimport { BoundWitnessBuilder } from '../Builder.ts'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _additional?: Hash[]\n private _query: WithMeta<TQuery> | undefined\n\n async additional(additional: Payload[]) {\n this._additional = await PayloadBuilder.dataHashes(additional)\n return this\n }\n\n override async dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n const fields = {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, () => 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n if (this._additional) {\n fields.additional = this._additional\n }\n return fields\n }\n\n async query<T extends TQuery>(query: T) {\n this._query = await PayloadBuilder.build(query)\n this.payload(this._query)\n return this\n }\n}\n"],"mappings":"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","names":["assertEx","PayloadBuilder","PayloadBuilder","assertEx"]}
package/package.json CHANGED
@@ -10,53 +10,34 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/arraybuffer": "^3.6.8",
14
- "@xylabs/assert": "^3.6.8",
15
- "@xylabs/hex": "^3.6.8",
16
- "@xylabs/object": "^3.6.8",
17
- "@xyo-network/account-model": "^2.111.2",
18
- "@xyo-network/boundwitness-model": "^2.111.2",
19
- "@xyo-network/hash": "^2.111.2",
20
- "@xyo-network/payload": "^2.111.2",
21
- "@xyo-network/payload-builder": "^2.111.2",
22
- "@xyo-network/payload-model": "^2.111.2",
13
+ "@xylabs/arraybuffer": "^3.6.12",
14
+ "@xylabs/assert": "^3.6.12",
15
+ "@xylabs/hex": "^3.6.12",
16
+ "@xylabs/object": "^3.6.12",
17
+ "@xyo-network/account-model": "^3.0.0",
18
+ "@xyo-network/boundwitness-model": "^3.0.0",
19
+ "@xyo-network/hash": "^3.0.0",
20
+ "@xyo-network/payload": "^3.0.0",
21
+ "@xyo-network/payload-builder": "^3.0.0",
22
+ "@xyo-network/payload-model": "^3.0.0",
23
23
  "async-mutex": "^0.5.0"
24
24
  },
25
25
  "description": "Primary SDK for using XYO Protocol 2.0",
26
26
  "devDependencies": {
27
- "@xylabs/object": "^3.6.8",
28
- "@xylabs/ts-scripts-yarn3": "^3.15.13",
29
- "@xylabs/tsconfig": "^3.15.13",
30
- "@xyo-network/account": "^2.111.2",
27
+ "@xylabs/object": "^3.6.12",
28
+ "@xylabs/ts-scripts-yarn3": "next",
29
+ "@xylabs/tsconfig": "next",
30
+ "@xyo-network/account": "^3.0.0",
31
31
  "typescript": "^5.5.4"
32
32
  },
33
33
  "exports": {
34
34
  ".": {
35
- "browser": {
36
- "require": {
37
- "types": "./dist/browser/index.d.cts",
38
- "default": "./dist/browser/index.cjs"
39
- },
40
- "import": {
41
- "types": "./dist/browser/index.d.mts",
42
- "default": "./dist/browser/index.mjs"
43
- }
44
- },
45
- "node": {
46
- "require": {
47
- "types": "./dist/node/index.d.cts",
48
- "default": "./dist/node/index.cjs"
49
- },
50
- "import": {
51
- "types": "./dist/node/index.d.mts",
52
- "default": "./dist/node/index.mjs"
53
- }
54
- }
35
+ "types": "./dist/neutral/index.d.ts",
36
+ "default": "./dist/neutral/index.mjs"
55
37
  },
56
38
  "./package.json": "./package.json"
57
39
  },
58
- "main": "dist/node/index.cjs",
59
- "module": "dist/node/index.mjs",
40
+ "module": "dist/neutral/index.mjs",
60
41
  "homepage": "https://xyo.network",
61
42
  "license": "LGPL-3.0-only",
62
43
  "publishConfig": {
@@ -67,7 +48,7 @@
67
48
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
68
49
  },
69
50
  "sideEffects": false,
70
- "types": "dist/node/index.d.ts",
71
- "version": "2.111.2",
51
+ "types": "dist/neutral/index.d.ts",
52
+ "version": "3.0.0",
72
53
  "type": "module"
73
54
  }
@@ -1,71 +0,0 @@
1
- import { Address, Hash } from '@xylabs/hex';
2
- import { AnyObject, JsonObject } from '@xylabs/object';
3
- import { AccountInstance } from '@xyo-network/account-model';
4
- import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model';
5
- import { PayloadBuilderBase, PayloadBuilderOptions, WithoutMeta, WithoutSchema } from '@xyo-network/payload-builder';
6
- import { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
7
- export type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
8
- export interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
9
- readonly accounts?: AccountInstance[];
10
- readonly destination?: Hash[];
11
- readonly payloadHashes?: TBoundWitness['payload_hashes'];
12
- readonly payloadSchemas?: TBoundWitness['payload_schemas'];
13
- readonly payloads?: TPayload[];
14
- readonly sourceQuery?: Hash;
15
- readonly timestamp?: number;
16
- }
17
- export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends PayloadBuilderBase<Omit<TBoundWitness, GeneratedBoundWitnessFields>, BoundWitnessBuilderOptions<TBoundWitness> & {
18
- schema: BoundWitnessSchema;
19
- }> {
20
- private static readonly _buildMutex;
21
- private _accounts;
22
- private _destination?;
23
- private _errorHashes?;
24
- private _errors;
25
- private _payloadHashes?;
26
- private _payloadSchemas?;
27
- private _payloads;
28
- private _sourceQuery?;
29
- private _timestamp;
30
- constructor(options?: BoundWitnessBuilderOptions<TBoundWitness, TPayload>);
31
- protected get addresses(): Address[];
32
- protected get payloadSchemas(): string[];
33
- protected get previousHashBuffers(): (ArrayBuffer | null)[];
34
- protected get previousHashes(): (Hash | null)[];
35
- protected get timestamp(): number;
36
- static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
37
- static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
38
- schema: string;
39
- } & import("@xyo-network/payload-model").PayloadFields>[], WithMeta<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
40
- details?: import("@xylabs/object").JsonValue;
41
- message?: string;
42
- name?: string;
43
- query?: Hash;
44
- schema: import("@xyo-network/payload-model").ModuleErrorSchema;
45
- sources?: Hash[];
46
- }>[]]>;
47
- static dataHashableFields<T extends Payload = Payload<AnyObject>>(schema: string, fields?: WithoutSchema<WithoutMeta<T>>): Promise<WithoutMeta<T>>;
48
- static previousHash<T extends BoundWitness>(boundWitness: T, address: Address): string | undefined;
49
- protected static linkingFields<T extends BoundWitness = BoundWitness>(accounts: AccountInstance[], payloads?: Payload[], timestamp?: number): Promise<WithoutSchema<WithoutMeta<T>>>;
50
- protected static metaFields(dataHash: Hash, otherMeta?: JsonObject, stamp?: boolean, accounts?: AccountInstance[], previousHashes?: (Hash | null)[], destination?: Address[], sourceQuery?: Hash): Promise<JsonObject>;
51
- protected static signature<T extends BoundWitness>(payload: T, address: Address): Lowercase<string>;
52
- protected static signatures(accounts: AccountInstance[], hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
53
- private static validateLinkingFields;
54
- build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
55
- dataHashableFields(): Promise<WithoutMeta<TBoundWitness>>;
56
- error(payload?: ModuleError): this;
57
- errors(errors?: (ModuleError | null)[]): this;
58
- hashes(hashes: Hash[], schema: Schema[]): this;
59
- payload(payload?: TPayload): this;
60
- payloads(payloads?: (TPayload | null)[]): this;
61
- signer(account: AccountInstance): this;
62
- signers(accounts: AccountInstance[]): this;
63
- sourceQuery(query?: Hash): this;
64
- witness(account: AccountInstance): this;
65
- witnesses(accounts: AccountInstance[]): this;
66
- protected metaFields(dataHash: Hash, stamp?: boolean): Promise<JsonObject>;
67
- protected signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): Promise<string[]>;
68
- private linkingFields;
69
- private missingSchemaMessage;
70
- }
71
- //# sourceMappingURL=Builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}