@xyo-network/boundwitness-builder 2.84.6 → 2.84.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,46 +1,18 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- BoundWitnessBuilder: () => BoundWitnessBuilder,
24
- QueryBoundWitnessBuilder: () => QueryBoundWitnessBuilder,
25
- QueryBoundWitnessWrapper: () => QueryBoundWitnessWrapper
26
- });
27
- module.exports = __toCommonJS(src_exports);
28
-
29
1
  // src/Builder.ts
30
- var import_arraybuffer = require("@xylabs/arraybuffer");
31
- var import_assert = require("@xylabs/assert");
32
- var import_hex = require("@xylabs/hex");
33
- var import_boundwitness_model = require("@xyo-network/boundwitness-model");
34
- var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
35
- var import_hash = require("@xyo-network/hash");
36
- var import_payload = require("@xyo-network/payload");
37
- var import_async_mutex = require("async-mutex");
2
+ import { toArrayBuffer, toUint8Array } from "@xylabs/arraybuffer";
3
+ import { assertEx } from "@xylabs/assert";
4
+ import { hexFromArrayBuffer } from "@xylabs/hex";
5
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
6
+ import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
7
+ import { PayloadHasher, sortFields } from "@xyo-network/hash";
8
+ import { PayloadWrapper } from "@xyo-network/payload";
9
+ import { Mutex } from "async-mutex";
38
10
  var BoundWitnessBuilder = class _BoundWitnessBuilder {
39
11
  constructor(config = { inlinePayloads: false }, logger) {
40
12
  this.config = config;
41
13
  this.logger = logger;
42
14
  }
43
- static _buildMutex = new import_async_mutex.Mutex();
15
+ static _buildMutex = new Mutex();
44
16
  _accounts = [];
45
17
  _errorHashes;
46
18
  _errors = [];
@@ -51,7 +23,7 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
51
23
  _timestamp = Date.now();
52
24
  get _payload_schemas() {
53
25
  return this._payloadSchemas ?? this._payloads.map((payload) => {
54
- return (0, import_assert.assertEx)(payload.schema, () => this.missingSchemaMessage(payload));
26
+ return assertEx(payload.schema, () => this.missingSchemaMessage(payload));
55
27
  });
56
28
  }
57
29
  async build(meta = false) {
@@ -61,7 +33,7 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
61
33
  return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
62
34
  var _a;
63
35
  const hashableFields = await this.hashableFields();
64
- const _hash = await import_boundwitness_wrapper.BoundWitnessWrapper.hashAsync(hashableFields);
36
+ const _hash = await BoundWitnessWrapper.hashAsync(hashableFields);
65
37
  const previousHashes = this._accounts.map((account) => account.previousHash);
66
38
  const ret = {
67
39
  ...hashableFields,
@@ -81,39 +53,39 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
81
53
  });
82
54
  }
83
55
  error(payload) {
84
- const unwrappedPayload = import_payload.PayloadWrapper.unwrap(payload);
85
- (0, import_assert.assertEx)(this._errorHashes === void 0, "Can not set errors when hashes already set");
56
+ const unwrappedPayload = PayloadWrapper.unwrap(payload);
57
+ assertEx(this._errorHashes === void 0, "Can not set errors when hashes already set");
86
58
  if (unwrappedPayload) {
87
- this._errors.push((0, import_assert.assertEx)((0, import_hash.sortFields)(unwrappedPayload)));
59
+ this._errors.push(assertEx(sortFields(unwrappedPayload)));
88
60
  }
89
61
  return this;
90
62
  }
91
63
  errors(errors) {
92
- errors == null ? void 0 : errors.forEach((error) => {
64
+ for (const error of errors ?? []) {
93
65
  if (error !== null) {
94
66
  this.error(error);
95
67
  }
96
- });
68
+ }
97
69
  return this;
98
70
  }
