@xyo-network/boundwitness-builder 2.90.16 → 2.90.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/Builder.d.cts +6 -6
- package/dist/browser/Builder.d.cts.map +1 -1
- package/dist/browser/Builder.d.mts +6 -6
- package/dist/browser/Builder.d.mts.map +1 -1
- package/dist/browser/Builder.d.ts +6 -6
- package/dist/browser/Builder.d.ts.map +1 -1
- package/dist/browser/index.cjs +25 -27
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +15 -17
- package/dist/browser/index.js.map +1 -1
- package/dist/node/Builder.d.cts +6 -6
- package/dist/node/Builder.d.cts.map +1 -1
- package/dist/node/Builder.d.mts +6 -6
- package/dist/node/Builder.d.mts.map +1 -1
- package/dist/node/Builder.d.ts +6 -6
- package/dist/node/Builder.d.ts.map +1 -1
- package/dist/node/index.cjs +25 -27
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +15 -17
- package/dist/node/index.js.map +1 -1
- package/package.json +8 -7
- package/src/Builder.ts +19 -25
|
@@ -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,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAkB,kBAAkB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
|
package/dist/node/Builder.d.mts
CHANGED
|
@@ -2,7 +2,7 @@ import { Address, Hash } from '@xylabs/hex';
|
|
|
2
2
|
import { AnyObject, JsonObject } from '@xylabs/object';
|
|
3
3
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
4
4
|
import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model';
|
|
5
|
-
import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload';
|
|
5
|
+
import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload-builder';
|
|
6
6
|
import { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
export type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
|
|
8
8
|
export interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
|
|
@@ -36,7 +36,7 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
|
|
|
36
36
|
static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
|
|
37
37
|
static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
|
|
38
38
|
schema: string;
|
|
39
|
-
} & object>[], WithMeta<import("@xyo-network/payload").SchemaFields & object & {
|
|
39
|
+
} & object>[], WithMeta<import("@xyo-network/payload-model").SchemaFields & object & {
|
|
40
40
|
message?: string | undefined;
|
|
41
41
|
name?: string | undefined;
|
|
42
42
|
query?: string | undefined;
|
|
@@ -53,11 +53,11 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
|
|
|
53
53
|
private static validateLinkingFields;
|
|
54
54
|
build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
|
|
55
55
|
dataHashableFields(): Promise<Omit<TBoundWitness, '$meta' | '$hash'>>;
|
|
56
|
-
error(payload?: ModuleError):
|
|
57
|
-
errors(errors?: (ModuleError | null)[]):
|
|
56
|
+
error(payload?: ModuleError): this;
|
|
57
|
+
errors(errors?: (ModuleError | null)[]): this;
|
|
58
58
|
hashes(hashes: Hash[], schema: Schema[]): this;
|
|
59
|
-
payload(payload?: TPayload):
|
|
60
|
-
payloads(payloads?: (TPayload | null)[]):
|
|
59
|
+
payload(payload?: TPayload): this;
|
|
60
|
+
payloads(payloads?: (TPayload | null)[]): this;
|
|
61
61
|
sourceQuery(query?: Hash): this;
|
|
62
62
|
witness(account: AccountInstance): this;
|
|
63
63
|
witnesses(accounts: AccountInstance[]): this;
|
|
@@ -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,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAkB,kBAAkB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
|
package/dist/node/Builder.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Address, Hash } from '@xylabs/hex';
|
|
|
2
2
|
import { AnyObject, JsonObject } from '@xylabs/object';
|
|
3
3
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
4
4
|
import { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model';
|
|
5
|
-
import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload';
|
|
5
|
+
import { PayloadBuilderBase, PayloadBuilderOptions } from '@xyo-network/payload-builder';
|
|
6
6
|
import { ModuleError, Payload, Schema, WithMeta } from '@xyo-network/payload-model';
|
|
7
7
|
export type GeneratedBoundWitnessFields = 'addresses' | 'payload_hashes' | 'payload_schemas' | 'previous_hashes';
|
|
8
8
|
export interface BoundWitnessBuilderOptions<TBoundWitness extends BoundWitness = BoundWitness, TPayload extends Payload = Payload> extends Omit<PayloadBuilderOptions<Omit<TBoundWitness, GeneratedBoundWitnessFields>>, 'schema'> {
|
|
@@ -36,7 +36,7 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
|
|
|
36
36
|
static addressIndex<T extends BoundWitness>(payload: T, address: Address): number;
|
|
37
37
|
static build<TBoundWitness extends BoundWitness>(options: BoundWitnessBuilderOptions<TBoundWitness>): Promise<[WithMeta<TBoundWitness>, WithMeta<{
|
|
38
38
|
schema: string;
|
|
39
|
-
} & object>[], WithMeta<import("@xyo-network/payload").SchemaFields & object & {
|
|
39
|
+
} & object>[], WithMeta<import("@xyo-network/payload-model").SchemaFields & object & {
|
|
40
40
|
message?: string | undefined;
|
|
41
41
|
name?: string | undefined;
|
|
42
42
|
query?: string | undefined;
|
|
@@ -53,11 +53,11 @@ export declare class BoundWitnessBuilder<TBoundWitness extends BoundWitness = Bo
|
|
|
53
53
|
private static validateLinkingFields;
|
|
54
54
|
build(): Promise<[WithMeta<TBoundWitness>, WithMeta<TPayload>[], WithMeta<ModuleError>[]]>;
|
|
55
55
|
dataHashableFields(): Promise<Omit<TBoundWitness, '$meta' | '$hash'>>;
|
|
56
|
-
error(payload?: ModuleError):
|
|
57
|
-
errors(errors?: (ModuleError | null)[]):
|
|
56
|
+
error(payload?: ModuleError): this;
|
|
57
|
+
errors(errors?: (ModuleError | null)[]): this;
|
|
58
58
|
hashes(hashes: Hash[], schema: Schema[]): this;
|
|
59
|
-
payload(payload?: TPayload):
|
|
60
|
-
payloads(payloads?: (TPayload | null)[]):
|
|
59
|
+
payload(payload?: TPayload): this;
|
|
60
|
+
payloads(payloads?: (TPayload | null)[]): this;
|
|
61
61
|
sourceQuery(query?: Hash): this;
|
|
62
62
|
witness(account: AccountInstance): this;
|
|
63
63
|
witnesses(accounts: AccountInstance[]): this;
|
|
@@ -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,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAElF,OAAO,EAAkB,kBAAkB,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"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"}
|
package/dist/node/index.cjs
CHANGED
|
@@ -37,9 +37,9 @@ var import_assert = require("@xylabs/assert");
|
|
|
37
37
|
var import_hex = require("@xylabs/hex");
|
|
38
38
|
var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
39
39
|
var import_hash = require("@xyo-network/hash");
|
|
40
|
-
var
|
|
40
|
+
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
41
41
|
var import_async_mutex = require("async-mutex");
|
|
42
|
-
var _BoundWitnessBuilder = class _BoundWitnessBuilder extends
|
|
42
|
+
var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload_builder.PayloadBuilderBase {
|
|
43
43
|
_accounts;
|
|
44
44
|
_destination;
|
|
45
45
|
_errorHashes;
|
|
@@ -91,10 +91,10 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
91
91
|
return await new _BoundWitnessBuilder(options).build();
|
|
92
92
|
}
|
|
93
93
|
static async dataHashableFields(schema, fields) {
|
|
94
|
-
return await
|
|
94
|
+
return await import_payload_builder.PayloadBuilderBase.dataHashableFields(schema, fields ? (0, import_hash.removeEmptyFields)(fields) : void 0);
|
|
95
95
|
}
|
|
96
96
|
static async hashableFields(schema, fields, $meta, $hash, timestamp) {
|
|
97
|
-
return await
|
|
97
|
+
return await import_payload_builder.PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp);
|
|
98
98
|
}
|
|
99
99
|
static previousHash(boundWitness, address) {
|
|
100
100
|
var _a;
|
|
@@ -105,7 +105,7 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
105
105
|
prefix: false
|
|
106
106
|
}));
|
|
107
107
|
const previous_hashes = accounts.map((account) => account.previousHash ?? null);
|
|
108
|
-
const payload_hashes = payloads ? await
|
|
108
|
+
const payload_hashes = payloads ? await import_payload_builder.PayloadBuilder.dataHashes(payloads) : [];
|
|
109
109
|
const payload_schemas = payloads == null ? void 0 : payloads.map(({ schema }) => schema);
|
|
110
110
|
return {
|
|
111
111
|
addresses,
|
|
@@ -117,7 +117,7 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
117
117
|
}
|
|
118
118
|
static async metaFields(dataHash, otherMeta, accounts, previousHashes, destination, sourceQuery) {
|
|
119
119
|
const meta = {
|
|
120
|
-
...await
|
|
120
|
+
...await import_payload_builder.PayloadBuilderBase.metaFields(dataHash, otherMeta)
|
|
121
121
|
};
|
|
122
122
|
if ((accounts == null ? void 0 : accounts.length) && (previousHashes == null ? void 0 : previousHashes.length)) {
|
|
123
123
|
(0, import_assert.assertEx)(accounts.length === previousHashes.length, "accounts and previousHashes must have same length");
|
|
@@ -149,7 +149,7 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
149
149
|
return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
|
|
150
150
|
var _a, _b;
|
|
151
151
|
const dataHashableFields = await this.dataHashableFields();
|
|
152
|
-
const $hash = (await
|
|
152
|
+
const $hash = (await import_payload_builder.PayloadBuilder.build(dataHashableFields)).$hash;
|
|
153
153
|
const $meta = await this.metaFields($hash);
|
|
154
154
|
const ret = {
|
|
155
155
|
...dataHashableFields,
|
|
@@ -158,8 +158,8 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
158
158
|
};
|
|
159
159
|
return [
|
|
160
160
|
ret,
|
|
161
|
-
await Promise.all((_a = this._payloads) == null ? void 0 : _a.map((payload) =>
|
|
162
|
-
await Promise.all((_b = this._errors) == null ? void 0 : _b.map((error) =>
|
|
161
|
+
await Promise.all((_a = this._payloads) == null ? void 0 : _a.map((payload) => import_payload_builder.PayloadBuilder.build(payload))),
|
|
162
|
+
await Promise.all((_b = this._errors) == null ? void 0 : _b.map((error) => import_payload_builder.PayloadBuilder.build(error)))
|
|
163
163
|
];
|
|
164
164
|
});
|
|
165
165
|
}
|
|
@@ -169,21 +169,20 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
169
169
|
_BoundWitnessBuilder.validateLinkingFields(result);
|
|
170
170
|
return result;
|
|
171
171
|
}
|
|
172
|
-
|
|
173
|
-
const unwrappedPayload = await import_payload.PayloadWrapper.unwrap(payload);
|
|
172
|
+
error(payload) {
|
|
174
173
|
(0, import_assert.assertEx)(this._errorHashes === void 0, "Can not set errors when hashes already set");
|
|
175
|
-
if (
|
|
176
|
-
this._errors.push((0, import_assert.assertEx)((0, import_hash.sortFields)(
|
|
174
|
+
if (payload) {
|
|
175
|
+
this._errors.push((0, import_assert.assertEx)((0, import_hash.sortFields)(payload)));
|
|
177
176
|
}
|
|
178
177
|
return this;
|
|
179
178
|
}
|
|
180
|
-
|
|
179
|
+
errors(errors) {
|
|
181
180
|
if (errors) {
|
|
182
|
-
|
|
181
|
+
errors.map((error) => {
|
|
183
182
|
if (error !== null) {
|
|
184
|
-
|
|
183
|
+
this.error(error);
|
|
185
184
|
}
|
|
186
|
-
})
|
|
185
|
+
});
|
|
187
186
|
}
|
|
188
187
|
return this;
|
|
189
188
|
}
|
|
@@ -193,21 +192,20 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends import_payload.Pay
|
|
|
193
192
|
this._payloadSchemas = schema;
|
|
194
193
|
return this;
|
|
195
194
|
}
|
|
196
|
-
|
|
197
|
-
const unwrappedPayload = await import_payload.PayloadWrapper.unwrap(payload);
|
|
195
|
+
payload(payload) {
|
|
198
196
|
(0, import_assert.assertEx)(this._payloadHashes === void 0, "Can not set payloads when hashes already set");
|
|
199
|
-
if (
|
|
200
|
-
this._payloads.push((0, import_assert.assertEx)((0, import_hash.sortFields)(
|
|
197
|
+
if (payload) {
|
|
198
|
+
this._payloads.push((0, import_assert.assertEx)((0, import_hash.sortFields)(payload)));
|
|
201
199
|
}
|
|
202
200
|
return this;
|
|
203
201
|
}
|
|
204
|
-
|
|
202
|
+
payloads(payloads) {
|
|
205
203
|
if (payloads)
|
|
206
|
-
|
|
204
|
+
payloads.map((payload) => {
|
|
207
205
|
if (payload !== null) {
|
|
208
|
-
|
|
206
|
+
this.payload(payload);
|
|
209
207
|
}
|
|
210
|
-
})
|
|
208
|
+
});
|
|
211
209
|
return this;
|
|
212
210
|
}
|
|
213
211
|
sourceQuery(query) {
|
|
@@ -247,7 +245,7 @@ var BoundWitnessBuilder = _BoundWitnessBuilder;
|
|
|
247
245
|
// src/Query/QueryBoundWitnessBuilder.ts
|
|
248
246
|
var import_assert2 = require("@xylabs/assert");
|
|
249
247
|
var import_boundwitness_model2 = require("@xyo-network/boundwitness-model");
|
|
250
|
-
var
|
|
248
|
+
var import_payload = require("@xyo-network/payload");
|
|
251
249
|
var _QueryBoundWitnessBuilder = class _QueryBoundWitnessBuilder extends BoundWitnessBuilder {
|
|
252
250
|
_query;
|
|
253
251
|
async dataHashableFields() {
|
|
@@ -265,7 +263,7 @@ var _QueryBoundWitnessBuilder = class _QueryBoundWitnessBuilder extends BoundWit
|
|
|
265
263
|
};
|
|
266
264
|
}
|
|
267
265
|
async query(query) {
|
|
268
|
-
this._query = await
|
|
266
|
+
this._query = await import_payload.PayloadBuilder.build(query);
|
|
269
267
|
await this.payload(this._query);
|
|
270
268
|
return this;
|
|
271
269
|
}
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.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 { 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, PayloadWrapper } from '@xyo-network/payload'\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?: string[]\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\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?: 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<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 return this._accounts.map((account) => account.address.toLowerCase())\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?: Omit<T, 'schema' | '$hash' | '$meta'>,\n ): Promise<Omit<T, '$hash' | '$meta'>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static override async hashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n $meta?: JsonObject,\n $hash?: Hash,\n timestamp?: number,\n ): Promise<WithMeta<T>> {\n return await PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp)\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 Omit<T, '$meta' | '$hash' | 'schema'>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta: JsonObject = { ...(await PayloadBuilderBase.metaFields(dataHash, otherMeta)) }\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<Omit<TBoundWitness, '$meta' | '$hash'>> {\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 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 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?.toLowerCase()\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 override async metaFields(dataHash: Hash): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): 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 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 { 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 dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n return {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n }\n\n override async hashableFields(): Promise<WithMeta<TBoundWitness>> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as WithMeta<TBoundWitness>\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"],"mappings":"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","names":["BoundWitnessBuilder","PayloadBuilderBase","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","addresses","map","account","address","toLowerCase","payload","assertEx","missingSchemaMessage","previousHashBuffers","previousHashBytes","previousHashes","previousHash","Date","now","addressIndex","index","indexOf","Error","build","dataHashableFields","fields","removeEmptyFields","undefined","hashableFields","$meta","$hash","boundWitness","previous_hashes","linkingFields","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","PayloadBuilder","dataHashes","payload_schemas","metaFields","dataHash","otherMeta","meta","length","signatures","signature","hash","hashBytes","toArrayBuffer","previousHashesBytes","ph","toUint8Array","Promise","all","sign","validateLinkingFields","bw","some","_buildMutex","runExclusive","ret","error","result","_schema","unwrappedPayload","PayloadWrapper","unwrap","push","sortFields","errors","hashes","query","witness","witnesses","_$meta","_hash","JSON","stringify","Mutex","import_assert","import_boundwitness_model","import_payload","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","dataHashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","hashableFields","PayloadBuilder","build","payload"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.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 { 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 } 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?: string[]\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\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?: 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<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 return this._accounts.map((account) => account.address.toLowerCase())\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?: Omit<T, 'schema' | '$hash' | '$meta'>,\n ): Promise<Omit<T, '$hash' | '$meta'>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static override async hashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n $meta?: JsonObject,\n $hash?: Hash,\n timestamp?: number,\n ): Promise<WithMeta<T>> {\n return await PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp)\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 Omit<T, '$meta' | '$hash' | 'schema'>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta: JsonObject = { ...(await PayloadBuilderBase.metaFields(dataHash, otherMeta)) }\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<Omit<TBoundWitness, '$meta' | '$hash'>> {\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 errors.map((error) => {\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 payloads.map((payload) => {\n if (payload !== null) {\n this.payload(payload)\n }\n })\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase()\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 override async metaFields(dataHash: Hash): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): 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 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 { 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 dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n return {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n }\n\n override async hashableFields(): Promise<WithMeta<TBoundWitness>> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as WithMeta<TBoundWitness>\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"],"mappings":"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","names":["BoundWitnessBuilder","PayloadBuilderBase","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","addresses","map","account","address","toLowerCase","payload","assertEx","missingSchemaMessage","previousHashBuffers","previousHashBytes","previousHashes","previousHash","Date","now","addressIndex","index","indexOf","Error","build","dataHashableFields","fields","removeEmptyFields","undefined","hashableFields","$meta","$hash","boundWitness","previous_hashes","linkingFields","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","PayloadBuilder","dataHashes","payload_schemas","metaFields","dataHash","otherMeta","meta","length","signatures","signature","hash","hashBytes","toArrayBuffer","previousHashesBytes","ph","toUint8Array","Promise","all","sign","validateLinkingFields","bw","some","_buildMutex","runExclusive","ret","error","result","_schema","push","sortFields","errors","hashes","query","witness","witnesses","_$meta","_hash","JSON","stringify","Mutex","import_assert","import_boundwitness_model","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","dataHashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","hashableFields","PayloadBuilder","build","payload"]}
|
package/dist/node/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { assertEx } from "@xylabs/assert";
|
|
|
12
12
|
import { hexFromArrayBuffer } from "@xylabs/hex";
|
|
13
13
|
import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
14
14
|
import { removeEmptyFields, sortFields } from "@xyo-network/hash";
|
|
15
|
-
import { PayloadBuilder, PayloadBuilderBase
|
|
15
|
+
import { PayloadBuilder, PayloadBuilderBase } from "@xyo-network/payload-builder";
|
|
16
16
|
import { Mutex } from "async-mutex";
|
|
17
17
|
var _BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase {
|
|
18
18
|
_accounts;
|
|
@@ -144,21 +144,20 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
|
|
|
144
144
|
_BoundWitnessBuilder.validateLinkingFields(result);
|
|
145
145
|
return result;
|
|
146
146
|
}
|
|
147
|
-
|
|
148
|
-
const unwrappedPayload = await PayloadWrapper.unwrap(payload);
|
|
147
|
+
error(payload) {
|
|
149
148
|
assertEx(this._errorHashes === void 0, "Can not set errors when hashes already set");
|
|
150
|
-
if (
|
|
151
|
-
this._errors.push(assertEx(sortFields(
|
|
149
|
+
if (payload) {
|
|
150
|
+
this._errors.push(assertEx(sortFields(payload)));
|
|
152
151
|
}
|
|
153
152
|
return this;
|
|
154
153
|
}
|
|
155
|
-
|
|
154
|
+
errors(errors) {
|
|
156
155
|
if (errors) {
|
|
157
|
-
|
|
156
|
+
errors.map((error) => {
|
|
158
157
|
if (error !== null) {
|
|
159
|
-
|
|
158
|
+
this.error(error);
|
|
160
159
|
}
|
|
161
|
-
})
|
|
160
|
+
});
|
|
162
161
|
}
|
|
163
162
|
return this;
|
|
164
163
|
}
|
|
@@ -168,21 +167,20 @@ var _BoundWitnessBuilder = class _BoundWitnessBuilder extends PayloadBuilderBase
|
|
|
168
167
|
this._payloadSchemas = schema;
|
|
169
168
|
return this;
|
|
170
169
|
}
|
|
171
|
-
|
|
172
|
-
const unwrappedPayload = await PayloadWrapper.unwrap(payload);
|
|
170
|
+
payload(payload) {
|
|
173
171
|
assertEx(this._payloadHashes === void 0, "Can not set payloads when hashes already set");
|
|
174
|
-
if (
|
|
175
|
-
this._payloads.push(assertEx(sortFields(
|
|
172
|
+
if (payload) {
|
|
173
|
+
this._payloads.push(assertEx(sortFields(payload)));
|
|
176
174
|
}
|
|
177
175
|
return this;
|
|
178
176
|
}
|
|
179
|
-
|
|
177
|
+
payloads(payloads) {
|
|
180
178
|
if (payloads)
|
|
181
|
-
|
|
179
|
+
payloads.map((payload) => {
|
|
182
180
|
if (payload !== null) {
|
|
183
|
-
|
|
181
|
+
this.payload(payload);
|
|
184
182
|
}
|
|
185
|
-
})
|
|
183
|
+
});
|
|
186
184
|
return this;
|
|
187
185
|
}
|
|
188
186
|
sourceQuery(query) {
|
package/dist/node/index.js.map
CHANGED
|
@@ -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, PayloadWrapper } from '@xyo-network/payload'\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?: string[]\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\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?: 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<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 return this._accounts.map((account) => account.address.toLowerCase())\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?: Omit<T, 'schema' | '$hash' | '$meta'>,\n ): Promise<Omit<T, '$hash' | '$meta'>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static override async hashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n $meta?: JsonObject,\n $hash?: Hash,\n timestamp?: number,\n ): Promise<WithMeta<T>> {\n return await PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp)\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 Omit<T, '$meta' | '$hash' | 'schema'>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta: JsonObject = { ...(await PayloadBuilderBase.metaFields(dataHash, otherMeta)) }\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<Omit<TBoundWitness, '$meta' | '$hash'>> {\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 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 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?.toLowerCase()\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 override async metaFields(dataHash: Hash): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): 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 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 { 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 dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n return {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n }\n\n override async hashableFields(): Promise<WithMeta<TBoundWitness>> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as WithMeta<TBoundWitness>\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"],"mappings":"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","names":["toArrayBuffer","toUint8Array","assertEx","hexFromArrayBuffer","BoundWitnessSchema","removeEmptyFields","sortFields","PayloadBuilder","PayloadBuilderBase","PayloadWrapper","Mutex","BoundWitnessBuilder","PayloadBuilderBase","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","addresses","map","account","address","toLowerCase","payload","assertEx","missingSchemaMessage","previousHashBuffers","previousHashBytes","previousHashes","previousHash","Date","now","addressIndex","index","indexOf","Error","build","dataHashableFields","fields","removeEmptyFields","undefined","hashableFields","$meta","$hash","boundWitness","previous_hashes","linkingFields","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","PayloadBuilder","dataHashes","payload_schemas","metaFields","dataHash","otherMeta","meta","length","signatures","signature","hash","hashBytes","toArrayBuffer","previousHashesBytes","ph","toUint8Array","Promise","all","sign","validateLinkingFields","bw","some","_buildMutex","runExclusive","ret","error","result","_schema","unwrappedPayload","PayloadWrapper","unwrap","push","sortFields","errors","hashes","query","witness","witnesses","_$meta","_hash","JSON","stringify","Mutex","assertEx","QueryBoundWitnessSchema","PayloadBuilder","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","dataHashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","hashableFields","PayloadBuilder","build","payload"]}
|
|
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 } 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?: string[]\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\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?: 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<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 return this._accounts.map((account) => account.address.toLowerCase())\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?: Omit<T, 'schema' | '$hash' | '$meta'>,\n ): Promise<Omit<T, '$hash' | '$meta'>> {\n return await PayloadBuilderBase.dataHashableFields(schema, fields ? removeEmptyFields(fields) : undefined)\n }\n\n static override async hashableFields<T extends Payload = Payload<AnyObject>>(\n schema: string,\n fields?: Omit<T, 'schema' | '$hash' | '$meta'>,\n $meta?: JsonObject,\n $hash?: Hash,\n timestamp?: number,\n ): Promise<WithMeta<T>> {\n return await PayloadBuilderBase.hashableFields(schema, fields, $meta, $hash, timestamp)\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 Omit<T, '$meta' | '$hash' | 'schema'>\n }\n\n protected static override async metaFields(\n dataHash: Hash,\n otherMeta?: JsonObject,\n accounts?: AccountInstance[],\n previousHashes?: (Hash | null)[],\n destination?: Address[],\n sourceQuery?: Hash,\n ): Promise<JsonObject> {\n const meta: JsonObject = { ...(await PayloadBuilderBase.metaFields(dataHash, otherMeta)) }\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<Omit<TBoundWitness, '$meta' | '$hash'>> {\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 errors.map((error) => {\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 payloads.map((payload) => {\n if (payload !== null) {\n this.payload(payload)\n }\n })\n return this\n }\n\n sourceQuery(query?: Hash) {\n this._sourceQuery = query?.toLowerCase()\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 override async metaFields(dataHash: Hash): Promise<JsonObject> {\n return await BoundWitnessBuilder.metaFields(dataHash, this._$meta, this._accounts, this.previousHashes, this._destination, this._sourceQuery)\n }\n\n protected async signatures(_hash: Hash, previousHashes: (Hash | ArrayBuffer | null)[]): 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 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 { 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 dataHashableFields(): Promise<Omit<TBoundWitness, '$hash' | '$meta'>> {\n return {\n ...(await super.dataHashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as Omit<TBoundWitness, '$hash' | '$meta'>\n }\n\n override async hashableFields(): Promise<WithMeta<TBoundWitness>> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(this._query, 'No Query Specified').$hash,\n schema: QueryBoundWitnessSchema,\n } as WithMeta<TBoundWitness>\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"],"mappings":"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","names":["toArrayBuffer","toUint8Array","assertEx","hexFromArrayBuffer","BoundWitnessSchema","removeEmptyFields","sortFields","PayloadBuilder","PayloadBuilderBase","Mutex","BoundWitnessBuilder","PayloadBuilderBase","_accounts","_destination","_errorHashes","_errors","_payloadHashes","_payloadSchemas","_payloads","_sourceQuery","_timestamp","constructor","options","schema","BoundWitnessSchema","accounts","payloadHashes","payloadSchemas","payloads","sourceQuery","timestamp","destination","addresses","map","account","address","toLowerCase","payload","assertEx","missingSchemaMessage","previousHashBuffers","previousHashBytes","previousHashes","previousHash","Date","now","addressIndex","index","indexOf","Error","build","dataHashableFields","fields","removeEmptyFields","undefined","hashableFields","$meta","$hash","boundWitness","previous_hashes","linkingFields","hexFromArrayBuffer","addressBytes","prefix","payload_hashes","PayloadBuilder","dataHashes","payload_schemas","metaFields","dataHash","otherMeta","meta","length","signatures","signature","hash","hashBytes","toArrayBuffer","previousHashesBytes","ph","toUint8Array","Promise","all","sign","validateLinkingFields","bw","some","_buildMutex","runExclusive","ret","error","result","_schema","push","sortFields","errors","hashes","query","witness","witnesses","_$meta","_hash","JSON","stringify","Mutex","assertEx","QueryBoundWitnessSchema","PayloadBuilder","QueryBoundWitnessBuilder","BoundWitnessBuilder","_query","dataHashableFields","query","assertEx","$hash","schema","QueryBoundWitnessSchema","hashableFields","PayloadBuilder","build","payload"]}
|
package/package.json
CHANGED
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
"@xylabs/assert": "^2.14.2",
|
|
15
15
|
"@xylabs/hex": "^2.14.2",
|
|
16
16
|
"@xylabs/object": "^2.89.2",
|
|
17
|
-
"@xyo-network/account-model": "~2.90.
|
|
18
|
-
"@xyo-network/boundwitness-model": "~2.90.
|
|
19
|
-
"@xyo-network/hash": "~2.90.
|
|
20
|
-
"@xyo-network/payload": "~2.90.
|
|
21
|
-
"@xyo-network/payload-
|
|
17
|
+
"@xyo-network/account-model": "~2.90.18",
|
|
18
|
+
"@xyo-network/boundwitness-model": "~2.90.18",
|
|
19
|
+
"@xyo-network/hash": "~2.90.18",
|
|
20
|
+
"@xyo-network/payload": "~2.90.18",
|
|
21
|
+
"@xyo-network/payload-builder": "~2.90.18",
|
|
22
|
+
"@xyo-network/payload-model": "~2.90.18",
|
|
22
23
|
"async-mutex": "^0.4.1"
|
|
23
24
|
},
|
|
24
25
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"@xylabs/object": "^2.89.2",
|
|
27
28
|
"@xylabs/ts-scripts-yarn3": "^3.2.42",
|
|
28
29
|
"@xylabs/tsconfig": "^3.2.42",
|
|
29
|
-
"@xyo-network/account": "~2.90.
|
|
30
|
+
"@xyo-network/account": "~2.90.18",
|
|
30
31
|
"typescript": "^5.3.3"
|
|
31
32
|
},
|
|
32
33
|
"exports": {
|
|
@@ -67,6 +68,6 @@
|
|
|
67
68
|
},
|
|
68
69
|
"sideEffects": false,
|
|
69
70
|
"types": "dist/node/index.d.ts",
|
|
70
|
-
"version": "2.90.
|
|
71
|
+
"version": "2.90.18",
|
|
71
72
|
"type": "module"
|
|
72
73
|
}
|