@xyo-network/boundwitness-wrapper 2.75.0 → 2.75.2

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.
@@ -0,0 +1,51 @@
1
+ import { BoundWitness } from '@xyo-network/boundwitness-model';
2
+ import { DataLike } from '@xyo-network/core';
3
+ import { Payload } from '@xyo-network/payload-model';
4
+ import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
5
+ import { Promisable } from '@xyo-network/promise';
6
+ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
7
+ schema: string;
8
+ }> = BoundWitness, TPayload extends Payload = Payload> extends PayloadWrapperBase<TBoundWitness> {
9
+ private _allPayloadMap;
10
+ private _moduleErrors;
11
+ private _payloadMap;
12
+ private _payloads;
13
+ private isBoundWitnessWrapper;
14
+ protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]);
15
+ get addresses(): string[];
16
+ get boundwitness(): TBoundWitness;
17
+ get payloadHashes(): string[];
18
+ get payloadSchemas(): string[];
19
+ get payloadsArray(): PayloadWrapper<TPayload>[];
20
+ get previousHashes(): (string | null)[];
21
+ static as<T extends BoundWitness = BoundWitness>(value: unknown): BoundWitnessWrapper<T, {
22
+ schema: string;
23
+ } & import("@xyo-network/payload-model").PayloadFields> | null;
24
+ static load(address: DataLike): Promise<BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
25
+ schema: "network.xyo.boundwitness";
26
+ }, {
27
+ schema: string;
28
+ } & import("@xyo-network/payload-model").PayloadFields> | null>;
29
+ static mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>>;
30
+ static mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>>;
31
+ static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P>;
32
+ static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined;
33
+ static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P>;
34
+ static wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>>;
35
+ allPayloadMap(): Promise<Record<string, TPayload>>;
36
+ dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>>;
37
+ getAllPayloads(): Promise<TPayload[]>;
38
+ getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
39
+ getMissingPayloads(): Promise<string[]>;
40
+ getPayloads(): Promise<TPayload[]>;
41
+ getWrappedModuleErrors(): Promisable<PayloadWrapper[]>;
42
+ getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]>;
43
+ hashesBySchema(schema: string): string[];
44
+ payloadMap(): Promise<Record<string, TPayload>>;
45
+ payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]>;
46
+ payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]>;
47
+ prev(address: string): string | null;
48
+ toResult(): (TBoundWitness | TPayload[])[];
49
+ validate(): Promise<Error[]>;
50
+ }
51
+ //# sourceMappingURL=BoundWitnessWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/BoundWitnessWrapper.ts
19
21
  var BoundWitnessWrapper_exports = {};
20
22
  __export(BoundWitnessWrapper_exports, {
21
23
  BoundWitnessWrapper: () => BoundWitnessWrapper
@@ -28,7 +30,7 @@ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
28
30
  var import_boundwitness_validator = require("@xyo-network/boundwitness-validator");
29
31
  var import_core = require("@xyo-network/core");
30
32
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
31
- class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
33
+ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
32
34
  _allPayloadMap;
33
35
  _moduleErrors;
34
36
  _payloadMap;
@@ -58,18 +60,18 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
58
60
  return this.boundwitness.previous_hashes;
59
61
  }
60
62
  static as(value) {
61
- return value instanceof BoundWitnessWrapper ? value : null;
63
+ return value instanceof _BoundWitnessWrapper ? value : null;
62
64
  }
63
65
  static async load(address) {
64
66
  const wrapper = await import_payload_wrapper.PayloadWrapper.load(address);
65
- const payload = wrapper?.payload();
67
+ const payload = wrapper == null ? void 0 : wrapper.payload();
66
68
  (0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitnessPayload)(payload), "Attempt to load non-boundwitness");
67
69
  const boundWitness = payload && (0, import_boundwitness_model.isBoundWitnessPayload)(payload) ? payload : void 0;
68
- return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null;
70
+ return boundWitness ? _BoundWitnessWrapper.wrap(boundWitness) : null;
69
71
  }