99
71
  async hashableFields() {
100
72
  var _a, _b;
101
73
  const addresses = this._accounts.map(
102
- (account) => account.addressBytes ? (0, import_hex.hexFromArrayBuffer)(account.addressBytes, { prefix: false }) : void 0
74
+ (account) => account.addressBytes ? hexFromArrayBuffer(account.addressBytes, { prefix: false }) : void 0
103
75
  );
104
76
  const previous_hashes = this._accounts.map((account) => account.previousHash ?? null);
105
- const payload_hashes = (0, import_assert.assertEx)(await this.getPayloadHashes(), "Missing payload_hashes");
106
- const payload_schemas = (0, import_assert.assertEx)(this._payload_schemas, "Missing payload_schemas");
77
+ const payload_hashes = assertEx(await this.getPayloadHashes(), "Missing payload_hashes");
78
+ const payload_schemas = assertEx(this._payload_schemas, "Missing payload_schemas");
107
79
  const result = {
108
- addresses: (0, import_assert.assertEx)(addresses, "Missing addresses"),
80
+ addresses: assertEx(addresses, "Missing addresses"),
109
81
  payload_hashes,
110
82
  payload_schemas,
111
83
  previous_hashes,
112
- schema: import_boundwitness_model.BoundWitnessSchema
84
+ schema: BoundWitnessSchema
113
85
  };
114
- (0, import_assert.assertEx)(((_a = result.payload_hashes) == null ? void 0 : _a.length) === ((_b = result.payload_schemas) == null ? void 0 : _b.length), "Payload hash/schema mismatch");
115
- (0, import_assert.assertEx)(!result.payload_hashes.reduce((inValid, hash) => inValid || !hash, false), "nulls found in hashes");
116
- (0, import_assert.assertEx)(!result.payload_schemas.reduce((inValid, schema) => inValid || !schema, false), "nulls found in schemas");
86
+ assertEx(((_a = result.payload_hashes) == null ? void 0 : _a.length) === ((_b = result.payload_schemas) == null ? void 0 : _b.length), "Payload hash/schema mismatch");
87
+ assertEx(!result.payload_hashes.some((hash) => !hash), () => "nulls found in hashes");
88
+ assertEx(!result.payload_schemas.some((schema) => !schema), "nulls found in schemas");
117
89
  if (this.config.timestamp ?? true) {
118
90
  result.timestamp = this._timestamp;
119
91
  }
@@ -123,25 +95,26 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
123
95
  return result;
124
96
  }
125
97
  hashes(hashes, schema) {
126
- (0, import_assert.assertEx)(this.payloads.length === 0, "Can not set hashes when payloads already set");
98
+ assertEx(this.payloads.length === 0, "Can not set hashes when payloads already set");
127
99
  this._payloadHashes = hashes;
128
100
  this._payloadSchemas = schema;
129
101
  return this;
130
102
  }
131
103
  payload(payload) {
132
- const unwrappedPayload = import_payload.PayloadWrapper.unwrap(payload);
133
- (0, import_assert.assertEx)(this._payloadHashes === void 0, "Can not set payloads when hashes already set");
104
+ const unwrappedPayload = PayloadWrapper.unwrap(payload);
105
+ assertEx(this._payloadHashes === void 0, "Can not set payloads when hashes already set");
134
106
  if (unwrappedPayload) {
135
- this._payloads.push((0, import_assert.assertEx)((0, import_hash.sortFields)(unwrappedPayload)));
107
+ this._payloads.push(assertEx(sortFields(unwrappedPayload)));
136
108
  }
137
109
  return this;
138
110
  }
