@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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"}
@@ -1,4 +1,3 @@
1
- // src/BoundWitnessWrapper.ts
2
1
  import { assertEx } from "@xylabs/assert";
3
2
  import { exists } from "@xylabs/exists";
4
3
  import { compact } from "@xylabs/lodash";
@@ -6,7 +5,7 @@ import { BoundWitnessSchema, isBoundWitnessPayload } from "@xyo-network/boundwit
6
5
  import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
7
6
  import { PayloadHasher } from "@xyo-network/core";
8
7
  import { PayloadWrapper, PayloadWrapperBase } from "@xyo-network/payload-wrapper";
9
- var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase {
8
+ class BoundWitnessWrapper extends PayloadWrapperBase {
10
9
  _allPayloadMap;
11
10
  _moduleErrors;
12
11
  _payloadMap;
@@ -36,14 +35,14 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
36
35
  return this.boundwitness.previous_hashes;
37
36
  }
38
37
  static as(value) {
39
- return value instanceof _BoundWitnessWrapper ? value : null;
38
+ return value instanceof BoundWitnessWrapper ? value : null;
40
39
  }
41
40
  static async load(address) {
42
41
  const wrapper = await PayloadWrapper.load(address);
43
42
  const payload = wrapper?.payload();
44
43
  assertEx(payload && isBoundWitnessPayload(payload), "Attempt to load non-boundwitness");
45
44
  const boundWitness = payload && isBoundWitnessPayload(payload) ? payload : void 0;
46
- return boundWitness ? _BoundWitnessWrapper.wrap(boundWitness) : null;
45
+ return boundWitness ? BoundWitnessWrapper.wrap(boundWitness) : null;
47
46
  }
48
47
  static async mapPayloads(payloads) {
49
48
  return (await Promise.all(
@@ -79,7 +78,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
79
78
  switch (typeof hydratedObj) {
80
79
  case "object": {
81
80
  const castWrapper = hydratedObj;
82
- const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new _BoundWitnessWrapper(hydratedObj, payloads);
81
+ const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new BoundWitnessWrapper(hydratedObj, payloads);
83
82
  return newWrapper;
84
83
  }
85
84
  }
@@ -97,7 +96,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
97
96
  static wrap(obj, payloads) {
98
97
  switch (typeof obj) {
99
98
  case "object": {
100
- const newWrapper = new _BoundWitnessWrapper(assertEx(_BoundWitnessWrapper.unwrap(obj)), payloads);
99
+ const newWrapper = new BoundWitnessWrapper(assertEx(BoundWitnessWrapper.unwrap(obj)), payloads);
101
100
  return newWrapper;
102
101
  }
103
102
  }
@@ -106,13 +105,13 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
106
105
  const result = {};
107
106
  await Promise.all(
108
107
  boundWitnesses.map(async (payload) => {
109
- result[await _BoundWitnessWrapper.hashAsync(payload)] = _BoundWitnessWrapper.parse(payload);
108
+ result[await BoundWitnessWrapper.hashAsync(payload)] = BoundWitnessWrapper.parse(payload);
110
109
  })
111
110
  );
112
111
  return result;
113
112
  }
114
113
  async allPayloadMap() {
115
- this._allPayloadMap = this._allPayloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
114
+ this._allPayloadMap = this._allPayloadMap ?? await BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
116
115
  return this._allPayloadMap;
117
116
  }
118
117
  async dig(depth) {
@@ -121,8 +120,8 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
121
120
  const innerBoundwitnessIndex = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema);
122
121
  if (innerBoundwitnessIndex > -1) {
123
122
  const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
124
- const innerBoundwitnessPayload = (await _BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
125
- const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(
123
+ const innerBoundwitnessPayload = (await BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
124
+ const innerBoundwitness = innerBoundwitnessPayload ? new BoundWitnessWrapper(
126
125
  innerBoundwitnessPayload.body(),
127
126
  (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body())
128
127
  ) : void 0;
@@ -140,7 +139,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
140
139
  return this._payloads;
141
140
  }
142
141
  async getMissingPayloads() {
143
- const payloadMap = await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
142
+ const payloadMap = await BoundWitnessWrapper.mapPayloads(await this.getPayloads());
144
143
  return this.payloadHashes.filter((hash) => !payloadMap[hash]);
145
144
  }
146
145
  async getPayloads() {
@@ -161,7 +160,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
161
160
  }, []);
162
161
  }
163
162
  async payloadMap() {
164
- this._payloadMap = this._payloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
163
+ this._payloadMap = this._payloadMap ?? await BoundWitnessWrapper.mapPayloads(await this.getPayloads());
165
164
  return this._payloadMap;
166
165
  }
167
166
  async payloadsByHashes(hashes) {
@@ -180,7 +179,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
180
179
  async validate() {
181
180
  return await new BoundWitnessValidator(this.boundwitness).validate();
182
181
  }
183
- };
182
+ }
184
183
  export {
185
184
  BoundWitnessWrapper
186
185
  };
@@ -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":[]}
@@ -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"}
@@ -1,187 +1,2 @@
1
- // src/BoundWitnessWrapper.ts
2
- import { assertEx } from "@xylabs/assert";
3
- import { exists } from "@xylabs/exists";
4
- import { compact } from "@xylabs/lodash";
5
- import { BoundWitnessSchema, isBoundWitnessPayload } from "@xyo-network/boundwitness-model";
6
- import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
7
- import { PayloadHasher } from "@xyo-network/core";
8
- import { PayloadWrapper, PayloadWrapperBase } from "@xyo-network/payload-wrapper";
9
- var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase {
10
- _allPayloadMap;
11
- _moduleErrors;
12
- _payloadMap;
13
- _payloads;
14
- isBoundWitnessWrapper = true;
15
- constructor(boundwitness, payloads, moduleErrors) {
16
- super(boundwitness);
17
- this._payloads = payloads ? compact(payloads.filter(exists).map((payload) => PayloadWrapper.wrap(payload))) : [];
18
- this._moduleErrors = moduleErrors ? compact(moduleErrors.filter(exists).map((error) => PayloadWrapper.wrap(error))) : [];
19
- }
20
- get addresses() {
21
- return this.boundwitness.addresses;
22
- }
23
- get boundwitness() {
24
- return this.obj;
25
- }
26
- get payloadHashes() {
27
- return this.boundwitness.payload_hashes;
28
- }
29
- get payloadSchemas() {
30
- return this.boundwitness.payload_schemas;
31
- }
32
- get payloadsArray() {
33
- return Object.values(this._payloads ?? {});
34
- }
35
- get previousHashes() {
36
- return this.boundwitness.previous_hashes;
37
- }
38
- static as(value) {
39
- return value instanceof _BoundWitnessWrapper ? value : null;
40
- }
41
- static async load(address) {
42
- const wrapper = await PayloadWrapper.load(address);
43
- const payload = wrapper?.payload();
44
- assertEx(payload && isBoundWitnessPayload(payload), "Attempt to load non-boundwitness");
45
- const boundWitness = payload && isBoundWitnessPayload(payload) ? payload : void 0;
46
- return boundWitness ? _BoundWitnessWrapper.wrap(boundWitness) : null;
47
- }
48
- static async mapPayloads(payloads) {
49
- return (await Promise.all(
50
- payloads?.map(async (payload) => {
51
- const unwrapped = assertEx(PayloadWrapper.unwrap(payload));
52
- return [unwrapped, await PayloadHasher.hashAsync(unwrapped)];
53
- })
54
- )).reduce(
55
- (map, [payload, payloadHash]) => {
56
- map[payloadHash] = payload;
57
- return map;
58
- },
59
- {}
60
- );
61
- }
62
- static async mapWrappedPayloads(payloads) {
63
- return (await Promise.all(
64
- payloads?.map(async (payload) => {
65
- const unwrapped = assertEx(PayloadWrapper.unwrap(payload));
66
- return [unwrapped, await PayloadHasher.hashAsync(unwrapped)];
67
- })
68
- )).reduce(
69
- (map, [payload, payloadHash]) => {
70
- map[payloadHash] = PayloadWrapper.wrap(payload);
71
- return map;
72
- },
73
- {}
74
- );
75
- }
76
- static parse(obj, payloads) {
77
- const hydratedObj = typeof obj === "string" ? JSON.parse(obj) : obj;
78
- assertEx(!Array.isArray(hydratedObj), "Array can not be converted to BoundWitnessWrapper");
79
- switch (typeof hydratedObj) {
80
- case "object": {
81
- const castWrapper = hydratedObj;
82
- const newWrapper = castWrapper?.isBoundWitnessWrapper ? castWrapper : new _BoundWitnessWrapper(hydratedObj, payloads);
83
- return newWrapper;
84
- }
85
- }
86
- throw Error(`Unable to parse [${typeof obj}]`);
87
- }
88
- static tryParse(obj, payloads) {
89
- if (obj === void 0)
90
- return void 0;
91
- try {
92
- return this.parse(obj, payloads);
93
- } catch (_ex) {
94
- return void 0;
95
- }
96
- }
97
- static wrap(obj, payloads) {
98
- switch (typeof obj) {
99
- case "object": {
100
- const newWrapper = new _BoundWitnessWrapper(assertEx(_BoundWitnessWrapper.unwrap(obj)), payloads);
101
- return newWrapper;
102
- }
103
- }
104
- }
105
- static async wrappedMap(boundWitnesses) {
106
- const result = {};
107
- await Promise.all(
108
- boundWitnesses.map(async (payload) => {
109
- result[await _BoundWitnessWrapper.hashAsync(payload)] = _BoundWitnessWrapper.parse(payload);
110
- })
111
- );
112
- return result;
113
- }
114
- async allPayloadMap() {
115
- this._allPayloadMap = this._allPayloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getAllPayloads());
116
- return this._allPayloadMap;
117
- }
118
- async dig(depth) {
119
- if (depth === 0)
120
- return this;
121
- const innerBoundwitnessIndex = this.payloadSchemas.findIndex((item) => item === BoundWitnessSchema);
122
- if (innerBoundwitnessIndex > -1) {
123
- const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
124
- const innerBoundwitnessPayload = (await _BoundWitnessWrapper.mapWrappedPayloads(await this.getPayloads()))[innerBoundwitnessHash];
125
- const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(
126
- innerBoundwitnessPayload.body(),
127
- (await PayloadHasher.filterExclude(this.payloadsArray, innerBoundwitnessHash)).map((item) => item.body())
128
- ) : void 0;
129
- if (innerBoundwitness) {
130
- return innerBoundwitness.dig(depth ? depth - 1 : void 0);
131
- }
132
- }
133
- assertEx(!depth, `Dig failed [Remaining Depth: ${depth}]`);
134
- return this;
135
- }
136
- async getAllPayloads() {
137
- return (await this.getAllWrappedPayloads()).map((wrapper) => wrapper.payload());
138
- }
139
- getAllWrappedPayloads() {
140
- return this._payloads;
141
- }
142
- async getMissingPayloads() {
143
- const payloadMap = await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
144
- return this.payloadHashes.filter((hash) => !payloadMap[hash]);
145
- }
146
- async getPayloads() {
147
- return (await this.getWrappedPayloads()).map((wrapper) => wrapper.payload());
148
- }
149
- getWrappedModuleErrors() {
150
- return this._moduleErrors;
151
- }
152
- getWrappedPayloads() {
153
- return this._payloads;
154
- }
155
- hashesBySchema(schema) {
156
- return this.payloadSchemas.reduce((prev, payloadSchema, index) => {
157
- if (payloadSchema === schema) {
158
- prev.push(this.payloadHashes[index]);
159
- }
160
- return prev;
161
- }, []);
162
- }
163
- async payloadMap() {
164
- this._payloadMap = this._payloadMap ?? await _BoundWitnessWrapper.mapPayloads(await this.getPayloads());
165
- return this._payloadMap;
166
- }
167
- async payloadsByHashes(hashes) {
168
- const map = await this.payloadMap();
169
- return hashes.map((hash) => assertEx(map[hash], "Hash not found"));
170
- }
171
- async payloadsBySchema(schema) {
172
- return (await this.getPayloads()).filter((payload) => payload?.schema === schema);
173
- }
174
- prev(address) {
175
- return this.previousHashes[this.addresses.findIndex((addr) => address === addr)];
176
- }
177
- toResult() {
178
- return [this.boundwitness, this.payloadsArray.map((payload) => payload.body())];
179
- }
180
- async validate() {
181
- return await new BoundWitnessValidator(this.boundwitness).validate();
182
- }
183
- };
184
- export {
185
- BoundWitnessWrapper
186
- };
1
+ export * from "./BoundWitnessWrapper";
187
2
  //# sourceMappingURL=index.js.map
@@ -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/index.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\n"],"mappings":"AAAA,cAAc;","names":[]}