70
72
  static async mapPayloads(payloads) {
71
73
  return (await Promise.all(
72
- payloads?.map(async (payload) => {
74
+ payloads == null ? void 0 : payloads.map(async (payload) => {
73
75
  const unwrapped = (0, import_assert.assertEx)(import_payload_wrapper.PayloadWrapper.unwrap(payload));
74
76
  return [unwrapped, await import_core.PayloadHasher.hashAsync(unwrapped)];
75
77
  })
@@ -83,7 +85,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
83
85
  }
84
86
  static async mapWrappedPayloads(payloads) {
85
87
  return (await Promise.all(
86
- payloads?.map(async (payload) => {
88
+ payloads == null ? void 0 : payloads.map(async (payload) => {
87
89
  const unwrapped = (0, import_assert.assertEx)(import_payload_wrapper.PayloadWrapper.unwrap(payload));
88
90
  return [unwrapped, await import_core.PayloadHasher.hashAsync(unwrapped)];
89
91
  })
@@ -101,7 +103,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
101
103
  switch (typeof hydratedObj) {
102
104
  case "object": {
103
105
  const castWrapper = hydratedObj;
104
- const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj, payloads);
106
+ const newWrapper = (castWrapper == null ? void 0 : castWrapper.isBoundWitnessWrapper) ? castWrapper : new _BoundWitnessWrapper(hydratedObj, payloads);
105
107
  return newWrapper;
106
108
  }
107
109
  }
@@ -119,7 +121,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
119
121
  static wrap(obj, payloads) {
120
122
  switch (typeof obj) {
121
123
  case "object": {
122
- const newWrapper = new BoundWitnessWrapper((0, import_assert.assertEx)(BoundWitnessWrapper.unwrap(obj)), payloads);
124
+ const newWrapper = new _BoundWitnessWrapper((0, import_assert.assertEx)(_BoundWitnessWrapper.unwrap(obj)), payloads);
123
125
  return newWrapper;
124
126
  }
125
127
  }
@@ -128,13 +130,13 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
128
130
  const result = {};
129
131
  await Promise.all(
130
132
  boundWitnesses.map(async (payload) => {
131
- result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload);
133
+ result[await _BoundWitnessWrapper.hashAsync(payload)] = _BoundWitnessWrapper.parse(payload);
132
134
  })
133
135
  );
134
136
  return result;
135
137
  }
136
138
  async allPayloadMap() {
137
- this._allPayloadMap = this._allPayloadMap ?? await BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
139
+ this._allPayloadMap = this._allPayloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
138
140
  return this._allPayloadMap;
139
141
  }
140
142
  async dig(depth) {
@@ -143,8 +145,8 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
143
145
  const innerBoundwitnessIndex = this.payloadSchemas.findIndex((item) => item === import_boundwitness_model.BoundWitnessSchema);
144
146
  if (innerBoundwitnessIndex > -1) {
145
147
  const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
146
- const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
147
- const innerBoundwitness = innerBoundwitnessPayload ? new BoundWitnessWrapper(
148
+ const innerBoundwitnessPayload = (await _BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
149
+ const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(
148
150
  innerBoundwitnessPayload.body(),
149
151
  (await import_core.PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body())
150
152
  ) : void 0;
@@ -162,7 +164,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
162
164
  return this._payloads;
163
165
  }
164
166
  async getMissingPayloads() {
165
- const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads());
167
+ const payloadMap = await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
166
168
  return this.payloadHashes.filter((hash) => !payloadMap[hash]);
167
169
  }
168
170
  async getPayloads() {
@@ -183,7 +185,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
183
185
  }, []);
184
186
  }
185
187
  async payloadMap() {
186
- this._payloadMap = this._payloadMap ?? await BoundWitnessWrapper.mapPayloads(await this.getPayloads());
188
+ this._payloadMap = this._payloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
187
189
  return this._payloadMap;
188
190
  }
189
191
  async payloadsByHashes(hashes) {
@@ -191,7 +193,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
191
193
  return hashes.map((hash) => (0, import_assert.assertEx)(map[hash], "Hash not found"));
192
194
  }
193
195
  async payloadsBySchema(schema) {
194
- return (await this.getPayloads()).filter((payload) => payload?.schema === schema);
196
+ return (await this.getPayloads()).filter((payload) => (payload == null ? void 0 : payload.schema) === schema);
195
197
  }
196
198
  prev(address) {
197
199
  return this.previousHashes[this.addresses.findIndex((addr) => address === addr)];
@@ -202,7 +204,7 @@ class BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
202
204
  async validate() {
203
205
  return await new import_boundwitness_validator.BoundWitnessValidator(this.boundwitness).validate();
204
206
  }
205
- }
207
+ };
206
208
  // Annotate the CommonJS export names for ESM import in node:
207
209
  0 && (module.exports = {
208
210
  BoundWitnessWrapper
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitnessPayload } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { DataLike, PayloadHasher } from '@xyo-network/core'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\nimport { Promisable } from '@xyo-network/promise'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: PayloadWrapper[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: PayloadWrapper<TPayload>[]\n private isBoundWitnessWrapper = true\n\n protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap<TPayload>(payload))) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap<Payload>(error))) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): PayloadWrapper<TPayload>[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: DataLike) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload()\n assertEx(payload && isBoundWitnessPayload(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitnessPayload(payload) ? payload : undefined\n return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = payload\n return map\n },\n {} as Record<string, TPayload>,\n )\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = PayloadWrapper.wrap(payload)\n return map\n },\n {} as Record<string, PayloadWrapper<TPayload>>,\n )\n }\n\n static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> {\n const hydratedObj = typeof obj === 'string' ? JSON.parse(obj) : obj\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n const castWrapper = hydratedObj as BoundWitnessWrapper<T, P>\n const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj as T, payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch (_ex) {\n return undefined\n }\n }\n\n static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P> {\n switch (typeof obj) {\n case 'object': {\n const newWrapper = new BoundWitnessWrapper<T, P>(assertEx(BoundWitnessWrapper.unwrap<T>(obj)), payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getAllPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.body() as unknown as TBoundWitness,\n (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body() as unknown as TBoundWitness),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getAllPayloads(): Promise<TPayload[]> {\n return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getPayloads(): Promise<TPayload[]> {\n return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getWrappedModuleErrors(): Promisable<PayloadWrapper[]> {\n return this._moduleErrors\n }\n\n getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n hashesBySchema(schema: string) {\n return this.payloadSchemas.reduce<string[]>((prev, payloadSchema, index) => {\n if (payloadSchema === schema) {\n prev.push(this.payloadHashes[index])\n }\n return prev\n }, [])\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.findIndex((addr) => address === addr)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitnessPayload } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { DataLike, PayloadHasher } from '@xyo-network/core'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\nimport { Promisable } from '@xyo-network/promise'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: PayloadWrapper[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: PayloadWrapper<TPayload>[]\n private isBoundWitnessWrapper = true\n\n protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap<TPayload>(payload))) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap<Payload>(error))) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): PayloadWrapper<TPayload>[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: DataLike) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload()\n assertEx(payload && isBoundWitnessPayload(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitnessPayload(payload) ? payload : undefined\n return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = payload\n return map\n },\n {} as Record<string, TPayload>,\n )\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = PayloadWrapper.wrap(payload)\n return map\n },\n {} as Record<string, PayloadWrapper<TPayload>>,\n )\n }\n\n static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> {\n const hydratedObj = typeof obj === 'string' ? JSON.parse(obj) : obj\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n const castWrapper = hydratedObj as BoundWitnessWrapper<T, P>\n const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj as T, payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch (_ex) {\n return undefined\n }\n }\n\n static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P> {\n switch (typeof obj) {\n case 'object': {\n const newWrapper = new BoundWitnessWrapper<T, P>(assertEx(BoundWitnessWrapper.unwrap<T>(obj)), payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getAllPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.body() as unknown as TBoundWitness,\n (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body() as unknown as TBoundWitness),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getAllPayloads(): Promise<TPayload[]> {\n return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getPayloads(): Promise<TPayload[]> {\n return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getWrappedModuleErrors(): Promisable<PayloadWrapper[]> {\n return this._moduleErrors\n }\n\n getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n hashesBySchema(schema: string) {\n return this.payloadSchemas.reduce<string[]>((prev, payloadSchema, index) => {\n if (payloadSchema === schema) {\n prev.push(this.payloadHashes[index])\n }\n return prev\n }, [])\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.findIndex((addr) => address === addr)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,4 @@
1
+ // src/BoundWitnessWrapper.ts
1
2
  import { assertEx } from "@xylabs/assert";
2
3
  import { exists } from "@xylabs/exists";
3
4
  import { compact } from "@xylabs/lodash";
@@ -5,7 +6,7 @@ import { BoundWitnessSchema, isBoundWitnessPayload } from "@xyo-network/boundwit
5
6
  import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
6
7
  import { PayloadHasher } from "@xyo-network/core";
7
8
  import { PayloadWrapper, PayloadWrapperBase } from "@xyo-network/payload-wrapper";
8
- class BoundWitnessWrapper extends PayloadWrapperBase {
9
+ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase {
9
10
  _allPayloadMap;
10
11
  _moduleErrors;
11
12
  _payloadMap;
@@ -35,18 +36,18 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
35
36
  return this.boundwitness.previous_hashes;
36
37
  }
37
38
  static as(value) {
38
- return value instanceof BoundWitnessWrapper ? value : null;
39
+ return value instanceof _BoundWitnessWrapper ? value : null;
39
40
  }
40
41
  static async load(address) {
41
42
  const wrapper = await PayloadWrapper.load(address);
42
- const payload = wrapper?.payload();
43
+ const payload = wrapper == null ? void 0 : wrapper.payload();
43
44
  assertEx(payload && isBoundWitnessPayload(payload), "Attempt to load non-boundwitness");
44
45
  const boundWitness = payload && isBoundWitnessPayload(payload) ? payload : void 0;
45
- return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null;
46
+ return boundWitness ? _BoundWitnessWrapper.wrap(boundWitness) : null;
46
47
  }
47
48
  static async mapPayloads(payloads) {
48
49
  return (await Promise.all(
49
- payloads?.map(async (payload) => {
50
+ payloads == null ? void 0 : payloads.map(async (payload) => {
50
51
  const unwrapped = assertEx(PayloadWrapper.unwrap(payload));
51
52
  return [unwrapped, await PayloadHasher.hashAsync(unwrapped)];
52
53
  })
@@ -60,7 +61,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
60
61
  }
61
62
  static async mapWrappedPayloads(payloads) {
62
63
  return (await Promise.all(
63
- payloads?.map(async (payload) => {
64
+ payloads == null ? void 0 : payloads.map(async (payload) => {
64
65
  const unwrapped = assertEx(PayloadWrapper.unwrap(payload));
65
66
  return [unwrapped, await PayloadHasher.hashAsync(unwrapped)];
66
67
  })
@@ -78,7 +79,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
78
79
  switch (typeof hydratedObj) {
79
80
  case "object": {
80
81
  const castWrapper = hydratedObj;
81
- const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj, payloads);
82
+ const newWrapper = (castWrapper == null ? void 0 : castWrapper.isBoundWitnessWrapper) ? castWrapper : new _BoundWitnessWrapper(hydratedObj, payloads);
82
83
  return newWrapper;
83
84
  }
84
85
  }
@@ -96,7 +97,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
96
97
  static wrap(obj, payloads) {
97
98
  switch (typeof obj) {
98
99
  case "object": {
99
- const newWrapper = new BoundWitnessWrapper(assertEx(BoundWitnessWrapper.unwrap(obj)), payloads);
100
+ const newWrapper = new _BoundWitnessWrapper(assertEx(_BoundWitnessWrapper.unwrap(obj)), payloads);
100
101
  return newWrapper;
101
102
  }
102
103
  }
@@ -105,13 +106,13 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
105
106
  const result = {};
106
107
  await Promise.all(
107
108
  boundWitnesses.map(async (payload) => {
108
- result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload);
109
+ result[await _BoundWitnessWrapper.hashAsync(payload)] = _BoundWitnessWrapper.parse(payload);
109
110
  })
110
111
  );
111
112
  return result;
112
113
  }
113
114
  async allPayloadMap() {
114
- this._allPayloadMap = this._allPayloadMap ?? await BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
115
+ this._allPayloadMap = this._allPayloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
115
116
  return this._allPayloadMap;
116
117
  }
117
118
  async dig(depth) {
@@ -120,8 +121,8 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
120
121
  const innerBoundwitnessIndex = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema);
121
122
  if (innerBoundwitnessIndex > -1) {
122
123
  const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
123
- const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
124
- const innerBoundwitness = innerBoundwitnessPayload ? new BoundWitnessWrapper(
124
+ const innerBoundwitnessPayload = (await _BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
125
+ const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(
125
126
  innerBoundwitnessPayload.body(),
126
127
  (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body())
127
128
  ) : void 0;
@@ -139,7 +140,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
139
140
  return this._payloads;
140
141
  }
141
142
  async getMissingPayloads() {
142
- const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads());
143
+ const payloadMap = await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
143
144
  return this.payloadHashes.filter((hash) => !payloadMap[hash]);
144
145
  }
145
146
  async getPayloads() {
@@ -160,7 +161,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
160
161
  }, []);
161
162
  }
162
163
  async payloadMap() {
163
- this._payloadMap = this._payloadMap ?? await BoundWitnessWrapper.mapPayloads(await this.getPayloads());
164
+ this._payloadMap = this._payloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
164
165
  return this._payloadMap;
165
166
  }
166
167
  async payloadsByHashes(hashes) {
@@ -168,7 +169,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
168
169
  return hashes.map((hash) => assertEx(map[hash], "Hash not found"));
169
170
  }
170
171
  async payloadsBySchema(schema) {
171
- return (await this.getPayloads()).filter((payload) => payload?.schema === schema);
172
+ return (await this.getPayloads()).filter((payload) => (payload == null ? void 0 : payload.schema) === schema);
172
173
  }
173
174
  prev(address) {
174
175
  return this.previousHashes[this.addresses.findIndex((addr) => address === addr)];
@@ -179,7 +180,7 @@ class BoundWitnessWrapper extends PayloadWrapperBase {
179
180
  async validate() {
180
181
  return await new BoundWitnessValidator(this.boundwitness).validate();
181
182
  }
182
- }
183
+ };
183
184
  export {
184
185
  BoundWitnessWrapper
185
186
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitnessPayload } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { DataLike, PayloadHasher } from '@xyo-network/core'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\nimport { Promisable } from '@xyo-network/promise'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: PayloadWrapper[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: PayloadWrapper<TPayload>[]\n private isBoundWitnessWrapper = true\n\n protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap<TPayload>(payload))) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap<Payload>(error))) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): PayloadWrapper<TPayload>[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: DataLike) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload()\n assertEx(payload && isBoundWitnessPayload(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitnessPayload(payload) ? payload : undefined\n return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = payload\n return map\n },\n {} as Record<string, TPayload>,\n )\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = PayloadWrapper.wrap(payload)\n return map\n },\n {} as Record<string, PayloadWrapper<TPayload>>,\n )\n }\n\n static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> {\n const hydratedObj = typeof obj === 'string' ? JSON.parse(obj) : obj\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n const castWrapper = hydratedObj as BoundWitnessWrapper<T, P>\n const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj as T, payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch (_ex) {\n return undefined\n }\n }\n\n static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P> {\n switch (typeof obj) {\n case 'object': {\n const newWrapper = new BoundWitnessWrapper<T, P>(assertEx(BoundWitnessWrapper.unwrap<T>(obj)), payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getAllPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.body() as unknown as TBoundWitness,\n (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body() as unknown as TBoundWitness),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getAllPayloads(): Promise<TPayload[]> {\n return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getPayloads(): Promise<TPayload[]> {\n return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getWrappedModuleErrors(): Promisable<PayloadWrapper[]> {\n return this._moduleErrors\n }\n\n getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n hashesBySchema(schema: string) {\n return this.payloadSchemas.reduce<string[]>((prev, payloadSchema, index) => {\n if (payloadSchema === schema) {\n prev.push(this.payloadHashes[index])\n }\n return prev\n }, [])\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.findIndex((addr) => address === addr)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAuB,oBAAoB,6BAA6B;AACxE,SAAS,6BAA6B;AACtC,SAAmB,qBAAqB;AAExC,SAAS,gBAAgB,0BAA0B;AAG5C,MAAM,4BAGH,mBAAkC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EAEtB,YAAY,cAA6B,UAAqC,cAAwC;AAC9H,UAAM,YAAY;AAClB,SAAK,YAAY,WAAW,QAAQ,SAAS,OAAO,MAAM,EAAE,IAAI,CAAC,YAAY,eAAe,KAAe,OAAO,CAAC,CAAC,IAAI,CAAC;AACzH,SAAK,gBAAgB,eAAe,QAAQ,aAAa,OAAO,MAAM,EAAE,IAAI,CAAC,UAAU,eAAe,KAAc,KAAK,CAAC,CAAC,IAAI,CAAC;AAAA,EAClI;AAAA,EAEA,IAAI,YAAY;AACd,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,eAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,gBAAgB;AAClB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,gBAA4C;AAC9C,WAAO,OAAO,OAAO,KAAK,aAAa,CAAC,CAAC;AAAA,EAC3C;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,OAAO,GAA0C,OAAgB;AAC/D,WAAO,iBAAiB,sBAAuB,QAAmC;AAAA,EACpF;AAAA,EAEA,aAAa,KAAK,SAAmB;AACnC,UAAM,UAAU,MAAM,eAAe,KAAK,OAAO;AACjD,UAAM,UAAU,SAAS,QAAQ;AACjC,aAAS,WAAW,sBAAsB,OAAO,GAAG,kCAAkC;AAEtF,UAAM,eAAyC,WAAW,sBAAsB,OAAO,IAAI,UAAU;AACrG,WAAO,eAAe,oBAAoB,KAAK,YAAY,IAAI;AAAA,EACjE;AAAA,EAEA,aAAa,YAAsC,UAAyD;AAC1G,YACE,MAAM,QAAQ;AAAA,MACZ,UAAU,IAAiC,OAAO,YAAY;AAC5D,cAAM,YAAY,SAAS,eAAe,OAAiB,OAAO,CAAC;AACnE,eAAO,CAAC,WAAW,MAAM,cAAc,UAAU,SAAS,CAAC;AAAA,MAC7D,CAAC;AAAA,IACH,GACA;AAAA,MACA,CAAC,KAAK,CAAC,SAAS,WAAW,MAAM;AAC/B,YAAI,WAAW,IAAI;AACnB,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,aAAa,mBAA6C,UAAyE;AACjI,YACE,MAAM,QAAQ;AAAA,MACZ,UAAU,IAAiC,OAAO,YAAY;AAC5D,cAAM,YAAY,SAAS,eAAe,OAAiB,OAAO,CAAC;AACnE,eAAO,CAAC,WAAW,MAAM,cAAc,UAAU,SAAS,CAAC;AAAA,MAC7D,CAAC;AAAA,IACH,GACA;AAAA,MACA,CAAC,KAAK,CAAC,SAAS,WAAW,MAAM;AAC/B,YAAI,WAAW,IAAI,eAAe,KAAK,OAAO;AAC9C,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,MAAiD,KAAc,UAA2C;AAC/G,UAAM,cAAc,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAI;AAChE,aAAS,CAAC,MAAM,QAAQ,WAAW,GAAG,mDAAmD;AACzF,YAAQ,OAAO,aAAa;AAAA,MAC1B,KAAK,UAAU;AACb,cAAM,cAAc;AACpB,cAAM,aAAa,aAAa,wBAAwB,cAAc,IAAI,oBAAoB,aAAkB,QAAQ;AAIxH,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,MAAM,oBAAoB,OAAO,GAAG,GAAG;AAAA,EAC/C;AAAA,EAEA,OAAO,SAAoD,KAAc,UAAuD;AAC9H,QAAI,QAAQ;AAAW,aAAO;AAC9B,QAAI;AACF,aAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,IACjC,SAAS,KAAK;AACZ,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO,KAAgD,KAAgC,UAA2C;AAChI,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,cAAM,aAAa,IAAI,oBAA0B,SAAS,oBAAoB,OAAU,GAAG,CAAC,GAAG,QAAQ;AAIvG,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,WAAmC,gBAAiG;AAC/I,UAAM,SAAiD,CAAC;AACxD,UAAM,QAAQ;AAAA,MACZ,eAAe,IAAI,OAAO,YAAY;AACpC,eAAO,MAAM,oBAAoB,UAAU,OAAO,CAAC,IAAI,oBAAoB,MAAM,OAAO;AAAA,MAC1F,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,gBAAmD;AACvD,SAAK,iBAAiB,KAAK,kBAAmB,MAAM,oBAAoB,YAAsB,MAAM,KAAK,eAAe,CAAC;AACzH,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,IAAI,OAA6D;AACrE,QAAI,UAAU;AAAG,aAAO;AAExB,UAAM,yBAAiC,KAAK,eAAe,UAAU,CAAC,SAAS,SAAS,kBAAkB;AAC1G,QAAI,yBAAyB,IAAI;AAC/B,YAAM,wBAAgC,KAAK,cAAc,sBAAsB;AAC/E,YAAM,4BAA4B,MAAM,oBAAoB,mBAAmB,MAAM,KAAK,YAAY,CAAC,GAAG,qBAAqB;AAC/H,YAAM,oBAAoE,2BACtE,IAAI;AAAA,QACF,yBAAyB,KAAK;AAAA,SAC7B,MAAM,cAAc,cAAc,KAAK,eAAe,qBAAqB,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAA6B;AAAA,MACtI,IACA;AACJ,UAAI,mBAAmB;AACrB,eAAO,kBAAkB,IAAI,QAAQ,QAAQ,IAAI,MAAS;AAAA,MAC5D;AAAA,IACF;AACA,aAAS,CAAC,OAAO,gCAAgC,KAAK,GAAG;AACzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,iBAAsC;AAC1C,YAAQ,MAAM,KAAK,sBAAsB,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAAA,EAChF;AAAA,EAEA,wBAAgE;AAC9D,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,qBAAqB;AACzB,UAAM,aAAa,MAAM,oBAAoB,YAAY,MAAM,KAAK,YAAY,CAAC;AACjF,WAAO,KAAK,cAAc,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,cAAmC;AACvC,YAAQ,MAAM,KAAK,mBAAmB,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAAA,EAC7E;AAAA,EAEA,yBAAuD;AACrD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,qBAA6D;AAC3D,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,eAAe,QAAgB;AAC7B,WAAO,KAAK,eAAe,OAAiB,CAAC,MAAM,eAAe,UAAU;AAC1E,UAAI,kBAAkB,QAAQ;AAC5B,aAAK,KAAK,KAAK,cAAc,KAAK,CAAC;AAAA,MACrC;AACA,aAAO;AAAA,IACT,GAAG,CAAC,CAAC;AAAA,EACP;AAAA,EAEA,MAAM,aAAgD;AACpD,SAAK,cAAc,KAAK,eAAgB,MAAM,oBAAoB,YAAsB,MAAM,KAAK,YAAY,CAAC;AAChH,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,iBAAqC,QAAgC;AACzE,UAAM,MAAM,MAAM,KAAK,WAAW;AAClC,WAAO,OAAO,IAAO,CAAC,SAAS,SAAS,IAAI,IAAI,GAAG,gBAAgB,CAAM;AAAA,EAC3E;AAAA,EAEA,MAAM,iBAAqC,QAA8B;AACvE,YAAQ,MAAM,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,SAAS,WAAW,MAAM;AAAA,EAClF;AAAA,EAEA,KAAK,SAAiB;AACpB,WAAO,KAAK,eAAe,KAAK,UAAU,UAAU,CAAC,SAAS,YAAY,IAAI,CAAC;AAAA,EACjF;AAAA,EAEA,WAAW;AACT,WAAO,CAAC,KAAK,cAAc,KAAK,cAAc,IAAI,CAAC,YAAY,QAAQ,KAAK,CAAC,CAAC;AAAA,EAChF;AAAA,EAEA,MAAe,WAA6B;AAC1C,WAAO,MAAM,IAAI,sBAAsB,KAAK,YAAY,EAAE,SAAS;AAAA,EACrE;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitness, BoundWitnessSchema, isBoundWitnessPayload } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { DataLike, PayloadHasher } from '@xyo-network/core'\nimport { Payload } from '@xyo-network/payload-model'\nimport { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\nimport { Promisable } from '@xyo-network/promise'\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _allPayloadMap: Record<string, TPayload> | undefined\n private _moduleErrors: PayloadWrapper[]\n private _payloadMap: Record<string, TPayload> | undefined\n private _payloads: PayloadWrapper<TPayload>[]\n private isBoundWitnessWrapper = true\n\n protected constructor(boundwitness: TBoundWitness, payloads?: (TPayload | undefined)[], moduleErrors?: (Payload | undefined)[]) {\n super(boundwitness)\n this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap<TPayload>(payload))) : []\n this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap<Payload>(error))) : []\n }\n\n get addresses() {\n return this.boundwitness.addresses\n }\n\n get boundwitness() {\n return this.obj\n }\n\n get payloadHashes() {\n return this.boundwitness.payload_hashes\n }\n\n get payloadSchemas() {\n return this.boundwitness.payload_schemas\n }\n\n get payloadsArray(): PayloadWrapper<TPayload>[] {\n return Object.values(this._payloads ?? {})\n }\n\n get previousHashes() {\n return this.boundwitness.previous_hashes\n }\n\n static as<T extends BoundWitness = BoundWitness>(value: unknown) {\n return value instanceof BoundWitnessWrapper ? (value as BoundWitnessWrapper<T>) : null\n }\n\n static async load(address: DataLike) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload()\n assertEx(payload && isBoundWitnessPayload(payload), 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitnessPayload(payload) ? payload : undefined\n return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static async mapPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, TPayload>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = payload\n return map\n },\n {} as Record<string, TPayload>,\n )\n }\n\n static async mapWrappedPayloads<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<string, PayloadWrapper<TPayload>>> {\n return (\n await Promise.all(\n payloads?.map<Promise<[TPayload, string]>>(async (payload) => {\n const unwrapped = assertEx(PayloadWrapper.unwrap<TPayload>(payload))\n return [unwrapped, await PayloadHasher.hashAsync(unwrapped)]\n }),\n )\n ).reduce(\n (map, [payload, payloadHash]) => {\n map[payloadHash] = PayloadWrapper.wrap(payload)\n return map\n },\n {} as Record<string, PayloadWrapper<TPayload>>,\n )\n }\n\n static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> {\n const hydratedObj = typeof obj === 'string' ? JSON.parse(obj) : obj\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n const castWrapper = hydratedObj as BoundWitnessWrapper<T, P>\n const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj as T, payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch (_ex) {\n return undefined\n }\n }\n\n static wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): BoundWitnessWrapper<T, P> {\n switch (typeof obj) {\n case 'object': {\n const newWrapper = new BoundWitnessWrapper<T, P>(assertEx(BoundWitnessWrapper.unwrap<T>(obj)), payloads)\n /*if (!newWrapper.getValid()) {\n console.warn('Wrapped invalid BoundWitness')\n }*/\n return newWrapper\n }\n }\n }\n\n static async wrappedMap<T extends BoundWitness>(boundWitnesses: (T | BoundWitnessWrapper<T>)[]): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload)\n }),\n )\n return result\n }\n\n async allPayloadMap(): Promise<Record<string, TPayload>> {\n this._allPayloadMap = this._allPayloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getAllPayloads()))\n return this._allPayloadMap\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: string = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash]\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = innerBoundwitnessPayload\n ? new BoundWitnessWrapper<TBoundWitness>(\n innerBoundwitnessPayload.body() as unknown as TBoundWitness,\n (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body() as unknown as TBoundWitness),\n )\n : undefined\n if (innerBoundwitness) {\n return innerBoundwitness.dig(depth ? depth - 1 : undefined)\n }\n }\n assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`)\n return this\n }\n\n async getAllPayloads(): Promise<TPayload[]> {\n return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getAllWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n async getMissingPayloads() {\n const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads())\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getPayloads(): Promise<TPayload[]> {\n return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload())\n }\n\n getWrappedModuleErrors(): Promisable<PayloadWrapper[]> {\n return this._moduleErrors\n }\n\n getWrappedPayloads(): Promisable<PayloadWrapper<TPayload>[]> {\n return this._payloads\n }\n\n hashesBySchema(schema: string) {\n return this.payloadSchemas.reduce<string[]>((prev, payloadSchema, index) => {\n if (payloadSchema === schema) {\n prev.push(this.payloadHashes[index])\n }\n return prev\n }, [])\n }\n\n async payloadMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.mapPayloads<TPayload>(await this.getPayloads()))\n return this._payloadMap\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsBySchema<T extends TPayload>(schema: string): Promise<T[]> {\n return (await this.getPayloads()).filter((payload) => payload?.schema === schema) as T[]\n }\n\n prev(address: string) {\n return this.previousHashes[this.addresses.findIndex((addr) => address === addr)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from './BoundWitnessWrapper';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}