139
111
  payloads(payloads) {
140
- payloads == null ? void 0 : payloads.forEach((payload) => {
141
- if (payload !== null) {
142
- this.payload(payload);
112
+ if (payloads)
113
+ for (const payload of payloads) {
114
+ if (payload !== null) {
115
+ this.payload(payload);
116
+ }
143
117
  }
144
- });
145
118
  return this;
146
119
  }
147
120
  sourceQuery(hash) {
@@ -159,12 +132,12 @@ var BoundWitnessBuilder = class _BoundWitnessBuilder {
159
132
  return this;
160
133
  }
161
134
  async signatures(_hash, previousHashes) {
162
- const hash = (0, import_arraybuffer.toArrayBuffer)(_hash);
163
- const previousHashesBytes = previousHashes.map((ph) => ph ? (0, import_arraybuffer.toUint8Array)(ph) : void 0);
164
- return await Promise.all(this._accounts.map(async (account, index) => (0, import_hex.hexFromArrayBuffer)(await account.sign(hash, previousHashesBytes[index]))));
135
+ const hash = toArrayBuffer(_hash);
136
+ const previousHashesBytes = previousHashes.map((ph) => ph ? toUint8Array(ph) : void 0);
137
+ return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))));
165
138
  }
166
139
  async getPayloadHashes() {
167
- return this._payloadHashes ?? await Promise.all(this._payloads.map((payload) => import_hash.PayloadHasher.hashAsync(payload)));
140
+ return this._payloadHashes ?? await Promise.all(this._payloads.map((payload) => PayloadHasher.hashAsync(payload)));
168
141
  }
