@xyo-network/boundwitness-wrapper 2.110.9 → 2.110.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/QueryBoundWitnessWrapper.d.cts.map +1 -1
- package/dist/browser/QueryBoundWitnessWrapper.d.mts.map +1 -1
- package/dist/browser/QueryBoundWitnessWrapper.d.ts.map +1 -1
- package/dist/browser/index.cjs +21 -26
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +21 -28
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/QueryBoundWitnessWrapper.d.cts.map +1 -1
- package/dist/neutral/QueryBoundWitnessWrapper.d.mts.map +1 -1
- package/dist/neutral/QueryBoundWitnessWrapper.d.ts.map +1 -1
- package/dist/neutral/index.cjs +21 -26
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +21 -28
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/QueryBoundWitnessWrapper.d.cts.map +1 -1
- package/dist/node/QueryBoundWitnessWrapper.d.mts.map +1 -1
- package/dist/node/QueryBoundWitnessWrapper.d.ts.map +1 -1
- package/dist/node/index.cjs +23 -26
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +23 -28
- package/dist/node/index.js.map +1 -1
- package/package.json +13 -13
- package/src/QueryBoundWitnessWrapper.ts +4 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAmBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAmBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAmBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
6
|
var __export = (target, all) => {
|
|
8
7
|
for (var name in all)
|
|
9
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -34,27 +33,21 @@ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
|
34
33
|
var import_boundwitness_validator = require("@xyo-network/boundwitness-validator");
|
|
35
34
|
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
36
35
|
var import_payload_wrapper = require("@xyo-network/payload-wrapper");
|
|
37
|
-
var isBoundWitnessWrapper =
|
|
36
|
+
var isBoundWitnessWrapper = (value) => {
|
|
38
37
|
if ((0, import_payload_wrapper.isPayloadWrapperBase)(value)) {
|
|
39
38
|
return typeof value.payloadsDataHashMap === "function";
|
|
40
39
|
}
|
|
41
40
|
return false;
|
|
42
|
-
}
|
|
41
|
+
};
|
|
43
42
|
var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
|
|
44
|
-
static {
|
|
45
|
-
__name(this, "BoundWitnessWrapper");
|
|
46
|
-
}
|
|
47
|
-
boundwitness;
|
|
48
|
-
payloads;
|
|
49
|
-
moduleErrors;
|
|
50
|
-
_payloadDataMap;
|
|
51
|
-
_payloadMap;
|
|
52
43
|
constructor(boundwitness, payloads = [], moduleErrors) {
|
|
53
44
|
super(boundwitness);
|
|
54
45
|
this.boundwitness = boundwitness;
|
|
55
46
|
this.payloads = payloads;
|
|
56
47
|
this.moduleErrors = moduleErrors;
|
|
57
48
|
}
|
|
49
|
+
_payloadDataMap;
|
|
50
|
+
_payloadMap;
|
|
58
51
|
get addresses() {
|
|
59
52
|
return this.boundwitness.addresses;
|
|
60
53
|
}
|
|
@@ -124,10 +117,12 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
124
117
|
}
|
|
125
118
|
static async wrappedDataHashMap(boundWitnesses) {
|
|
126
119
|
const result = {};
|
|
127
|
-
await Promise.all(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
await Promise.all(
|
|
121
|
+
boundWitnesses.map(async (payload) => {
|
|
122
|
+
const bw = _BoundWitnessWrapper.parse(payload);
|
|
123
|
+
result[await bw.dataHash()] = bw;
|
|
124
|
+
})
|
|
125
|
+
);
|
|
131
126
|
return result;
|
|
132
127
|
}
|
|
133
128
|
async dig(depth) {
|
|
@@ -135,7 +130,9 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
135
130
|
const innerBoundwitnessIndex = this.payloadSchemas.indexOf(import_boundwitness_model.BoundWitnessSchema);
|
|
136
131
|
if (innerBoundwitnessIndex > -1) {
|
|
137
132
|
const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
|
|
138
|
-
const innerBoundwitnessPayload = (0, import_boundwitness_model.asBoundWitness)(
|
|
133
|
+
const innerBoundwitnessPayload = (0, import_boundwitness_model.asBoundWitness)(
|
|
134
|
+
(await import_payload_builder.PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash]
|
|
135
|
+
);
|
|
139
136
|
const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(innerBoundwitnessPayload, await import_payload_builder.PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash)) : void 0;
|
|
140
137
|
if (innerBoundwitness) {
|
|
141
138
|
return innerBoundwitness.dig(depth ? depth - 1 : void 0);
|
|
@@ -183,10 +180,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
183
180
|
return this.previousHashes[this.addresses.indexOf(address)];
|
|
184
181
|
}
|
|
185
182
|
toResult() {
|
|
186
|
-
return [
|
|
187
|
-
this.boundwitness,
|
|
188
|
-
this.payloads
|
|
189
|
-
];
|
|
183
|
+
return [this.boundwitness, this.payloads];
|
|
190
184
|
}
|
|
191
185
|
async validate() {
|
|
192
186
|
return await new import_boundwitness_validator.BoundWitnessValidator(this.boundwitness).validate();
|
|
@@ -199,9 +193,6 @@ var import_lodash = require("@xylabs/lodash");
|
|
|
199
193
|
var import_payload = require("@xyo-network/payload");
|
|
200
194
|
var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
|
|
201
195
|
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper {
|
|
202
|
-
static {
|
|
203
|
-
__name(this, "QueryBoundWitnessWrapper");
|
|
204
|
-
}
|
|
205
196
|
_payloadsWithoutQuery;
|
|
206
197
|
_query;
|
|
207
198
|
static async parseQuery(obj, payloads) {
|
|
@@ -209,14 +200,18 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
209
200
|
switch (typeof obj) {
|
|
210
201
|
case "object": {
|
|
211
202
|
const castWrapper = obj;
|
|
212
|
-
|
|
213
|
-
|
|
203
|
+
return castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(
|
|
204
|
+
await import_payload.PayloadBuilder.build(obj),
|
|
205
|
+
payloads ? await Promise.all(payloads.map((payload) => import_payload.PayloadBuilder.build(payload))) : void 0
|
|
206
|
+
);
|
|
214
207
|
}
|
|
215
208
|
}
|
|
216
209
|
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
217
210
|
}
|
|
218
211
|
async getPayloadsWithoutQuery() {
|
|
219
|
-
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(
|
|
212
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(
|
|
213
|
+
(0, import_lodash.compact)((await import_payload.PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => import_payload_wrapper2.PayloadWrapper.wrap(payload)))
|
|
214
|
+
);
|
|
220
215
|
return this._payloadsWithoutQuery;
|
|
221
216
|
}
|
|
222
217
|
async getQuery() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper.js'\nexport * from './QueryBoundWitnessWrapper.js'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload\n assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: WithMeta<P>[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 getMissingPayloads() {\n const payloadMap = await this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this.payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper.js'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","import_assert","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper.js'\nexport * from './QueryBoundWitnessWrapper.js'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload\n assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: WithMeta<P>[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 getMissingPayloads() {\n const payloadMap = await this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this.payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper.js'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyB;AAEzB,oBAAyB;AACzB,gCAAiF;AACjF,oCAAsC;AACtC,6BAA+B;AAE/B,6BAAyE;AAElE,IAAM,wBAAwB,CACnC,UACuC;AACvC,UAAI,6CAAqB,KAAK,GAAG;AAC/B,WAAO,OAAQ,MAAoC,wBAAwB;AAAA,EAC7E;AACA,SAAO;AACT;AAEO,IAAM,sBAAN,MAAM,6BAGH,0CAAkC;AAAA,EAIhC,YACD,cACA,WAAiC,CAAC,GAClC,cACP;AACA,UAAM,YAAY;AAJX;AACA;AACA;AAAA,EAGT;AAAA,EATQ;AAAA,EACA;AAAA,EAUR,IAAI,YAAY;AACd,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,gBAAgB;AAClB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,OAAO,GAA0C,OAAgB;AAC/D,WAAO,iBAAiB,uBAAuB,QAAmC;AAAA,EACpF;AAAA,EAEA,aAAa,KAAK,SAAkB;AAClC,UAAM,UAAU,MAAM,sCAAe,KAAK,OAAO;AACjD,UAAM,UAAU,SAAS;AACzB,gCAAS,eAAW,0CAAe,OAAO,GAAG,MAAM,kCAAkC;AAErF,UAAM,eAAyC,eAAW,0CAAe,OAAO,IAAI,UAAU;AAC9F,WAAO,eAAe,MAAM,qBAAoB,KAAK,YAAY,IAAI;AAAA,EACvE;AAAA,EAEA,OAAO,MACL,KACA,UAC2B;AAC3B,QAAI,cAAuC;AAC3C,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,sBAAc,KAAK,MAAM,GAAG;AAC5B;AAAA,MACF;AAAA,MACA,KAAK,UAAU;AACb,gBAAI,wBAAS,GAAG,GAAG;AACjB,wBAAc;AAAA,QAChB;AACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa;AACf,UAAI,sBAA4B,WAAW,GAAG;AAC5C,eAAO;AAAA,MACT;AACA,cAAI,0CAAe,WAAW,GAAG;AAC/B,eAAO,IAAI,qBAAoB,aAAa,YAAY,CAAC,CAAC;AAAA,MAC5D;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,oBAAoB,OAAO,GAAG,GAAG;AAAA,EACnD;AAAA,EAEA,OAAO,SAAoD,KAAc,UAAiE;AACxI,QAAI,QAAQ,OAAW,QAAO;AAC9B,QAAI;AACF,aAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,IACjC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,aAAa,KACX,KACA,UACoC;AACpC,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,YAAI,eAAe,sBAAqB;AACtC,iBAAO;AAAA,QACT,WAAW,eAAe,yCAAkB,IAAI,OAAO,MAAM,8CAAoB;AAC/E,iBAAO,MAAM,qBAAoB,MAAM,IAAI,SAAS,QAAQ;AAAA,QAC9D,OAAO;AACL,iBAAO,MAAM,qBAAoB,MAAM,KAAK,QAAQ;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,mBACX,gBACiD;AACjD,UAAM,SAAiD,CAAC;AACxD,UAAM,QAAQ;AAAA,MACZ,eAAe,IAAI,OAAO,YAAY;AACpC,cAAM,KAAK,qBAAoB,MAAkB,OAAO;AACxD,eAAO,MAAM,GAAG,SAAS,CAAC,IAAI;AAAA,MAChC,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,OAA6D;AACrE,QAAI,UAAU,EAAG,QAAO;AAExB,UAAM,yBAAiC,KAAK,eAAe,QAAQ,4CAAkB;AACrF,QAAI,yBAAyB,IAAI;AAC/B,YAAM,wBAA8B,KAAK,cAAc,sBAAsB;AAC7E,YAAM,+BAA2B;AAAA,SAC9B,MAAM,sCAAe,cAAc,KAAK,QAAQ,GAAG,qBAAqB;AAAA,MAC3E;AACA,YAAM,oBACJ,2BACE,IAAI,qBAAmC,0BAA0B,MAAM,sCAAe,cAAc,KAAK,UAAU,qBAAqB,CAAC,IACzI;AACJ,UAAI,mBAAmB;AACrB,eAAO,kBAAkB,IAAI,QAAQ,QAAQ,IAAI,MAAS;AAAA,MAC5D;AAAA,IACF;AACA,gCAAS,CAAC,OAAO,MAAM,gCAAgC,KAAK,GAAG;AAC/D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,qBAAqB;AACzB,UAAM,aAAa,MAAM,KAAK,oBAAoB;AAClD,WAAO,KAAK,cAAc,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,qBAA0D;AAC9D,WAAO,MAAM,QAAQ,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,sCAAe,KAAK,OAAO,CAAC,CAAC;AAAA,EACvF;AAAA,EAEA,eAAe,QAAgB;AAC7B,UAAM,SAAmB,CAAC;AAC1B,eAAW,CAAC,OAAO,aAAa,KAAK,KAAK,eAAe,QAAQ,GAAG;AAClE,UAAI,kBAAkB,QAAQ;AAC5B,eAAO,KAAK,KAAK,cAAc,KAAK,CAAC;AAAA,MACvC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,qBAAqB,QAAqC;AAC9D,UAAM,MAAM,MAAM,KAAK,oBAAoB;AAC3C,WAAO,OAAO,IAAI,CAAC,aAAS,wBAAS,IAAI,IAAI,GAAG,MAAM,gBAAgB,CAAa;AAAA,EACrF;AAAA,EAEA,MAAM,iBAAiB,QAAqC;AAC1D,UAAM,MAAM,MAAM,KAAK,gBAAgB;AACvC,WAAO,OAAO,IAAI,CAAC,aAAS,wBAAS,IAAI,IAAI,GAAG,MAAM,gBAAgB,CAAa;AAAA,EACrF;AAAA,EAEA,iBAAqC,QAA+B;AAClE,WAAO,KAAK,SAAS,OAAO,CAAC,YAAY,SAAS,WAAW,MAAM;AAAA,EACrE;AAAA,EAEA,MAAM,sBAAiE;AACrE,SAAK,kBAAkB,KAAK,mBAAoB,MAAM,sCAAe,cAAwB,KAAK,QAAQ;AAC1G,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,kBAA6D;AACjE,SAAK,cAAc,KAAK,eAAgB,MAAM,sCAAe,UAAoB,KAAK,QAAQ;AAC9F,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,KAAK,SAAkB;AACrB,WAAO,KAAK,eAAe,KAAK,UAAU,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEA,WAAW;AACT,WAAO,CAAC,KAAK,cAAc,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,MAAe,WAA6B;AAC1C,WAAO,MAAM,IAAI,oDAAsB,KAAK,YAAY,EAAE,SAAS;AAAA,EACrE;AACF;;;AC9MA,IAAAA,iBAAyB;AACzB,oBAAwB;AAExB,qBAA+B;AAE/B,IAAAC,0BAA+B;AAIxB,IAAM,2BAAN,MAAM,kCAA0D,oBAAuC;AAAA,EACpG;AAAA,EACA;AAAA,EAER,aAAa,WAAoC,KAAc,UAA4D;AACzH,iCAAS,CAAC,MAAM,QAAQ,GAAG,GAAG,MAAM,wDAAwD;AAC5F,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,cAAM,cAAc;AAIpB,eAAO,uBAAuB,4BAA2B,cACrD,IAAI;AAAA,UACF,MAAM,8BAAe,MAAM,GAAwB;AAAA,UACnD,WAAW,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,8BAAe,MAAM,OAAO,CAAC,CAAC,IAAI;AAAA,QAC3F;AAAA,MAEN;AAAA,IACF;AACA,UAAM,IAAI,MAAM,oBAAoB,OAAO,GAAG,GAAG;AAAA,EACnD;AAAA,EAEA,MAAM,0BAA8D;AAClE,SAAK,wBACH,KAAK,yBACJ,MAAM,QAAQ;AAAA,UACb,wBAAS,MAAM,8BAAe,cAAc,KAAK,UAAU,KAAK,QAAQ,KAAK,GAAG,IAAI,CAAC,YAAY,uCAAe,KAAK,OAAO,CAAC,CAAC;AAAA,IAChI;AACF,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,WAAuB;AAC3B,UAAM,aAAa,MAAM,KAAK,oBAAoB;AAClD,SAAK,SAAS,KAAK,UAAW,WAAW,KAAK,aAAa,KAAK;AAChE,eAAO,yBAAS,KAAK,QAAQ,MAAM,kBAAkB,KAAK,YAAY,GAAG;AAAA,EAC3E;AACF;","names":["import_assert","import_payload_wrapper"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/BoundWitnessWrapper.ts
|
|
5
2
|
import { assertEx } from "@xylabs/assert";
|
|
6
3
|
import { isObject } from "@xylabs/object";
|
|
@@ -8,27 +5,21 @@ import { asBoundWitness, BoundWitnessSchema, isBoundWitness } from "@xyo-network
|
|
|
8
5
|
import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
|
|
9
6
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
10
7
|
import { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from "@xyo-network/payload-wrapper";
|
|
11
|
-
var isBoundWitnessWrapper =
|
|
8
|
+
var isBoundWitnessWrapper = (value) => {
|
|
12
9
|
if (isPayloadWrapperBase(value)) {
|
|
13
10
|
return typeof value.payloadsDataHashMap === "function";
|
|
14
11
|
}
|
|
15
12
|
return false;
|
|
16
|
-
}
|
|
13
|
+
};
|
|
17
14
|
var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase {
|
|
18
|
-
static {
|
|
19
|
-
__name(this, "BoundWitnessWrapper");
|
|
20
|
-
}
|
|
21
|
-
boundwitness;
|
|
22
|
-
payloads;
|
|
23
|
-
moduleErrors;
|
|
24
|
-
_payloadDataMap;
|
|
25
|
-
_payloadMap;
|
|
26
15
|
constructor(boundwitness, payloads = [], moduleErrors) {
|
|
27
16
|
super(boundwitness);
|
|
28
17
|
this.boundwitness = boundwitness;
|
|
29
18
|
this.payloads = payloads;
|
|
30
19
|
this.moduleErrors = moduleErrors;
|
|
31
20
|
}
|
|
21
|
+
_payloadDataMap;
|
|
22
|
+
_payloadMap;
|
|
32
23
|
get addresses() {
|
|
33
24
|
return this.boundwitness.addresses;
|
|
34
25
|
}
|
|
@@ -98,10 +89,12 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
98
89
|
}
|
|
99
90
|
static async wrappedDataHashMap(boundWitnesses) {
|
|
100
91
|
const result = {};
|
|
101
|
-
await Promise.all(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
92
|
+
await Promise.all(
|
|
93
|
+
boundWitnesses.map(async (payload) => {
|
|
94
|
+
const bw = _BoundWitnessWrapper.parse(payload);
|
|
95
|
+
result[await bw.dataHash()] = bw;
|
|
96
|
+
})
|
|
97
|
+
);
|
|
105
98
|
return result;
|
|
106
99
|
}
|
|
107
100
|
async dig(depth) {
|
|
@@ -109,7 +102,9 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
109
102
|
const innerBoundwitnessIndex = this.payloadSchemas.indexOf(BoundWitnessSchema);
|
|
110
103
|
if (innerBoundwitnessIndex > -1) {
|
|
111
104
|
const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
|
|
112
|
-
const innerBoundwitnessPayload = asBoundWitness(
|
|
105
|
+
const innerBoundwitnessPayload = asBoundWitness(
|
|
106
|
+
(await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash]
|
|
107
|
+
);
|
|
113
108
|
const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash)) : void 0;
|
|
114
109
|
if (innerBoundwitness) {
|
|
115
110
|
return innerBoundwitness.dig(depth ? depth - 1 : void 0);
|
|
@@ -157,10 +152,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
157
152
|
return this.previousHashes[this.addresses.indexOf(address)];
|
|
158
153
|
}
|
|
159
154
|
toResult() {
|
|
160
|
-
return [
|
|
161
|
-
this.boundwitness,
|
|
162
|
-
this.payloads
|
|
163
|
-
];
|
|
155
|
+
return [this.boundwitness, this.payloads];
|
|
164
156
|
}
|
|
165
157
|
async validate() {
|
|
166
158
|
return await new BoundWitnessValidator(this.boundwitness).validate();
|
|
@@ -173,9 +165,6 @@ import { compact } from "@xylabs/lodash";
|
|
|
173
165
|
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload";
|
|
174
166
|
import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
|
|
175
167
|
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper {
|
|
176
|
-
static {
|
|
177
|
-
__name(this, "QueryBoundWitnessWrapper");
|
|
178
|
-
}
|
|
179
168
|
_payloadsWithoutQuery;
|
|
180
169
|
_query;
|
|
181
170
|
static async parseQuery(obj, payloads) {
|
|
@@ -183,14 +172,18 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
183
172
|
switch (typeof obj) {
|
|
184
173
|
case "object": {
|
|
185
174
|
const castWrapper = obj;
|
|
186
|
-
|
|
187
|
-
|
|
175
|
+
return castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(
|
|
176
|
+
await PayloadBuilder2.build(obj),
|
|
177
|
+
payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder2.build(payload))) : void 0
|
|
178
|
+
);
|
|
188
179
|
}
|
|
189
180
|
}
|
|
190
181
|
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
191
182
|
}
|
|
192
183
|
async getPayloadsWithoutQuery() {
|
|
193
|
-
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(
|
|
184
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(
|
|
185
|
+
compact((await PayloadBuilder2.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper2.wrap(payload)))
|
|
186
|
+
);
|
|
194
187
|
return this._payloadsWithoutQuery;
|
|
195
188
|
}
|
|
196
189
|
async getQuery() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload\n assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: WithMeta<P>[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 getMissingPayloads() {\n const payloadMap = await this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this.payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper.js'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["assertEx","isObject","asBoundWitness","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadBuilder","isPayloadWrapperBase","PayloadWrapper","PayloadWrapperBase","isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","assertEx","compact","PayloadBuilder","PayloadWrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload\n assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: WithMeta<P>[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 getMissingPayloads() {\n const payloadMap = await this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this.payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper.js'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["assertEx","PayloadBuilder","PayloadWrapper","assertEx","PayloadBuilder","PayloadWrapper"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAmBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAmBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAY,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;WAEhB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAmBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
package/dist/neutral/index.cjs
CHANGED
|
@@ -3,7 +3,6 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
6
|
var __export = (target, all) => {
|
|
8
7
|
for (var name in all)
|
|
9
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -34,27 +33,21 @@ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
|
34
33
|
var import_boundwitness_validator = require("@xyo-network/boundwitness-validator");
|
|
35
34
|
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
36
35
|
var import_payload_wrapper = require("@xyo-network/payload-wrapper");
|
|
37
|
-
var isBoundWitnessWrapper =
|
|
36
|
+
var isBoundWitnessWrapper = (value) => {
|
|
38
37
|
if ((0, import_payload_wrapper.isPayloadWrapperBase)(value)) {
|
|
39
38
|
return typeof value.payloadsDataHashMap === "function";
|
|
40
39
|
}
|
|
41
40
|
return false;
|
|
42
|
-
}
|
|
41
|
+
};
|
|
43
42
|
var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrapper.PayloadWrapperBase {
|
|
44
|
-
static {
|
|
45
|
-
__name(this, "BoundWitnessWrapper");
|
|
46
|
-
}
|
|
47
|
-
boundwitness;
|
|
48
|
-
payloads;
|
|
49
|
-
moduleErrors;
|
|
50
|
-
_payloadDataMap;
|
|
51
|
-
_payloadMap;
|
|
52
43
|
constructor(boundwitness, payloads = [], moduleErrors) {
|
|
53
44
|
super(boundwitness);
|
|
54
45
|
this.boundwitness = boundwitness;
|
|
55
46
|
this.payloads = payloads;
|
|
56
47
|
this.moduleErrors = moduleErrors;
|
|
57
48
|
}
|
|
49
|
+
_payloadDataMap;
|
|
50
|
+
_payloadMap;
|
|
58
51
|
get addresses() {
|
|
59
52
|
return this.boundwitness.addresses;
|
|
60
53
|
}
|
|
@@ -124,10 +117,12 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
124
117
|
}
|
|
125
118
|
static async wrappedDataHashMap(boundWitnesses) {
|
|
126
119
|
const result = {};
|
|
127
|
-
await Promise.all(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
120
|
+
await Promise.all(
|
|
121
|
+
boundWitnesses.map(async (payload) => {
|
|
122
|
+
const bw = _BoundWitnessWrapper.parse(payload);
|
|
123
|
+
result[await bw.dataHash()] = bw;
|
|
124
|
+
})
|
|
125
|
+
);
|
|
131
126
|
return result;
|
|
132
127
|
}
|
|
133
128
|
async dig(depth) {
|
|
@@ -135,7 +130,9 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
135
130
|
const innerBoundwitnessIndex = this.payloadSchemas.indexOf(import_boundwitness_model.BoundWitnessSchema);
|
|
136
131
|
if (innerBoundwitnessIndex > -1) {
|
|
137
132
|
const innerBoundwitnessHash = this.payloadHashes[innerBoundwitnessIndex];
|
|
138
|
-
const innerBoundwitnessPayload = (0, import_boundwitness_model.asBoundWitness)(
|
|
133
|
+
const innerBoundwitnessPayload = (0, import_boundwitness_model.asBoundWitness)(
|
|
134
|
+
(await import_payload_builder.PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash]
|
|
135
|
+
);
|
|
139
136
|
const innerBoundwitness = innerBoundwitnessPayload ? new _BoundWitnessWrapper(innerBoundwitnessPayload, await import_payload_builder.PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash)) : void 0;
|
|
140
137
|
if (innerBoundwitness) {
|
|
141
138
|
return innerBoundwitness.dig(depth ? depth - 1 : void 0);
|
|
@@ -183,10 +180,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
183
180
|
return this.previousHashes[this.addresses.indexOf(address)];
|
|
184
181
|
}
|
|
185
182
|
toResult() {
|
|
186
|
-
return [
|
|
187
|
-
this.boundwitness,
|
|
188
|
-
this.payloads
|
|
189
|
-
];
|
|
183
|
+
return [this.boundwitness, this.payloads];
|
|
190
184
|
}
|
|
191
185
|
async validate() {
|
|
192
186
|
return await new import_boundwitness_validator.BoundWitnessValidator(this.boundwitness).validate();
|
|
@@ -199,9 +193,6 @@ var import_lodash = require("@xylabs/lodash");
|
|
|
199
193
|
var import_payload = require("@xyo-network/payload");
|
|
200
194
|
var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
|
|
201
195
|
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper {
|
|
202
|
-
static {
|
|
203
|
-
__name(this, "QueryBoundWitnessWrapper");
|
|
204
|
-
}
|
|
205
196
|
_payloadsWithoutQuery;
|
|
206
197
|
_query;
|
|
207
198
|
static async parseQuery(obj, payloads) {
|
|
@@ -209,14 +200,18 @@ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitn
|
|
|
209
200
|
switch (typeof obj) {
|
|
210
201
|
case "object": {
|
|
211
202
|
const castWrapper = obj;
|
|
212
|
-
|
|
213
|
-
|
|
203
|
+
return castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(
|
|
204
|
+
await import_payload.PayloadBuilder.build(obj),
|
|
205
|
+
payloads ? await Promise.all(payloads.map((payload) => import_payload.PayloadBuilder.build(payload))) : void 0
|
|
206
|
+
);
|
|
214
207
|
}
|
|
215
208
|
}
|
|
216
209
|
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
217
210
|
}
|
|
218
211
|
async getPayloadsWithoutQuery() {
|
|
219
|
-
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(
|
|
212
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(
|
|
213
|
+
(0, import_lodash.compact)((await import_payload.PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => import_payload_wrapper2.PayloadWrapper.wrap(payload)))
|
|
214
|
+
);
|
|
220
215
|
return this._payloadsWithoutQuery;
|
|
221
216
|
}
|
|
222
217
|
async getQuery() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper.js'\nexport * from './QueryBoundWitnessWrapper.js'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload\n assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: WithMeta<P>[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 getMissingPayloads() {\n const payloadMap = await this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this.payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper.js'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper =\n castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":"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","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadDataMap","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","JSON","isObject","Error","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","Promise","all","map","bw","dataHash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","PayloadBuilder","toDataHashMap","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsHashMap","payloadsBySchema","toHashMap","prev","toResult","validate","BoundWitnessValidator","import_assert","import_payload_wrapper","QueryBoundWitnessWrapper","BoundWitnessWrapper","_payloadsWithoutQuery","_query","parseQuery","obj","payloads","assertEx","Array","isArray","castWrapper","wrapper","PayloadBuilder","build","Promise","all","map","payload","undefined","Error","getPayloadsWithoutQuery","compact","filterExclude","query","PayloadWrapper","wrap","getQuery","payloadMap","payloadsDataHashMap","boundwitness"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper.js'\nexport * from './QueryBoundWitnessWrapper.js'\n","import { assertEx } from '@xylabs/assert'\nimport { Address, Hash } from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\nimport { asBoundWitness, BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, WithMeta } from '@xyo-network/payload-model'\nimport { isPayloadWrapperBase, PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper'\n\nexport const isBoundWitnessWrapper = <T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n value?: unknown,\n): value is BoundWitnessWrapper<T, P> => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper<T, P>).payloadsDataHashMap === 'function'\n }\n return false\n}\n\nexport class BoundWitnessWrapper<\n TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness,\n TPayload extends Payload = Payload,\n> extends PayloadWrapperBase<TBoundWitness> {\n private _payloadDataMap: Record<Hash, WithMeta<TPayload>> | undefined\n private _payloadMap: Record<Hash, WithMeta<TPayload>> | undefined\n\n protected constructor(\n public boundwitness: WithMeta<TBoundWitness>,\n public payloads: WithMeta<TPayload>[] = [],\n public moduleErrors?: WithMeta<Payload>[],\n ) {\n super(boundwitness)\n }\n\n get addresses() {\n return this.boundwitness.addresses\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 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>) : undefined\n }\n\n static async load(address: Address) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.payload\n assertEx(payload && isBoundWitness(payload), () => 'Attempt to load non-boundwitness')\n\n const boundWitness: BoundWitness | undefined = payload && isBoundWitness(payload) ? payload : undefined\n return boundWitness ? await BoundWitnessWrapper.wrap(boundWitness) : null\n }\n\n static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: WithMeta<P>[],\n ): BoundWitnessWrapper<T, P> {\n let hydratedObj: WithMeta<T> | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj) as WithMeta<T>\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj as unknown as WithMeta<T>\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper<T, P>(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n return new BoundWitnessWrapper(hydratedObj, payloads ?? [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: WithMeta<P>[]): BoundWitnessWrapper<T, P> | undefined {\n if (obj === undefined) return undefined\n try {\n return this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(\n obj: PayloadWrapperBase<T> | T,\n payloads?: WithMeta<P>[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n switch (typeof obj) {\n case 'object': {\n if (obj instanceof BoundWitnessWrapper) {\n return obj\n } else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {\n return await BoundWitnessWrapper.parse(obj.payload, payloads)\n } else {\n return await BoundWitnessWrapper.parse(obj, payloads)\n }\n }\n }\n }\n\n static async wrappedDataHashMap<T extends BoundWitness>(\n boundWitnesses: (T | BoundWitnessWrapper<T>)[],\n ): Promise<Record<string, BoundWitnessWrapper<T>>> {\n const result: Record<string, BoundWitnessWrapper<T>> = {}\n await Promise.all(\n boundWitnesses.map(async (payload) => {\n const bw = BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n async dig(depth?: number): Promise<BoundWitnessWrapper<TBoundWitness>> {\n if (depth === 0) return this\n\n const innerBoundwitnessIndex: number = this.payloadSchemas.indexOf(BoundWitnessSchema)\n if (innerBoundwitnessIndex > -1) {\n const innerBoundwitnessHash: Hash = this.payloadHashes[innerBoundwitnessIndex]\n const innerBoundwitnessPayload = asBoundWitness<WithMeta<TBoundWitness>>(\n (await PayloadBuilder.toDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined =\n innerBoundwitnessPayload ?\n new BoundWitnessWrapper<TBoundWitness>(innerBoundwitnessPayload, await PayloadBuilder.filterExclude(this.payloads, innerBoundwitnessHash))\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 getMissingPayloads() {\n const payloadMap = await this.payloadsDataHashMap()\n return this.payloadHashes.filter((hash) => !payloadMap[hash])\n }\n\n async getWrappedPayloads(): Promise<PayloadWrapper<TPayload>[]> {\n return await Promise.all(this.payloads.map((payload) => PayloadWrapper.wrap(payload)))\n }\n\n hashesBySchema(schema: string) {\n const result: string[] = []\n for (const [index, payloadSchema] of this.payloadSchemas.entries()) {\n if (payloadSchema === schema) {\n result.push(this.payloadHashes[index])\n }\n }\n return result\n }\n\n async payloadsByDataHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n async payloadsByHashes(hashes: Hash[]): Promise<TPayload[]> {\n const map = await this.payloadsHashMap()\n return hashes.map((hash) => assertEx(map[hash], () => 'Hash not found') as TPayload)\n }\n\n payloadsBySchema<T extends TPayload>(schema: string): WithMeta<T>[] {\n return this.payloads.filter((payload) => payload?.schema === schema) as WithMeta<T>[]\n }\n\n async payloadsDataHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadDataMap = this._payloadDataMap ?? (await PayloadBuilder.toDataHashMap<TPayload>(this.payloads))\n return this._payloadDataMap\n }\n\n async payloadsHashMap(): Promise<Record<Hash, WithMeta<TPayload>>> {\n this._payloadMap = this._payloadMap ?? (await PayloadBuilder.toHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: Address) {\n return this.previousHashes[this.addresses.indexOf(address)]\n }\n\n toResult() {\n return [this.boundwitness, this.payloads]\n }\n\n override async validate(): Promise<Error[]> {\n return await new BoundWitnessValidator(this.boundwitness).validate()\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload'\nimport { Payload, Query, WithMeta } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper.js'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n\n static async parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>> {\n assertEx(!Array.isArray(obj), () => 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return castWrapper instanceof QueryBoundWitnessWrapper ? castWrapper : (\n new QueryBoundWitnessWrapper<T>(\n await PayloadBuilder.build(obj as QueryBoundWitness),\n payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder.build(payload))) : undefined,\n )\n )\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n async getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n (await Promise.all(\n compact((await PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper.wrap(payload))),\n ))\n return this._payloadsWithoutQuery\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.payloadsDataHashMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as WithMeta<T> | undefined)\n return assertEx(this._query, () => `Missing Query [${this.boundwitness}]`)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAyB;AAEzB,oBAAyB;AACzB,gCAAiF;AACjF,oCAAsC;AACtC,6BAA+B;AAE/B,6BAAyE;AAElE,IAAM,wBAAwB,CACnC,UACuC;AACvC,UAAI,6CAAqB,KAAK,GAAG;AAC/B,WAAO,OAAQ,MAAoC,wBAAwB;AAAA,EAC7E;AACA,SAAO;AACT;AAEO,IAAM,sBAAN,MAAM,6BAGH,0CAAkC;AAAA,EAIhC,YACD,cACA,WAAiC,CAAC,GAClC,cACP;AACA,UAAM,YAAY;AAJX;AACA;AACA;AAAA,EAGT;AAAA,EATQ;AAAA,EACA;AAAA,EAUR,IAAI,YAAY;AACd,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,gBAAgB;AAClB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,IAAI,iBAAiB;AACnB,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EAEA,OAAO,GAA0C,OAAgB;AAC/D,WAAO,iBAAiB,uBAAuB,QAAmC;AAAA,EACpF;AAAA,EAEA,aAAa,KAAK,SAAkB;AAClC,UAAM,UAAU,MAAM,sCAAe,KAAK,OAAO;AACjD,UAAM,UAAU,SAAS;AACzB,gCAAS,eAAW,0CAAe,OAAO,GAAG,MAAM,kCAAkC;AAErF,UAAM,eAAyC,eAAW,0CAAe,OAAO,IAAI,UAAU;AAC9F,WAAO,eAAe,MAAM,qBAAoB,KAAK,YAAY,IAAI;AAAA,EACvE;AAAA,EAEA,OAAO,MACL,KACA,UAC2B;AAC3B,QAAI,cAAuC;AAC3C,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,sBAAc,KAAK,MAAM,GAAG;AAC5B;AAAA,MACF;AAAA,MACA,KAAK,UAAU;AACb,gBAAI,wBAAS,GAAG,GAAG;AACjB,wBAAc;AAAA,QAChB;AACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,aAAa;AACf,UAAI,sBAA4B,WAAW,GAAG;AAC5C,eAAO;AAAA,MACT;AACA,cAAI,0CAAe,WAAW,GAAG;AAC/B,eAAO,IAAI,qBAAoB,aAAa,YAAY,CAAC,CAAC;AAAA,MAC5D;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,oBAAoB,OAAO,GAAG,GAAG;AAAA,EACnD;AAAA,EAEA,OAAO,SAAoD,KAAc,UAAiE;AACxI,QAAI,QAAQ,OAAW,QAAO;AAC9B,QAAI;AACF,aAAO,KAAK,MAAM,KAAK,QAAQ;AAAA,IACjC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,aAAa,KACX,KACA,UACoC;AACpC,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,YAAI,eAAe,sBAAqB;AACtC,iBAAO;AAAA,QACT,WAAW,eAAe,yCAAkB,IAAI,OAAO,MAAM,8CAAoB;AAC/E,iBAAO,MAAM,qBAAoB,MAAM,IAAI,SAAS,QAAQ;AAAA,QAC9D,OAAO;AACL,iBAAO,MAAM,qBAAoB,MAAM,KAAK,QAAQ;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,aAAa,mBACX,gBACiD;AACjD,UAAM,SAAiD,CAAC;AACxD,UAAM,QAAQ;AAAA,MACZ,eAAe,IAAI,OAAO,YAAY;AACpC,cAAM,KAAK,qBAAoB,MAAkB,OAAO;AACxD,eAAO,MAAM,GAAG,SAAS,CAAC,IAAI;AAAA,MAChC,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,OAA6D;AACrE,QAAI,UAAU,EAAG,QAAO;AAExB,UAAM,yBAAiC,KAAK,eAAe,QAAQ,4CAAkB;AACrF,QAAI,yBAAyB,IAAI;AAC/B,YAAM,wBAA8B,KAAK,cAAc,sBAAsB;AAC7E,YAAM,+BAA2B;AAAA,SAC9B,MAAM,sCAAe,cAAc,KAAK,QAAQ,GAAG,qBAAqB;AAAA,MAC3E;AACA,YAAM,oBACJ,2BACE,IAAI,qBAAmC,0BAA0B,MAAM,sCAAe,cAAc,KAAK,UAAU,qBAAqB,CAAC,IACzI;AACJ,UAAI,mBAAmB;AACrB,eAAO,kBAAkB,IAAI,QAAQ,QAAQ,IAAI,MAAS;AAAA,MAC5D;AAAA,IACF;AACA,gCAAS,CAAC,OAAO,MAAM,gCAAgC,KAAK,GAAG;AAC/D,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,qBAAqB;AACzB,UAAM,aAAa,MAAM,KAAK,oBAAoB;AAClD,WAAO,KAAK,cAAc,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,qBAA0D;AAC9D,WAAO,MAAM,QAAQ,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,sCAAe,KAAK,OAAO,CAAC,CAAC;AAAA,EACvF;AAAA,EAEA,eAAe,QAAgB;AAC7B,UAAM,SAAmB,CAAC;AAC1B,eAAW,CAAC,OAAO,aAAa,KAAK,KAAK,eAAe,QAAQ,GAAG;AAClE,UAAI,kBAAkB,QAAQ;AAC5B,eAAO,KAAK,KAAK,cAAc,KAAK,CAAC;AAAA,MACvC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,qBAAqB,QAAqC;AAC9D,UAAM,MAAM,MAAM,KAAK,oBAAoB;AAC3C,WAAO,OAAO,IAAI,CAAC,aAAS,wBAAS,IAAI,IAAI,GAAG,MAAM,gBAAgB,CAAa;AAAA,EACrF;AAAA,EAEA,MAAM,iBAAiB,QAAqC;AAC1D,UAAM,MAAM,MAAM,KAAK,gBAAgB;AACvC,WAAO,OAAO,IAAI,CAAC,aAAS,wBAAS,IAAI,IAAI,GAAG,MAAM,gBAAgB,CAAa;AAAA,EACrF;AAAA,EAEA,iBAAqC,QAA+B;AAClE,WAAO,KAAK,SAAS,OAAO,CAAC,YAAY,SAAS,WAAW,MAAM;AAAA,EACrE;AAAA,EAEA,MAAM,sBAAiE;AACrE,SAAK,kBAAkB,KAAK,mBAAoB,MAAM,sCAAe,cAAwB,KAAK,QAAQ;AAC1G,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,kBAA6D;AACjE,SAAK,cAAc,KAAK,eAAgB,MAAM,sCAAe,UAAoB,KAAK,QAAQ;AAC9F,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,KAAK,SAAkB;AACrB,WAAO,KAAK,eAAe,KAAK,UAAU,QAAQ,OAAO,CAAC;AAAA,EAC5D;AAAA,EAEA,WAAW;AACT,WAAO,CAAC,KAAK,cAAc,KAAK,QAAQ;AAAA,EAC1C;AAAA,EAEA,MAAe,WAA6B;AAC1C,WAAO,MAAM,IAAI,oDAAsB,KAAK,YAAY,EAAE,SAAS;AAAA,EACrE;AACF;;;AC9MA,IAAAA,iBAAyB;AACzB,oBAAwB;AAExB,qBAA+B;AAE/B,IAAAC,0BAA+B;AAIxB,IAAM,2BAAN,MAAM,kCAA0D,oBAAuC;AAAA,EACpG;AAAA,EACA;AAAA,EAER,aAAa,WAAoC,KAAc,UAA4D;AACzH,iCAAS,CAAC,MAAM,QAAQ,GAAG,GAAG,MAAM,wDAAwD;AAC5F,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,cAAM,cAAc;AAIpB,eAAO,uBAAuB,4BAA2B,cACrD,IAAI;AAAA,UACF,MAAM,8BAAe,MAAM,GAAwB;AAAA,UACnD,WAAW,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,YAAY,8BAAe,MAAM,OAAO,CAAC,CAAC,IAAI;AAAA,QAC3F;AAAA,MAEN;AAAA,IACF;AACA,UAAM,IAAI,MAAM,oBAAoB,OAAO,GAAG,GAAG;AAAA,EACnD;AAAA,EAEA,MAAM,0BAA8D;AAClE,SAAK,wBACH,KAAK,yBACJ,MAAM,QAAQ;AAAA,UACb,wBAAS,MAAM,8BAAe,cAAc,KAAK,UAAU,KAAK,QAAQ,KAAK,GAAG,IAAI,CAAC,YAAY,uCAAe,KAAK,OAAO,CAAC,CAAC;AAAA,IAChI;AACF,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,WAAuB;AAC3B,UAAM,aAAa,MAAM,KAAK,oBAAoB;AAClD,SAAK,SAAS,KAAK,UAAW,WAAW,KAAK,aAAa,KAAK;AAChE,eAAO,yBAAS,KAAK,QAAQ,MAAM,kBAAkB,KAAK,YAAY,GAAG;AAAA,EAC3E;AACF;","names":["import_assert","import_payload_wrapper"]}
|