@xyo-network/boundwitness-wrapper 2.90.2 → 2.90.4
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/BoundWitnessWrapper.d.cts +4 -2
- package/dist/browser/BoundWitnessWrapper.d.cts.map +1 -1
- package/dist/browser/BoundWitnessWrapper.d.mts +4 -2
- package/dist/browser/BoundWitnessWrapper.d.mts.map +1 -1
- package/dist/browser/BoundWitnessWrapper.d.ts +4 -2
- package/dist/browser/BoundWitnessWrapper.d.ts.map +1 -1
- package/dist/browser/QueryBoundWitnessWrapper.d.cts +12 -0
- package/dist/browser/QueryBoundWitnessWrapper.d.cts.map +1 -0
- package/dist/browser/QueryBoundWitnessWrapper.d.mts +12 -0
- package/dist/browser/QueryBoundWitnessWrapper.d.mts.map +1 -0
- package/dist/browser/QueryBoundWitnessWrapper.d.ts +12 -0
- package/dist/browser/QueryBoundWitnessWrapper.d.ts.map +1 -0
- package/dist/browser/index.cjs +59 -8
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -0
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -0
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +59 -8
- package/dist/browser/index.js.map +1 -1
- package/dist/node/BoundWitnessWrapper.d.cts +4 -2
- package/dist/node/BoundWitnessWrapper.d.cts.map +1 -1
- package/dist/node/BoundWitnessWrapper.d.mts +4 -2
- package/dist/node/BoundWitnessWrapper.d.mts.map +1 -1
- package/dist/node/BoundWitnessWrapper.d.ts +4 -2
- package/dist/node/BoundWitnessWrapper.d.ts.map +1 -1
- package/dist/node/QueryBoundWitnessWrapper.d.cts +12 -0
- package/dist/node/QueryBoundWitnessWrapper.d.cts.map +1 -0
- package/dist/node/QueryBoundWitnessWrapper.d.mts +12 -0
- package/dist/node/QueryBoundWitnessWrapper.d.mts.map +1 -0
- package/dist/node/QueryBoundWitnessWrapper.d.ts +12 -0
- package/dist/node/QueryBoundWitnessWrapper.d.ts.map +1 -0
- package/dist/node/index.cjs +59 -8
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -0
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -0
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +58 -8
- package/dist/node/index.js.map +1 -1
- package/package.json +11 -9
- package/src/BoundWitnessWrapper.ts +33 -12
- package/src/QueryBoundWitnessWrapper.ts +49 -0
- package/src/index.ts +1 -0
|
@@ -2,7 +2,9 @@ import { Hash } from '@xylabs/hex';
|
|
|
2
2
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
3
|
import { Payload, WithMeta } from '@xyo-network/payload-model';
|
|
4
4
|
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
|
|
5
|
-
export declare const isBoundWitnessWrapper: (value?: unknown) => value is
|
|
5
|
+
export declare const isBoundWitnessWrapper: (value?: unknown) => value is BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
|
|
6
|
+
schema: "network.xyo.boundwitness";
|
|
7
|
+
}, {
|
|
6
8
|
schema: string;
|
|
7
9
|
} & object>;
|
|
8
10
|
export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
@@ -29,7 +31,7 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
|
29
31
|
}, {
|
|
30
32
|
schema: string;
|
|
31
33
|
} & object> | null>;
|
|
32
|
-
static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
34
|
+
static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
33
35
|
static payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>>;
|
|
34
36
|
static payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>>;
|
|
35
37
|
static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import { Hash } from '@xylabs/hex';
|
|
|
2
2
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
3
|
import { Payload, WithMeta } from '@xyo-network/payload-model';
|
|
4
4
|
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
|
|
5
|
-
export declare const isBoundWitnessWrapper: (value?: unknown) => value is
|
|
5
|
+
export declare const isBoundWitnessWrapper: (value?: unknown) => value is BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
|
|
6
|
+
schema: "network.xyo.boundwitness";
|
|
7
|
+
}, {
|
|
6
8
|
schema: string;
|
|
7
9
|
} & object>;
|
|
8
10
|
export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
@@ -29,7 +31,7 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
|
29
31
|
}, {
|
|
30
32
|
schema: string;
|
|
31
33
|
} & object> | null>;
|
|
32
|
-
static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
34
|
+
static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
33
35
|
static payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>>;
|
|
34
36
|
static payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>>;
|
|
35
37
|
static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import { Hash } from '@xylabs/hex';
|
|
|
2
2
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
3
|
import { Payload, WithMeta } from '@xyo-network/payload-model';
|
|
4
4
|
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
|
|
5
|
-
export declare const isBoundWitnessWrapper: (value?: unknown) => value is
|
|
5
|
+
export declare const isBoundWitnessWrapper: (value?: unknown) => value is BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
|
|
6
|
+
schema: "network.xyo.boundwitness";
|
|
7
|
+
}, {
|
|
6
8
|
schema: string;
|
|
7
9
|
} & object>;
|
|
8
10
|
export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
@@ -29,7 +31,7 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
|
29
31
|
}, {
|
|
30
32
|
schema: string;
|
|
31
33
|
} & object> | null>;
|
|
32
|
-
static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
34
|
+
static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
33
35
|
static payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>>;
|
|
34
36
|
static payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>>;
|
|
35
37
|
static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"BoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../src/BoundWitnessWrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import { Payload, Query } from '@xyo-network/payload-model';
|
|
3
|
+
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
4
|
+
import { BoundWitnessWrapper } from './BoundWitnessWrapper';
|
|
5
|
+
export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
|
|
6
|
+
private _payloadsWithoutQuery;
|
|
7
|
+
private _query;
|
|
8
|
+
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
|
|
9
|
+
getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
|
|
10
|
+
getQuery(): Promise<T>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
|
|
@@ -0,0 +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,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,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;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import { Payload, Query } from '@xyo-network/payload-model';
|
|
3
|
+
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
4
|
+
import { BoundWitnessWrapper } from './BoundWitnessWrapper';
|
|
5
|
+
export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
|
|
6
|
+
private _payloadsWithoutQuery;
|
|
7
|
+
private _query;
|
|
8
|
+
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
|
|
9
|
+
getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
|
|
10
|
+
getQuery(): Promise<T>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
|
|
@@ -0,0 +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,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,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;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import { Payload, Query } from '@xyo-network/payload-model';
|
|
3
|
+
import { PayloadWrapper } from '@xyo-network/payload-wrapper';
|
|
4
|
+
import { BoundWitnessWrapper } from './BoundWitnessWrapper';
|
|
5
|
+
export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
|
|
6
|
+
private _payloadsWithoutQuery;
|
|
7
|
+
private _query;
|
|
8
|
+
static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): Promise<QueryBoundWitnessWrapper<T>>;
|
|
9
|
+
getPayloadsWithoutQuery(): Promise<PayloadWrapper<Payload>[]>;
|
|
10
|
+
getQuery(): Promise<T>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
|
|
@@ -0,0 +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,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,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;IAqBpH,uBAAuB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAS7D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;CAK7B"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -22,12 +22,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
22
22
|
var src_exports = {};
|
|
23
23
|
__export(src_exports, {
|
|
24
24
|
BoundWitnessWrapper: () => BoundWitnessWrapper,
|
|
25
|
+
QueryBoundWitnessWrapper: () => QueryBoundWitnessWrapper,
|
|
25
26
|
isBoundWitnessWrapper: () => isBoundWitnessWrapper
|
|
26
27
|
});
|
|
27
28
|
module.exports = __toCommonJS(src_exports);
|
|
28
29
|
|
|
29
30
|
// src/BoundWitnessWrapper.ts
|
|
30
31
|
var import_assert = require("@xylabs/assert");
|
|
32
|
+
var import_object = require("@xylabs/object");
|
|
31
33
|
var import_boundwitness_model = require("@xyo-network/boundwitness-model");
|
|
32
34
|
var import_boundwitness_validator = require("@xyo-network/boundwitness-validator");
|
|
33
35
|
var import_payload_builder = require("@xyo-network/payload-builder");
|
|
@@ -69,17 +71,32 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
69
71
|
}
|
|
70
72
|
static async load(address) {
|
|
71
73
|
const wrapper = await import_payload_wrapper.PayloadWrapper.load(address);
|
|
72
|
-
const payload = wrapper?.
|
|
74
|
+
const payload = wrapper?.payload;
|
|
73
75
|
(0, import_assert.assertEx)(payload && (0, import_boundwitness_model.isBoundWitness)(payload), "Attempt to load non-boundwitness");
|
|
74
76
|
const boundWitness = payload && (0, import_boundwitness_model.isBoundWitness)(payload) ? payload : void 0;
|
|
75
77
|
return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
|
|
76
78
|
}
|
|
77
79
|
static async parse(obj, payloads) {
|
|
78
|
-
|
|
79
|
-
(
|
|
80
|
-
|
|
80
|
+
let hydratedObj = void 0;
|
|
81
|
+
switch (typeof obj) {
|
|
82
|
+
case "string": {
|
|
83
|
+
hydratedObj = JSON.parse(obj);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
81
86
|
case "object": {
|
|
82
|
-
|
|
87
|
+
if ((0, import_object.isObject)(obj)) {
|
|
88
|
+
hydratedObj = obj;
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (hydratedObj) {
|
|
94
|
+
if (isBoundWitnessWrapper(hydratedObj)) {
|
|
95
|
+
return hydratedObj;
|
|
96
|
+
}
|
|
97
|
+
if ((0, import_boundwitness_model.isBoundWitness)(hydratedObj)) {
|
|
98
|
+
const bw = await import_payload_builder.PayloadBuilder.build(hydratedObj);
|
|
99
|
+
return new _BoundWitnessWrapper(bw, payloads ? await Promise.all(payloads?.map((payload) => import_payload_builder.PayloadBuilder.build(payload))) : []);
|
|
83
100
|
}
|
|
84
101
|
}
|
|
85
102
|
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
@@ -107,7 +124,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
107
124
|
if (obj instanceof _BoundWitnessWrapper) {
|
|
108
125
|
return obj;
|
|
109
126
|
} else if (obj instanceof import_payload_wrapper.PayloadWrapper && obj.schema() === import_boundwitness_model.BoundWitnessSchema) {
|
|
110
|
-
return await _BoundWitnessWrapper.parse(obj.
|
|
127
|
+
return await _BoundWitnessWrapper.parse(obj.payload, payloads);
|
|
111
128
|
} else {
|
|
112
129
|
return await _BoundWitnessWrapper.parse(obj, payloads);
|
|
113
130
|
}
|
|
@@ -124,8 +141,9 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
124
141
|
}
|
|
125
142
|
static async wrappedHashMap(boundWitnesses) {
|
|
126
143
|
const result = {};
|
|
127
|
-
await Promise.all(boundWitnesses.map(async (
|
|
128
|
-
|
|
144
|
+
await Promise.all(boundWitnesses.map(async (bw) => {
|
|
145
|
+
const wrapped = await _BoundWitnessWrapper.parse(bw);
|
|
146
|
+
result[await wrapped.dataHash()] = await _BoundWitnessWrapper.parse(bw);
|
|
129
147
|
}));
|
|
130
148
|
return result;
|
|
131
149
|
}
|
|
@@ -192,4 +210,37 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends import_payload_wrap
|
|
|
192
210
|
return await new import_boundwitness_validator.BoundWitnessValidator(this.boundwitness).validate();
|
|
193
211
|
}
|
|
194
212
|
};
|
|
213
|
+
|
|
214
|
+
// src/QueryBoundWitnessWrapper.ts
|
|
215
|
+
var import_assert2 = require("@xylabs/assert");
|
|
216
|
+
var import_lodash = require("@xylabs/lodash");
|
|
217
|
+
var import_payload = require("@xyo-network/payload");
|
|
218
|
+
var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
|
|
219
|
+
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper {
|
|
220
|
+
static {
|
|
221
|
+
__name(this, "QueryBoundWitnessWrapper");
|
|
222
|
+
}
|
|
223
|
+
_payloadsWithoutQuery;
|
|
224
|
+
_query;
|
|
225
|
+
static async parseQuery(obj, payloads) {
|
|
226
|
+
(0, import_assert2.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
227
|
+
switch (typeof obj) {
|
|
228
|
+
case "object": {
|
|
229
|
+
const castWrapper = obj;
|
|
230
|
+
const wrapper = castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(await import_payload.PayloadBuilder.build(obj), payloads ? await Promise.all(payloads.map((payload) => import_payload.PayloadBuilder.build(payload))) : void 0);
|
|
231
|
+
return wrapper;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
235
|
+
}
|
|
236
|
+
async getPayloadsWithoutQuery() {
|
|
237
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all((0, import_lodash.compact)((await import_payload.PayloadBuilder.filterExclude(this.payloads, this.payload.query)).map((payload) => import_payload_wrapper2.PayloadWrapper.wrap(payload))));
|
|
238
|
+
return this._payloadsWithoutQuery;
|
|
239
|
+
}
|
|
240
|
+
async getQuery() {
|
|
241
|
+
const payloadMap = await this.payloadsDataHashMap();
|
|
242
|
+
this._query = this._query ?? payloadMap[this.boundwitness.query];
|
|
243
|
+
return (0, import_assert2.assertEx)(this._query, () => `Missing Query [${this.boundwitness}]`);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
195
246
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\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 = (value?: unknown): value is PayloadWrapper => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper).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 _payloadMap: Record<string, 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: string) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.jsonPayload()\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 async parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>> {\n const hydratedObj = await PayloadBuilder.build(typeof obj === 'string' ? JSON.parse(obj) : obj)\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n return hydratedObj instanceof BoundWitnessWrapper\n ? hydratedObj\n : new BoundWitnessWrapper(hydratedObj, payloads ? await Promise.all(payloads?.map((payload) => PayloadBuilder.build(payload))) : [])\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static async payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toDataHashMap(unwrapped)\n }\n\n static async payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toHashMap(unwrapped)\n }\n\n static async tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined> {\n if (obj === undefined) return undefined\n try {\n return await this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): 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.jsonPayload(), 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 = await BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n static async wrappedHashMap<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 result[await BoundWitnessWrapper.hash(payload)] = await BoundWitnessWrapper.parse(payload)\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 BoundWitnessWrapper.payloadsDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = 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<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\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<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsDataHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n async payloadsHashMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: string) {\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"],"mappings":"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","names":["isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","jsonPayload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","PayloadBuilder","build","JSON","Array","isArray","Promise","all","map","Error","unwrapped","unwrap","toDataHashMap","payloadsHashMap","toHashMap","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","bw","dataHash","wrappedHashMap","hash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsBySchema","prev","toResult","validate","BoundWitnessValidator"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["export * from './BoundWitnessWrapper'\nexport * from './QueryBoundWitnessWrapper'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { AnyObject, 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 = (value?: unknown): value is BoundWitnessWrapper => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper).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 _payloadMap: Record<string, 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: string) {\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 async parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: P[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n let hydratedObj: AnyObject | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj)\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n //we use PayloadBuilder here since we want to use the BoundWitness as-is (no resigning), but want to add the $hash is needed\n const bw = await PayloadBuilder.build<T>(hydratedObj as T)\n return new BoundWitnessWrapper(bw, payloads ? await Promise.all(payloads?.map((payload) => PayloadBuilder.build(payload))) : [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static async payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toDataHashMap(unwrapped)\n }\n\n static async payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toHashMap(unwrapped)\n }\n\n static async tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined> {\n if (obj === undefined) return undefined\n try {\n return await this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): 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 = await BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n static async wrappedHashMap<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 (bw) => {\n const wrapped: BoundWitnessWrapper<T> = await BoundWitnessWrapper.parse(bw)\n result[await wrapped.dataHash()] = await BoundWitnessWrapper.parse(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 BoundWitnessWrapper.payloadsDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = 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<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\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<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsDataHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n async payloadsHashMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: string) {\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 } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\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\n ? 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 /*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 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","_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","bw","PayloadBuilder","build","Promise","all","map","Error","unwrapped","unwrap","toDataHashMap","payloadsHashMap","toHashMap","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","dataHash","wrappedHashMap","wrapped","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsBySchema","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"]}
|
package/dist/browser/index.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA"}
|
package/dist/browser/index.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA"}
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA"}
|
package/dist/browser/index.js
CHANGED
|
@@ -3,6 +3,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
3
3
|
|
|
4
4
|
// src/BoundWitnessWrapper.ts
|
|
5
5
|
import { assertEx } from "@xylabs/assert";
|
|
6
|
+
import { isObject } from "@xylabs/object";
|
|
6
7
|
import { asBoundWitness, BoundWitnessSchema, isBoundWitness } from "@xyo-network/boundwitness-model";
|
|
7
8
|
import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
|
|
8
9
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
@@ -44,17 +45,32 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
44
45
|
}
|
|
45
46
|
static async load(address) {
|
|
46
47
|
const wrapper = await PayloadWrapper.load(address);
|
|
47
|
-
const payload = wrapper?.
|
|
48
|
+
const payload = wrapper?.payload;
|
|
48
49
|
assertEx(payload && isBoundWitness(payload), "Attempt to load non-boundwitness");
|
|
49
50
|
const boundWitness = payload && isBoundWitness(payload) ? payload : void 0;
|
|
50
51
|
return boundWitness ? await _BoundWitnessWrapper.wrap(boundWitness) : null;
|
|
51
52
|
}
|
|
52
53
|
static async parse(obj, payloads) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
let hydratedObj = void 0;
|
|
55
|
+
switch (typeof obj) {
|
|
56
|
+
case "string": {
|
|
57
|
+
hydratedObj = JSON.parse(obj);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
56
60
|
case "object": {
|
|
57
|
-
|
|
61
|
+
if (isObject(obj)) {
|
|
62
|
+
hydratedObj = obj;
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (hydratedObj) {
|
|
68
|
+
if (isBoundWitnessWrapper(hydratedObj)) {
|
|
69
|
+
return hydratedObj;
|
|
70
|
+
}
|
|
71
|
+
if (isBoundWitness(hydratedObj)) {
|
|
72
|
+
const bw = await PayloadBuilder.build(hydratedObj);
|
|
73
|
+
return new _BoundWitnessWrapper(bw, payloads ? await Promise.all(payloads?.map((payload) => PayloadBuilder.build(payload))) : []);
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
76
|
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
@@ -82,7 +98,7 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
82
98
|
if (obj instanceof _BoundWitnessWrapper) {
|
|
83
99
|
return obj;
|
|
84
100
|
} else if (obj instanceof PayloadWrapper && obj.schema() === BoundWitnessSchema) {
|
|
85
|
-
return await _BoundWitnessWrapper.parse(obj.
|
|
101
|
+
return await _BoundWitnessWrapper.parse(obj.payload, payloads);
|
|
86
102
|
} else {
|
|
87
103
|
return await _BoundWitnessWrapper.parse(obj, payloads);
|
|
88
104
|
}
|
|
@@ -99,8 +115,9 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
99
115
|
}
|
|
100
116
|
static async wrappedHashMap(boundWitnesses) {
|
|
101
117
|
const result = {};
|
|
102
|
-
await Promise.all(boundWitnesses.map(async (
|
|
103
|
-
|
|
118
|
+
await Promise.all(boundWitnesses.map(async (bw) => {
|
|
119
|
+
const wrapped = await _BoundWitnessWrapper.parse(bw);
|
|
120
|
+
result[await wrapped.dataHash()] = await _BoundWitnessWrapper.parse(bw);
|
|
104
121
|
}));
|
|
105
122
|
return result;
|
|
106
123
|
}
|
|
@@ -167,8 +184,42 @@ var BoundWitnessWrapper = class _BoundWitnessWrapper extends PayloadWrapperBase
|
|
|
167
184
|
return await new BoundWitnessValidator(this.boundwitness).validate();
|
|
168
185
|
}
|
|
169
186
|
};
|
|
187
|
+
|
|
188
|
+
// src/QueryBoundWitnessWrapper.ts
|
|
189
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
190
|
+
import { compact } from "@xylabs/lodash";
|
|
191
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload";
|
|
192
|
+
import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
|
|
193
|
+
var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends BoundWitnessWrapper {
|
|
194
|
+
static {
|
|
195
|
+
__name(this, "QueryBoundWitnessWrapper");
|
|
196
|
+
}
|
|
197
|
+
_payloadsWithoutQuery;
|
|
198
|
+
_query;
|
|
199
|
+
static async parseQuery(obj, payloads) {
|
|
200
|
+
assertEx2(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
|
|
201
|
+
switch (typeof obj) {
|
|
202
|
+
case "object": {
|
|
203
|
+
const castWrapper = obj;
|
|
204
|
+
const wrapper = castWrapper instanceof _QueryBoundWitnessWrapper ? castWrapper : new _QueryBoundWitnessWrapper(await PayloadBuilder2.build(obj), payloads ? await Promise.all(payloads.map((payload) => PayloadBuilder2.build(payload))) : void 0);
|
|
205
|
+
return wrapper;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
throw new Error(`Unable to parse [${typeof obj}]`);
|
|
209
|
+
}
|
|
210
|
+
async getPayloadsWithoutQuery() {
|
|
211
|
+
this._payloadsWithoutQuery = this._payloadsWithoutQuery ?? await Promise.all(compact((await PayloadBuilder2.filterExclude(this.payloads, this.payload.query)).map((payload) => PayloadWrapper2.wrap(payload))));
|
|
212
|
+
return this._payloadsWithoutQuery;
|
|
213
|
+
}
|
|
214
|
+
async getQuery() {
|
|
215
|
+
const payloadMap = await this.payloadsDataHashMap();
|
|
216
|
+
this._query = this._query ?? payloadMap[this.boundwitness.query];
|
|
217
|
+
return assertEx2(this._query, () => `Missing Query [${this.boundwitness}]`);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
170
220
|
export {
|
|
171
221
|
BoundWitnessWrapper,
|
|
222
|
+
QueryBoundWitnessWrapper,
|
|
172
223
|
isBoundWitnessWrapper
|
|
173
224
|
};
|
|
174
225
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\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 = (value?: unknown): value is PayloadWrapper => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper).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 _payloadMap: Record<string, 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: string) {\n const wrapper = await PayloadWrapper.load(address)\n const payload = wrapper?.jsonPayload()\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 async parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>> {\n const hydratedObj = await PayloadBuilder.build(typeof obj === 'string' ? JSON.parse(obj) : obj)\n assertEx(!Array.isArray(hydratedObj), 'Array can not be converted to BoundWitnessWrapper')\n switch (typeof hydratedObj) {\n case 'object': {\n return hydratedObj instanceof BoundWitnessWrapper\n ? hydratedObj\n : new BoundWitnessWrapper(hydratedObj, payloads ? await Promise.all(payloads?.map((payload) => PayloadBuilder.build(payload))) : [])\n }\n }\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static async payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toDataHashMap(unwrapped)\n }\n\n static async payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toHashMap(unwrapped)\n }\n\n static async tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined> {\n if (obj === undefined) return undefined\n try {\n return await this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): 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.jsonPayload(), 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 = await BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n static async wrappedHashMap<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 result[await BoundWitnessWrapper.hash(payload)] = await BoundWitnessWrapper.parse(payload)\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 BoundWitnessWrapper.payloadsDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = 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<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\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<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsDataHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n async payloadsHashMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: string) {\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"],"mappings":"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","names":["assertEx","asBoundWitness","BoundWitnessSchema","isBoundWitness","BoundWitnessValidator","PayloadBuilder","isPayloadWrapperBase","PayloadWrapper","PayloadWrapperBase","isBoundWitnessWrapper","value","isPayloadWrapperBase","payloadsDataHashMap","BoundWitnessWrapper","PayloadWrapperBase","_payloadMap","boundwitness","payloads","moduleErrors","addresses","payloadHashes","payload_hashes","payloadSchemas","payload_schemas","previousHashes","previous_hashes","as","undefined","load","address","wrapper","PayloadWrapper","payload","jsonPayload","assertEx","isBoundWitness","boundWitness","wrap","parse","obj","hydratedObj","PayloadBuilder","build","JSON","Array","isArray","Promise","all","map","Error","unwrapped","unwrap","toDataHashMap","payloadsHashMap","toHashMap","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","bw","dataHash","wrappedHashMap","hash","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsBySchema","prev","toResult","validate","BoundWitnessValidator"]}
|
|
1
|
+
{"version":3,"sources":["../../src/BoundWitnessWrapper.ts","../../src/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { AnyObject, 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 = (value?: unknown): value is BoundWitnessWrapper => {\n if (isPayloadWrapperBase(value)) {\n return typeof (value as BoundWitnessWrapper).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 _payloadMap: Record<string, 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: string) {\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 async parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(\n obj: unknown,\n payloads?: P[],\n ): Promise<BoundWitnessWrapper<T, P>> {\n let hydratedObj: AnyObject | undefined = undefined\n switch (typeof obj) {\n case 'string': {\n hydratedObj = JSON.parse(obj)\n break\n }\n case 'object': {\n if (isObject(obj)) {\n hydratedObj = obj\n }\n break\n }\n }\n\n if (hydratedObj) {\n if (isBoundWitnessWrapper(hydratedObj)) {\n return hydratedObj as BoundWitnessWrapper<T, P>\n }\n if (isBoundWitness(hydratedObj)) {\n //we use PayloadBuilder here since we want to use the BoundWitness as-is (no resigning), but want to add the $hash is needed\n const bw = await PayloadBuilder.build<T>(hydratedObj as T)\n return new BoundWitnessWrapper(bw, payloads ? await Promise.all(payloads?.map((payload) => PayloadBuilder.build(payload))) : [])\n }\n }\n\n throw new Error(`Unable to parse [${typeof obj}]`)\n }\n\n static async payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toDataHashMap(unwrapped)\n }\n\n static async payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>> {\n const unwrapped = await this.unwrap(payloads)\n return await PayloadBuilder.toHashMap(unwrapped)\n }\n\n static async tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined> {\n if (obj === undefined) return undefined\n try {\n return await this.parse(obj, payloads)\n } catch {\n return undefined\n }\n }\n\n static async wrap<T extends BoundWitness, P extends Payload>(obj: PayloadWrapperBase<T> | T, payloads?: P[]): 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 = await BoundWitnessWrapper.parse<T, Payload>(payload)\n result[await bw.dataHash()] = bw\n }),\n )\n return result\n }\n\n static async wrappedHashMap<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 (bw) => {\n const wrapped: BoundWitnessWrapper<T> = await BoundWitnessWrapper.parse(bw)\n result[await wrapped.dataHash()] = await BoundWitnessWrapper.parse(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 BoundWitnessWrapper.payloadsDataHashMap(this.payloads))[innerBoundwitnessHash],\n )\n const innerBoundwitness: BoundWitnessWrapper<TBoundWitness> | undefined = 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<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsDataHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\n }\n\n async payloadsByHashes<T extends TPayload>(hashes: string[]): Promise<T[]> {\n const map = await this.payloadsHashMap()\n return hashes.map<T>((hash) => assertEx(map[hash], 'Hash not found') as T)\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<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsDataHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n async payloadsHashMap(): Promise<Record<string, TPayload>> {\n this._payloadMap = this._payloadMap ?? (await BoundWitnessWrapper.payloadsHashMap<TPayload>(this.payloads))\n return this._payloadMap\n }\n\n prev(address: string) {\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 } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessWrapper } from './BoundWitnessWrapper'\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\n ? 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 /*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 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","_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","bw","PayloadBuilder","build","Promise","all","map","Error","unwrapped","unwrap","toDataHashMap","payloadsHashMap","toHashMap","tryParse","schema","BoundWitnessSchema","wrappedDataHashMap","boundWitnesses","result","dataHash","wrappedHashMap","wrapped","dig","depth","innerBoundwitnessIndex","indexOf","innerBoundwitnessHash","innerBoundwitnessPayload","asBoundWitness","innerBoundwitness","filterExclude","getMissingPayloads","payloadMap","filter","hash","getWrappedPayloads","hashesBySchema","index","payloadSchema","entries","push","payloadsByDataHashes","hashes","payloadsByHashes","payloadsBySchema","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"]}
|
|
@@ -2,7 +2,9 @@ import { Hash } from '@xylabs/hex';
|
|
|
2
2
|
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
3
3
|
import { Payload, WithMeta } from '@xyo-network/payload-model';
|
|
4
4
|
import { PayloadWrapper, PayloadWrapperBase } from '@xyo-network/payload-wrapper';
|
|
5
|
-
export declare const isBoundWitnessWrapper: (value?: unknown) => value is
|
|
5
|
+
export declare const isBoundWitnessWrapper: (value?: unknown) => value is BoundWitnessWrapper<import("@xyo-network/payload-model").SchemaFields & object & import("@xyo-network/boundwitness-model").BoundWitnessFields & {
|
|
6
|
+
schema: "network.xyo.boundwitness";
|
|
7
|
+
}, {
|
|
6
8
|
schema: string;
|
|
7
9
|
} & object>;
|
|
8
10
|
export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
@@ -29,7 +31,7 @@ export declare class BoundWitnessWrapper<TBoundWitness extends BoundWitness<{
|
|
|
29
31
|
}, {
|
|
30
32
|
schema: string;
|
|
31
33
|
} & object> | null>;
|
|
32
|
-
static parse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
34
|
+
static parse<T extends BoundWitness = BoundWitness, P extends Payload = Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P>>;
|
|
33
35
|
static payloadsDataHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, WithMeta<TPayload>>>;
|
|
34
36
|
static payloadsHashMap<TPayload extends Payload>(payloads: TPayload[]): Promise<Record<Hash, TPayload>>;
|
|
35
37
|
static tryParse<T extends BoundWitness, P extends Payload>(obj: unknown, payloads?: P[]): Promise<BoundWitnessWrapper<T, P> | undefined>;
|