169
142
  inlinePayloads() {
170
143
  console.log("BoundWitnessBuilder: Using inlinePayloads will soon be disallowed");
@@ -182,39 +155,39 @@ ${JSON.stringify(payload, null, 2)}`;
182
155
  };
183
156
 
184
157
  // src/Query/QueryBoundWitnessBuilder.ts
185
- var import_assert2 = require("@xylabs/assert");
186
- var import_boundwitness_model2 = require("@xyo-network/boundwitness-model");
187
- var import_payload_wrapper = require("@xyo-network/payload-wrapper");
158
+ import { assertEx as assertEx2 } from "@xylabs/assert";
159
+ import { QueryBoundWitnessSchema } from "@xyo-network/boundwitness-model";
160
+ import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
188
161
  var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
189
162
  _query;
190
163
  async hashableFields() {
191
164
  var _a;
192
165
  return {
193
166
  ...await super.hashableFields(),
194
- query: (0, import_assert2.assertEx)(await ((_a = this._query) == null ? void 0 : _a.hashAsync()), "No Query Specified"),
195
- schema: import_boundwitness_model2.QueryBoundWitnessSchema
167
+ query: assertEx2(await ((_a = this._query) == null ? void 0 : _a.hashAsync()), "No Query Specified"),
168
+ schema: QueryBoundWitnessSchema
196
169
  };
197
170
  }
198
171
  query(query) {
199
- this._query = import_payload_wrapper.PayloadWrapper.wrap(query);
172
+ this._query = PayloadWrapper2.wrap(query);
200
173
  this.payload(this._query.payload());
201
174
  return this;
202
175
  }
203
176
  };
204
177
 
205
178
  // src/Query/QueryBoundWitnessWrapper.ts
206
- var import_assert3 = require("@xylabs/assert");
207
- var import_lodash = require("@xylabs/lodash");
208
- var import_boundwitness_wrapper2 = require("@xyo-network/boundwitness-wrapper");
209
- var import_hash2 = require("@xyo-network/hash");
210
- var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
211
- var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends import_boundwitness_wrapper2.BoundWitnessWrapper {
179
+ import { assertEx as assertEx3 } from "@xylabs/assert";
180
+ import { compact } from "@xylabs/lodash";
181
+ import { BoundWitnessWrapper as BoundWitnessWrapper2 } from "@xyo-network/boundwitness-wrapper";
182
+ import { PayloadHasher as PayloadHasher2 } from "@xyo-network/hash";
183
+ import { PayloadWrapper as PayloadWrapper3 } from "@xyo-network/payload-wrapper";
184
+ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper2 {
212
185
  _payloadsWithoutQuery;
213
186
  _query;
214
187
  _resultSet;
215
188
  isQueryBoundWitnessWrapper = true;
216
189
  static parseQuery(obj, payloads) {
217
- (0, import_assert3.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
190
+ assertEx3(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
218
191
  switch (typeof obj) {
219
192
  case "object": {
220
193
  const castWrapper = obj;
@@ -222,27 +195,26 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends import_bo
222
195
  return wrapper;
223
196
  }
224
197
  }
225
- throw Error(`Unable to parse [${typeof obj}]`);
198
+ throw new Error(`Unable to parse [${typeof obj}]`);
226
199
  }
227
200
  async getQuery() {
228
201
  const payloadMap = await this.allPayloadMap();
229
202
  this._query = this._query ?? payloadMap[this.boundwitness.query];
230
- return (0, import_assert3.assertEx)(this._query, `Missing Query [${this.boundwitness}]`);
203
+ return assertEx3(this._query, `Missing Query [${this.boundwitness}]`);
231
204
  }
232
205
  async getWrappedPayloads() {
233
- this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? (0, import_lodash.compact)(
234
- (await import_hash2.PayloadHasher.filterExclude(
206
+ this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? compact(
207
+ (await PayloadHasher2.filterExclude(
235
208
  (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),
236
209
  this.payload().query
237
- )).map((payload) => import_payload_wrapper2.PayloadWrapper.wrap(payload))
210
+ )).map((payload) => PayloadWrapper3.wrap(payload))
238
211
  );
239
212
  return this._payloadsWithoutQuery;
240
213
  }
241
214
  };
242
- // Annotate the CommonJS export names for ESM import in node:
243
- 0 && (module.exports = {
215
+ export {
244
216
  BoundWitnessBuilder,
245
217
  QueryBoundWitnessBuilder,
246
218
  QueryBoundWitnessWrapper
247
- });
219
+ };
248
220
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts","../../src/Query/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './Builder'\nexport * from './Query'\n","import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher, sortFields } from '@xyo-network/hash'\nimport { PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport interface BoundWitnessBuilderConfig {\n /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */\n /** @deprecated We will be removing support for inlinePayloads soon */\n readonly inlinePayloads?: boolean\n /** @deprecated We will be removing support for meta soon */\n readonly meta?: boolean\n /** @deprecated We will be removing support for timestamp soon */\n readonly timestamp?: boolean\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness, TPayload extends Payload = Payload> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[] = []\n private _errorHashes: string[] | undefined\n private _errors: ModuleError[] = []\n private _payloadHashes: string[] | undefined\n private _payloadSchemas: string[] | undefined\n private _payloads: TPayload[] = []\n private _sourceQuery: string | undefined\n private _timestamp = Date.now()\n\n constructor(\n readonly config: BoundWitnessBuilderConfig = { inlinePayloads: false },\n protected readonly logger?: Logger,\n ) {}\n\n private get _payload_schemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n async build(meta = false): Promise<[TBoundWitness, TPayload[], ModuleError[]]> {\n if (meta) {\n console.log('BoundWitnessBuilder: Calling build with meta=true will be disallowed soon')\n }\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const hashableFields = await this.hashableFields()\n const _hash = await BoundWitnessWrapper.hashAsync(hashableFields)\n\n /* get all the previousHashes to verify atomic signing */\n const previousHashes = this._accounts.map((account) => account.previousHash)\n\n const ret: TBoundWitness = {\n ...hashableFields,\n _signatures: await this.signatures(_hash, previousHashes),\n }\n if (meta ?? this.config?.meta) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bwWithMeta = ret as any\n bwWithMeta._client = 'js'\n bwWithMeta._hash = _hash\n bwWithMeta._timestamp = this._timestamp\n }\n if (this.config.inlinePayloads) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const anyRet = ret as any\n //leaving this in here to prevent breaking code (for now)\n anyRet._payloads = this.inlinePayloads()\n }\n return [ret, this._payloads, this._errors]\n })\n }\n\n error(payload?: ModuleError) {\n const unwrappedPayload = PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n errors?.forEach((error) => {\n if (error !== null) {\n this.error(error)\n }\n })\n return this\n }\n\n async hashableFields(): Promise<TBoundWitness> {\n const addresses = this._accounts.map((account) =>\n account.addressBytes ? hexFromArrayBuffer(account.addressBytes, { prefix: false }) : undefined,\n )\n const previous_hashes = this._accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = assertEx(await this.getPayloadHashes(), 'Missing payload_hashes')\n const payload_schemas = assertEx(this._payload_schemas, 'Missing payload_schemas')\n const result: TBoundWitness = {\n addresses: assertEx(addresses, 'Missing addresses'),\n payload_hashes,\n payload_schemas,\n previous_hashes,\n schema: BoundWitnessSchema,\n } as TBoundWitness\n\n assertEx(result.payload_hashes?.length === result.payload_schemas?.length, 'Payload hash/schema mismatch')\n\n assertEx(!result.payload_hashes.reduce((inValid, hash) => inValid || !hash, false), 'nulls found in hashes')\n\n assertEx(!result.payload_schemas.reduce((inValid, schema) => inValid || !schema, false), 'nulls found in schemas')\n\n if (this.config.timestamp ?? true) {\n result.timestamp = this._timestamp\n }\n\n if (this._sourceQuery) {\n result.sourceQuery = this._sourceQuery\n }\n\n return result\n }\n\n hashes(hashes: string[], schema: string[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n const unwrappedPayload = PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n payloads?.forEach((payload) => {\n if (payload !== null) {\n this.payload(payload)\n }\n })\n return this\n }\n\n sourceQuery(hash?: string) {\n this._sourceQuery = hash\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]> {\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async getPayloadHashes(): Promise<string[]> {\n return this._payloadHashes ?? (await Promise.all(this._payloads.map((payload) => PayloadHasher.hashAsync(payload))))\n }\n\n private inlinePayloads() {\n console.log('BoundWitnessBuilder: Using inlinePayloads will soon be disallowed')\n\n return this._payloads.map<TPayload>((payload, index) => {\n return {\n ...payload,\n schema: this._payload_schemas[index],\n }\n })\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessBuilder } from '../Builder'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: PayloadWrapper<TQuery> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(await this._query?.hashAsync(), 'No Query Specified'),\n schema: QueryBoundWitnessSchema,\n }\n }\n\n query<T extends TQuery>(query: T) {\n this._query = PayloadWrapper.wrap(query)\n this.payload(this._query.payload())\n return this\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { Payload, PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n private _resultSet: PayloadSetPayload | undefined\n\n private isQueryBoundWitnessWrapper = true\n\n static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper = castWrapper?.isQueryBoundWitnessWrapper ? castWrapper : new QueryBoundWitnessWrapper<T>(obj as QueryBoundWitness, payloads)\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.allPayloadMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, `Missing Query [${this.boundwitness}]`)\n }\n\n override async getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n compact(\n (\n await PayloadHasher.filterExclude(\n (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),\n this.payload().query,\n )\n ).map((payload) => PayloadWrapper.wrap(payload)),\n )\n return this._payloadsWithoutQuery\n }\n}\n"],"mappings":"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","names":["import_assert","import_boundwitness_model","import_assert","import_boundwitness_wrapper","import_hash","import_payload_wrapper"]}
1
+ {"version":3,"sources":["../../src/Builder.ts","../../src/Query/QueryBoundWitnessBuilder.ts","../../src/Query/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { toArrayBuffer, toUint8Array } from '@xylabs/arraybuffer'\nimport { assertEx } from '@xylabs/assert'\nimport { hexFromArrayBuffer } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher, sortFields } from '@xyo-network/hash'\nimport { PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\n\nexport interface BoundWitnessBuilderConfig {\n /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */\n /** @deprecated We will be removing support for inlinePayloads soon */\n readonly inlinePayloads?: boolean\n /** @deprecated We will be removing support for meta soon */\n readonly meta?: boolean\n /** @deprecated We will be removing support for timestamp soon */\n readonly timestamp?: boolean\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness, TPayload extends Payload = Payload> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[] = []\n private _errorHashes: string[] | undefined\n private _errors: ModuleError[] = []\n private _payloadHashes: string[] | undefined\n private _payloadSchemas: string[] | undefined\n private _payloads: TPayload[] = []\n private _sourceQuery: string | undefined\n private _timestamp = Date.now()\n\n constructor(\n readonly config: BoundWitnessBuilderConfig = { inlinePayloads: false },\n protected readonly logger?: Logger,\n ) {}\n\n private get _payload_schemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n async build(meta = false): Promise<[TBoundWitness, TPayload[], ModuleError[]]> {\n if (meta) {\n console.log('BoundWitnessBuilder: Calling build with meta=true will be disallowed soon')\n }\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const hashableFields = await this.hashableFields()\n const _hash = await BoundWitnessWrapper.hashAsync(hashableFields)\n\n /* get all the previousHashes to verify atomic signing */\n const previousHashes = this._accounts.map((account) => account.previousHash)\n\n const ret: TBoundWitness = {\n ...hashableFields,\n _signatures: await this.signatures(_hash, previousHashes),\n }\n if (meta ?? this.config?.meta) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bwWithMeta = ret as any\n bwWithMeta._client = 'js'\n bwWithMeta._hash = _hash\n bwWithMeta._timestamp = this._timestamp\n }\n if (this.config.inlinePayloads) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const anyRet = ret as any\n //leaving this in here to prevent breaking code (for now)\n anyRet._payloads = this.inlinePayloads()\n }\n return [ret, this._payloads, this._errors]\n })\n }\n\n error(payload?: ModuleError) {\n const unwrappedPayload = PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n for (const error of errors ?? []) {\n if (error !== null) {\n this.error(error)\n }\n }\n return this\n }\n\n async hashableFields(): Promise<TBoundWitness> {\n const addresses = this._accounts.map((account) =>\n account.addressBytes ? hexFromArrayBuffer(account.addressBytes, { prefix: false }) : undefined,\n )\n const previous_hashes = this._accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = assertEx(await this.getPayloadHashes(), 'Missing payload_hashes')\n const payload_schemas = assertEx(this._payload_schemas, 'Missing payload_schemas')\n const result: TBoundWitness = {\n addresses: assertEx(addresses, 'Missing addresses'),\n payload_hashes,\n payload_schemas,\n previous_hashes,\n schema: BoundWitnessSchema,\n } as TBoundWitness\n\n assertEx(result.payload_hashes?.length === result.payload_schemas?.length, 'Payload hash/schema mismatch')\n\n assertEx(!result.payload_hashes.some((hash) => !hash), () => 'nulls found in hashes')\n\n assertEx(!result.payload_schemas.some((schema) => !schema), 'nulls found in schemas')\n\n if (this.config.timestamp ?? true) {\n result.timestamp = this._timestamp\n }\n\n if (this._sourceQuery) {\n result.sourceQuery = this._sourceQuery\n }\n\n return result\n }\n\n hashes(hashes: string[], schema: string[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n const unwrappedPayload = PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n if (payloads)\n for (const payload of payloads) {\n if (payload !== null) {\n this.payload(payload)\n }\n }\n return this\n }\n\n sourceQuery(hash?: string) {\n this._sourceQuery = hash\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async signatures(_hash: string, previousHashes: (string | ArrayBuffer | undefined)[]): Promise<string[]> {\n const hash = toArrayBuffer(_hash)\n const previousHashesBytes = previousHashes.map((ph) => (ph ? toUint8Array(ph) : undefined))\n return await Promise.all(this._accounts.map(async (account, index) => hexFromArrayBuffer(await account.sign(hash, previousHashesBytes[index]))))\n }\n\n private async getPayloadHashes(): Promise<string[]> {\n return this._payloadHashes ?? (await Promise.all(this._payloads.map((payload) => PayloadHasher.hashAsync(payload))))\n }\n\n private inlinePayloads() {\n console.log('BoundWitnessBuilder: Using inlinePayloads will soon be disallowed')\n\n return this._payloads.map<TPayload>((payload, index) => {\n return {\n ...payload,\n schema: this._payload_schemas[index],\n }\n })\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessBuilder } from '../Builder'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: PayloadWrapper<TQuery> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(await this._query?.hashAsync(), 'No Query Specified'),\n schema: QueryBoundWitnessSchema,\n }\n }\n\n query<T extends TQuery>(query: T) {\n this._query = PayloadWrapper.wrap(query)\n this.payload(this._query.payload())\n return this\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { Payload, PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n private _resultSet: PayloadSetPayload | undefined\n\n private isQueryBoundWitnessWrapper = true\n\n static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper = castWrapper?.isQueryBoundWitnessWrapper ? castWrapper : new QueryBoundWitnessWrapper<T>(obj as QueryBoundWitness, payloads)\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.allPayloadMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, `Missing Query [${this.boundwitness}]`)\n }\n\n override async getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n compact(\n (\n await PayloadHasher.filterExclude(\n (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),\n this.payload().query,\n )\n ).map((payload) => PayloadWrapper.wrap(payload)),\n )\n return this._payloadsWithoutQuery\n }\n}\n"],"mappings":"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","names":["assertEx","PayloadWrapper","assertEx","PayloadWrapper","assertEx","BoundWitnessWrapper","PayloadHasher","PayloadWrapper"]}
package/package.json CHANGED
@@ -16,25 +16,24 @@
16
16
  "@xylabs/hex": "^2.13.20",
17
17
  "@xylabs/lodash": "^2.13.20",
18
18
  "@xylabs/logger": "^2.13.20",
19
- "@xyo-network/account-model": "~2.84.6",
20
- "@xyo-network/boundwitness-model": "~2.84.6",
21
- "@xyo-network/boundwitness-validator": "~2.84.6",
22
- "@xyo-network/boundwitness-wrapper": "~2.84.6",
23
- "@xyo-network/hash": "~2.84.6",
24
- "@xyo-network/payload": "~2.84.6",
25
- "@xyo-network/payload-model": "~2.84.6",
26
- "@xyo-network/payload-wrapper": "~2.84.6",
19
+ "@xyo-network/account-model": "~2.84.8",
20
+ "@xyo-network/boundwitness-model": "~2.84.8",
21
+ "@xyo-network/boundwitness-validator": "~2.84.8",
22
+ "@xyo-network/boundwitness-wrapper": "~2.84.8",
23
+ "@xyo-network/hash": "~2.84.8",
24
+ "@xyo-network/payload": "~2.84.8",
25
+ "@xyo-network/payload-model": "~2.84.8",
26
+ "@xyo-network/payload-wrapper": "~2.84.8",
27
27
  "async-mutex": "^0.4.0"
28
28
  },
29
29
  "description": "Primary SDK for using XYO Protocol 2.0",
30
30
  "devDependencies": {
31
- "@xylabs/ts-scripts-yarn3": "^3.2.19",
32
- "@xylabs/tsconfig": "^3.2.19",
33
- "@xyo-network/account": "~2.84.6",
34
- "@xyo-network/object": "~2.84.6",
31
+ "@xylabs/ts-scripts-yarn3": "^3.2.24",
32
+ "@xylabs/tsconfig": "^3.2.24",
33
+ "@xyo-network/account": "~2.84.8",
34
+ "@xyo-network/object": "~2.84.8",
35
35
  "typescript": "^5.3.3"
36
36
  },
37
- "docs": "dist/docs.json",
38
37
  "exports": {
39
38
  ".": {
40
39
  "browser": {
@@ -49,19 +48,19 @@
49
48
  },
50
49
  "node": {
51
50
  "require": {
52
- "types": "./dist/node/index.d.ts",
53
- "default": "./dist/node/index.js"
51
+ "types": "./dist/node/index.d.cts",
52
+ "default": "./dist/node/index.cjs"
54
53
  },
55
54
  "import": {
56
55
  "types": "./dist/node/index.d.mts",
57
- "default": "./dist/node/index.mjs"
56
+ "default": "./dist/node/index.js"
58
57
  }
59
58
  }
60
59
  },
61
60
  "./package.json": "./package.json"
62
61
  },
63
- "main": "dist/node/index.js",
64
- "module": "dist/node/index.mjs",
62
+ "main": "dist/node/index.cjs",
63
+ "module": "dist/node/index.js",
65
64
  "homepage": "https://xyo.network",
66
65
  "license": "LGPL-3.0-only",
67
66
  "publishConfig": {
@@ -73,5 +72,6 @@
73
72
  },
74
73
  "sideEffects": false,
75
74
  "types": "dist/node/index.d.ts",
76
- "version": "2.84.6"
75
+ "version": "2.84.8",
76
+ "type": "module"
77
77
  }
package/src/Builder.ts CHANGED
@@ -87,11 +87,11 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: st
87
87
  }
88
88
 
89
89
  errors(errors?: (ModuleError | null)[]) {
90
- errors?.forEach((error) => {
90
+ for (const error of errors ?? []) {
91
91
  if (error !== null) {
92
92
  this.error(error)
93
93
  }
94
- })
94
+ }
95
95
  return this
96
96
  }
97
97
 
@@ -112,9 +112,9 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: st
112
112
 
113
113
  assertEx(result.payload_hashes?.length === result.payload_schemas?.length, 'Payload hash/schema mismatch')
114
114
 
115
- assertEx(!result.payload_hashes.reduce((inValid, hash) => inValid || !hash, false), 'nulls found in hashes')
115
+ assertEx(!result.payload_hashes.some((hash) => !hash), () => 'nulls found in hashes')
116
116
 
117
- assertEx(!result.payload_schemas.reduce((inValid, schema) => inValid || !schema, false), 'nulls found in schemas')
117
+ assertEx(!result.payload_schemas.some((schema) => !schema), 'nulls found in schemas')
118
118
 
119
119
  if (this.config.timestamp ?? true) {
120
120
  result.timestamp = this._timestamp
@@ -144,11 +144,12 @@ export class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: st
144
144
  }
145
145
 
146
146
  payloads(payloads?: (TPayload | null)[]) {
147
- payloads?.forEach((payload) => {
148
- if (payload !== null) {
149
- this.payload(payload)
147
+ if (payloads)
148
+ for (const payload of payloads) {
149
+ if (payload !== null) {
150
+ this.payload(payload)
151
+ }
150
152
  }
151
- })
152
153
  return this
153
154
  }
154
155
 
@@ -32,14 +32,14 @@ export class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWi
32
32
  const resultSet = PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadMap())[resultSetHash] as PayloadSetPayload)
33
33
  const required = resultSet?.payload().required
34
34
  if (required) {
35
- Object.entries(required).forEach(([key, value]) => {
35
+ for (const [key, value] of Object.entries(required)) {
36
36
  const found = wrapper.payloadSchemas.reduce((count, schema) => {
37
37
  return count + (schema === key ? 1 : 0)
38
38
  }, 0)
39
39
  if (found !== value) {
40
40
  errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))
41
41
  }
42
- })
42
+ }
43
43
  }
44
44
  } catch (ex) {
45
45
  handleError(ex, (error) => {
@@ -25,7 +25,7 @@ export class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitn
25
25
  return wrapper
26
26
  }
27
27
  }
28
- throw Error(`Unable to parse [${typeof obj}]`)
28
+ throw new Error(`Unable to parse [${typeof obj}]`)
29
29
  }
30
30
 
31
31
  async getQuery(): Promise<T> {