@xyo-network/boundwitness-builder 2.75.0 → 2.75.1

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.
Files changed (72) hide show
  1. package/dist/browser/Builder.d.cts +41 -0
  2. package/dist/browser/Builder.d.cts.map +1 -0
  3. package/dist/browser/Builder.js +3 -4
  4. package/dist/browser/Builder.js.map +1 -1
  5. package/dist/browser/Query/QueryBoundWitness.d.cts +17 -0
  6. package/dist/browser/Query/QueryBoundWitness.d.cts.map +1 -0
  7. package/dist/browser/Query/QueryBoundWitness.js +2 -3
  8. package/dist/browser/Query/QueryBoundWitness.js.map +1 -1
  9. package/dist/browser/Query/QueryBoundWitnessBuilder.d.cts +11 -0
  10. package/dist/browser/Query/QueryBoundWitnessBuilder.d.cts.map +1 -0
  11. package/dist/browser/Query/QueryBoundWitnessBuilder.js +8 -150
  12. package/dist/browser/Query/QueryBoundWitnessBuilder.js.map +1 -1
  13. package/dist/browser/Query/QueryBoundWitnessValidator.d.cts +11 -0
  14. package/dist/browser/Query/QueryBoundWitnessValidator.d.cts.map +1 -0
  15. package/dist/browser/Query/QueryBoundWitnessValidator.js +4 -10
  16. package/dist/browser/Query/QueryBoundWitnessValidator.js.map +1 -1
  17. package/dist/browser/Query/QueryBoundWitnessWrapper.d.cts +18 -0
  18. package/dist/browser/Query/QueryBoundWitnessWrapper.d.cts.map +1 -0
  19. package/dist/browser/Query/QueryBoundWitnessWrapper.js +10 -64
  20. package/dist/browser/Query/QueryBoundWitnessWrapper.js.map +1 -1
  21. package/dist/browser/Query/index.d.cts +5 -0
  22. package/dist/browser/Query/index.d.cts.map +1 -0
  23. package/dist/browser/Query/index.js +4 -270
  24. package/dist/browser/Query/index.js.map +1 -1
  25. package/dist/browser/index.d.cts +3 -0
  26. package/dist/browser/index.d.cts.map +1 -0
  27. package/dist/browser/index.js +2 -269
  28. package/dist/browser/index.js.map +1 -1
  29. package/dist/docs.json +18622 -0
  30. package/dist/node/Builder.d.cts +41 -0
  31. package/dist/node/Builder.d.cts.map +1 -0
  32. package/dist/node/Builder.js +15 -9
  33. package/dist/node/Builder.js.map +1 -1
  34. package/dist/node/Builder.mjs +14 -9
  35. package/dist/node/Builder.mjs.map +1 -1
  36. package/dist/node/Query/QueryBoundWitness.d.cts +17 -0
  37. package/dist/node/Query/QueryBoundWitness.d.cts.map +1 -0
  38. package/dist/node/Query/QueryBoundWitness.js +4 -2
  39. package/dist/node/Query/QueryBoundWitness.js.map +1 -1
  40. package/dist/node/Query/QueryBoundWitness.mjs +3 -2
  41. package/dist/node/Query/QueryBoundWitness.mjs.map +1 -1
  42. package/dist/node/Query/QueryBoundWitnessBuilder.d.cts +11 -0
  43. package/dist/node/Query/QueryBoundWitnessBuilder.d.cts.map +1 -0
  44. package/dist/node/Query/QueryBoundWitnessBuilder.js +155 -7
  45. package/dist/node/Query/QueryBoundWitnessBuilder.js.map +1 -1
  46. package/dist/node/Query/QueryBoundWitnessBuilder.mjs +155 -8
  47. package/dist/node/Query/QueryBoundWitnessBuilder.mjs.map +1 -1
  48. package/dist/node/Query/QueryBoundWitnessValidator.d.cts +11 -0
  49. package/dist/node/Query/QueryBoundWitnessValidator.d.cts.map +1 -0
  50. package/dist/node/Query/QueryBoundWitnessValidator.js +13 -6
  51. package/dist/node/Query/QueryBoundWitnessValidator.js.map +1 -1
  52. package/dist/node/Query/QueryBoundWitnessValidator.mjs +11 -5
  53. package/dist/node/Query/QueryBoundWitnessValidator.mjs.map +1 -1
  54. package/dist/node/Query/QueryBoundWitnessWrapper.d.cts +18 -0
  55. package/dist/node/Query/QueryBoundWitnessWrapper.d.cts.map +1 -0
  56. package/dist/node/Query/QueryBoundWitnessWrapper.js +66 -11
  57. package/dist/node/Query/QueryBoundWitnessWrapper.js.map +1 -1
  58. package/dist/node/Query/QueryBoundWitnessWrapper.mjs +64 -10
  59. package/dist/node/Query/QueryBoundWitnessWrapper.mjs.map +1 -1
  60. package/dist/node/Query/index.d.cts +5 -0
  61. package/dist/node/Query/index.d.cts.map +1 -0
  62. package/dist/node/Query/index.js +287 -9
  63. package/dist/node/Query/index.js.map +1 -1
  64. package/dist/node/Query/index.mjs +275 -4
  65. package/dist/node/Query/index.mjs.map +1 -1
  66. package/dist/node/index.d.cts +3 -0
  67. package/dist/node/index.d.cts.map +1 -0
  68. package/dist/node/index.js +287 -5
  69. package/dist/node/index.js.map +1 -1
  70. package/dist/node/index.mjs +274 -2
  71. package/dist/node/index.mjs.map +1 -1
  72. package/package.json +17 -17
@@ -1,28 +1,175 @@
1
+ // src/Query/QueryBoundWitnessBuilder.ts
2
+ import { assertEx as assertEx2 } from "@xylabs/assert";
3
+ import { PayloadWrapper as PayloadWrapper2 } from "@xyo-network/payload-wrapper";
4
+
5
+ // src/Builder.ts
1
6
  import { assertEx } from "@xylabs/assert";
2
- import { PayloadWrapper } from "@xyo-network/payload-wrapper";
3
- import { BoundWitnessBuilder } from "../Builder";
4
- import { QueryBoundWitnessSchema } from "./QueryBoundWitness";
5
- class QueryBoundWitnessBuilder extends BoundWitnessBuilder {
7
+ import { Buffer } from "@xylabs/buffer";
8
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
9
+ import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
10
+ import { PayloadHasher, sortFields } from "@xyo-network/core";
11
+ import { PayloadWrapper } from "@xyo-network/payload";
12
+ import { Mutex } from "async-mutex";
13
+ var BoundWitnessBuilder = class _BoundWitnessBuilder {
14
+ constructor(config = { inlinePayloads: false }, logger) {
15
+ this.config = config;
16
+ this.logger = logger;
17
+ }
18
+ static _buildMutex = new Mutex();
19
+ _accounts = [];
20
+ _errorHashes;
21
+ _errors = [];
22
+ _payloadHashes;
23
+ _payloadSchemas;
24
+ _payloads = [];
25
+ _timestamp = Date.now();
26
+ get _payload_schemas() {
27
+ return this._payloadSchemas ?? this._payloads.map((payload) => {
28
+ return assertEx(payload.schema, () => this.missingSchemaMessage(payload));
29
+ });
30
+ }
31
+ async build(meta = false) {
32
+ return await _BoundWitnessBuilder._buildMutex.runExclusive(async () => {
33
+ var _a;
34
+ const hashableFields = await this.hashableFields();
35
+ const _hash = await BoundWitnessWrapper.hashAsync(hashableFields);
36
+ const previousHashes = this._accounts.map((account) => account.previousHash);
37
+ const ret = {
38
+ ...hashableFields,
39
+ _signatures: await this.signatures(_hash, previousHashes)
40
+ };
41
+ if (meta ?? ((_a = this.config) == null ? void 0 : _a.meta)) {
42
+ const bwWithMeta = ret;
43
+ bwWithMeta._client = "js";
44
+ bwWithMeta._hash = _hash;
45
+ bwWithMeta._timestamp = this._timestamp;
46
+ }
47
+ if (this.config.inlinePayloads) {
48
+ const anyRet = ret;
49
+ anyRet._payloads = this.inlinePayloads();
50
+ }
51
+ return [ret, this._payloads, this._errors];
52
+ });
53
+ }
54
+ error(payload) {
55
+ const unwrappedPayload = PayloadWrapper.unwrap(payload);
56
+ assertEx(this._errorHashes === void 0, "Can not set errors when hashes already set");
57
+ if (unwrappedPayload) {
58
+ this._errors.push(assertEx(sortFields(unwrappedPayload)));
59
+ }
60
+ return this;
61
+ }
62
+ errors(errors) {
63
+ errors == null ? void 0 : errors.forEach((error) => {
64
+ if (error !== null) {
65
+ this.error(error);
66
+ }
67
+ });
68
+ return this;
69
+ }
70
+ async hashableFields() {
71
+ var _a, _b;
72
+ const addresses = this._accounts.map((account) => account.address);
73
+ const previous_hashes = this._accounts.map((account) => account.previousHash ?? null);
74
+ const payload_hashes = assertEx(await this.getPayloadHashes(), "Missing payload_hashes");
75
+ const payload_schemas = assertEx(this._payload_schemas, "Missing payload_schemas");
76
+ const result = {
77
+ addresses: assertEx(addresses, "Missing addresses"),
78
+ payload_hashes,
79
+ payload_schemas,
80
+ previous_hashes,
81
+ schema: BoundWitnessSchema
82
+ };
83
+ assertEx(((_a = result.payload_hashes) == null ? void 0 : _a.length) === ((_b = result.payload_schemas) == null ? void 0 : _b.length), "Payload hash/schema mismatch");
84
+ assertEx(!result.payload_hashes.reduce((inValid, hash) => inValid || !hash, false), "nulls found in hashes");
85
+ assertEx(!result.payload_schemas.reduce((inValid, schema) => inValid || !schema, false), "nulls found in schemas");
86
+ if (this.config.timestamp ?? true) {
87
+ result.timestamp = this._timestamp;
88
+ }
89
+ return result;
90
+ }
91
+ hashes(hashes, schema) {
92
+ assertEx(this.payloads.length === 0, "Can not set hashes when payloads already set");
93
+ this._payloadHashes = hashes;
94
+ this._payloadSchemas = schema;
95
+ return this;
96
+ }
97
+ payload(payload) {
98
+ const unwrappedPayload = PayloadWrapper.unwrap(payload);
99
+ assertEx(this._payloadHashes === void 0, "Can not set payloads when hashes already set");
100
+ if (unwrappedPayload) {
101
+ this._payloads.push(assertEx(sortFields(unwrappedPayload)));
102
+ }
103
+ return this;
104
+ }
105
+ payloads(payloads) {
106
+ payloads == null ? void 0 : payloads.forEach((payload) => {
107
+ if (payload !== null) {
108
+ this.payload(payload);
109
+ }
110
+ });
111
+ return this;
112
+ }
113
+ witness(account) {
114
+ var _a;
115
+ (_a = this._accounts) == null ? void 0 : _a.push(account);
116
+ return this;
117
+ }
118
+ witnesses(accounts) {
119
+ var _a;
120
+ (_a = this._accounts) == null ? void 0 : _a.push(...accounts);
121
+ return this;
122
+ }
123
+ async signatures(_hash, previousHashes) {
124
+ const hash = Buffer.from(_hash, "hex");
125
+ return await Promise.all(
126
+ this._accounts.map(async (account, index) => Buffer.from(await account.sign(hash, previousHashes[index])).toString("hex"))
127
+ );
128
+ }
129
+ async getPayloadHashes() {
130
+ return this._payloadHashes ?? await Promise.all(this._payloads.map((payload) => PayloadHasher.hashAsync(payload)));
131
+ }
132
+ inlinePayloads() {
133
+ return this._payloads.map((payload, index) => {
134
+ return {
135
+ ...payload,
136
+ schema: this._payload_schemas[index]
137
+ };
138
+ });
139
+ }
140
+ missingSchemaMessage(payload) {
141
+ return `Builder: Missing Schema
142
+ ${JSON.stringify(payload, null, 2)}`;
143
+ }
144
+ };
145
+
146
+ // src/Query/QueryBoundWitness.ts
147
+ import { BoundWitnessSchema as BoundWitnessSchema2, isBoundWitness } from "@xyo-network/boundwitness-model";
148
+ var QueryBoundWitnessSchema = BoundWitnessSchema2;
149
+
150
+ // src/Query/QueryBoundWitnessBuilder.ts
151
+ var QueryBoundWitnessBuilder = class extends BoundWitnessBuilder {
6
152
  _query;
7
153
  _resultSet;
8
154
  async hashableFields() {
155
+ var _a;
9
156
  return {
10
157
  ...await super.hashableFields(),
11
- query: assertEx(await this._query?.hashAsync(), "No Query Specified"),
158
+ query: assertEx2(await ((_a = this._query) == null ? void 0 : _a.hashAsync()), "No Query Specified"),
12
159
  schema: QueryBoundWitnessSchema
13
160
  };
14
161
  }
15
162
  query(query) {
16
- this._query = PayloadWrapper.wrap(query);
163
+ this._query = PayloadWrapper2.wrap(query);
17
164
  this.payload(this._query.payload());
18
165
  return this;
19
166
  }
20
167
  resultSet(payloadSet) {
21
- this._resultSet = PayloadWrapper.wrap(payloadSet);
168
+ this._resultSet = PayloadWrapper2.wrap(payloadSet);
22
169
  this.payload(this._resultSet.payload());
23
170
  return this;
24
171
  }
25
- }
172
+ };
26
173
  export {
27
174
  QueryBoundWitnessBuilder
28
175
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Query/QueryBoundWitnessBuilder.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessBuilder } from '../Builder'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: PayloadWrapper<TQuery> | undefined\n private _resultSet: PayloadWrapper<PayloadSetPayload> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(await this._query?.hashAsync(), 'No Query Specified'),\n schema: QueryBoundWitnessSchema,\n }\n }\n\n query<T extends TQuery>(query: T) {\n this._query = PayloadWrapper.wrap(query)\n this.payload(this._query.payload())\n return this\n }\n\n resultSet<T extends PayloadSetPayload>(payloadSet: T) {\n this._resultSet = PayloadWrapper.wrap(payloadSet)\n this.payload(this._resultSet.payload())\n return this\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAEzB,SAAS,sBAAsB;AAE/B,SAAS,2BAA2B;AACpC,SAA4B,+BAA+B;AAEpD,MAAM,iCAGH,oBAAmC;AAAA,EACnC;AAAA,EACA;AAAA,EAER,MAAe,iBAAyC;AACtD,WAAO;AAAA,MACL,GAAI,MAAM,MAAM,eAAe;AAAA,MAC/B,OAAO,SAAS,MAAM,KAAK,QAAQ,UAAU,GAAG,oBAAoB;AAAA,MACpE,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAwB,OAAU;AAChC,SAAK,SAAS,eAAe,KAAK,KAAK;AACvC,SAAK,QAAQ,KAAK,OAAO,QAAQ,CAAC;AAClC,WAAO;AAAA,EACT;AAAA,EAEA,UAAuC,YAAe;AACpD,SAAK,aAAa,eAAe,KAAK,UAAU;AAChD,SAAK,QAAQ,KAAK,WAAW,QAAQ,CAAC;AACtC,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/Query/QueryBoundWitnessBuilder.ts","../../../src/Builder.ts","../../../src/Query/QueryBoundWitness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { BoundWitnessBuilder } from '../Builder'\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\n\nexport class QueryBoundWitnessBuilder<\n TBoundWitness extends QueryBoundWitness = QueryBoundWitness,\n TQuery extends Query = Query,\n> extends BoundWitnessBuilder<TBoundWitness> {\n private _query: PayloadWrapper<TQuery> | undefined\n private _resultSet: PayloadWrapper<PayloadSetPayload> | undefined\n\n override async hashableFields(): Promise<TBoundWitness> {\n return {\n ...(await super.hashableFields()),\n query: assertEx(await this._query?.hashAsync(), 'No Query Specified'),\n schema: QueryBoundWitnessSchema,\n }\n }\n\n query<T extends TQuery>(query: T) {\n this._query = PayloadWrapper.wrap(query)\n this.payload(this._query.payload())\n return this\n }\n\n resultSet<T extends PayloadSetPayload>(payloadSet: T) {\n this._resultSet = PayloadWrapper.wrap(payloadSet)\n this.payload(this._resultSet.payload())\n return this\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Buffer } from '@xylabs/buffer'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitness, BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { Data, PayloadHasher, sortFields } from '@xyo-network/core'\nimport { PayloadWrapper } from '@xyo-network/payload'\nimport { ModuleError, Payload } from '@xyo-network/payload-model'\nimport { Logger } from '@xyo-network/shared'\nimport { Mutex } from 'async-mutex'\n\nexport interface BoundWitnessBuilderConfig {\n /** Whether or not the payloads should be included in the metadata sent to and recorded by the ArchivistApi */\n readonly inlinePayloads?: boolean\n readonly meta?: boolean\n readonly timestamp?: boolean\n}\n\nexport class BoundWitnessBuilder<TBoundWitness extends BoundWitness<{ schema: string }> = BoundWitness, TPayload extends Payload = Payload> {\n private static readonly _buildMutex = new Mutex()\n private _accounts: AccountInstance[] = []\n private _errorHashes: string[] | undefined\n private _errors: ModuleError[] = []\n private _payloadHashes: string[] | undefined\n private _payloadSchemas: string[] | undefined\n private _payloads: TPayload[] = []\n private _timestamp = Date.now()\n\n constructor(\n readonly config: BoundWitnessBuilderConfig = { inlinePayloads: false },\n protected readonly logger?: Logger,\n ) {}\n\n private get _payload_schemas(): string[] {\n return (\n this._payloadSchemas ??\n this._payloads.map((payload) => {\n return assertEx(payload.schema, () => this.missingSchemaMessage(payload))\n })\n )\n }\n\n async build(meta = false): Promise<[TBoundWitness, TPayload[], ModuleError[]]> {\n return await BoundWitnessBuilder._buildMutex.runExclusive(async () => {\n const hashableFields = await this.hashableFields()\n const _hash = await BoundWitnessWrapper.hashAsync(hashableFields)\n\n /* get all the previousHashes to verify atomic signing */\n const previousHashes = this._accounts.map((account) => account.previousHash)\n\n const ret: TBoundWitness = {\n ...hashableFields,\n _signatures: await this.signatures(_hash, previousHashes),\n }\n if (meta ?? this.config?.meta) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bwWithMeta = ret as any\n bwWithMeta._client = 'js'\n bwWithMeta._hash = _hash\n bwWithMeta._timestamp = this._timestamp\n }\n if (this.config.inlinePayloads) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const anyRet = ret as any\n //leaving this in here to prevent breaking code (for now)\n anyRet._payloads = this.inlinePayloads()\n }\n return [ret, this._payloads, this._errors]\n })\n }\n\n error(payload?: ModuleError) {\n const unwrappedPayload = PayloadWrapper.unwrap(payload)\n assertEx(this._errorHashes === undefined, 'Can not set errors when hashes already set')\n if (unwrappedPayload) {\n this._errors.push(assertEx(sortFields(unwrappedPayload)))\n }\n return this\n }\n\n errors(errors?: (ModuleError | null)[]) {\n errors?.forEach((error) => {\n if (error !== null) {\n this.error(error)\n }\n })\n return this\n }\n\n async hashableFields(): Promise<TBoundWitness> {\n const addresses = this._accounts.map((account) => account.address)\n const previous_hashes = this._accounts.map((account) => account.previousHash ?? null)\n const payload_hashes = assertEx(await this.getPayloadHashes(), 'Missing payload_hashes')\n const payload_schemas = assertEx(this._payload_schemas, 'Missing payload_schemas')\n const result: TBoundWitness = {\n addresses: assertEx(addresses, 'Missing addresses'),\n payload_hashes,\n payload_schemas,\n previous_hashes,\n schema: BoundWitnessSchema,\n } as TBoundWitness\n\n assertEx(result.payload_hashes?.length === result.payload_schemas?.length, 'Payload hash/schema mismatch')\n\n assertEx(!result.payload_hashes.reduce((inValid, hash) => inValid || !hash, false), 'nulls found in hashes')\n\n assertEx(!result.payload_schemas.reduce((inValid, schema) => inValid || !schema, false), 'nulls found in schemas')\n\n if (this.config.timestamp ?? true) {\n result.timestamp = this._timestamp\n }\n\n return result\n }\n\n hashes(hashes: string[], schema: string[]) {\n assertEx(this.payloads.length === 0, 'Can not set hashes when payloads already set')\n this._payloadHashes = hashes\n this._payloadSchemas = schema\n return this\n }\n\n payload(payload?: TPayload) {\n const unwrappedPayload = PayloadWrapper.unwrap<TPayload>(payload)\n assertEx(this._payloadHashes === undefined, 'Can not set payloads when hashes already set')\n if (unwrappedPayload) {\n this._payloads.push(assertEx(sortFields<TPayload>(unwrappedPayload)))\n }\n return this\n }\n\n payloads(payloads?: (TPayload | null)[]) {\n payloads?.forEach((payload) => {\n if (payload !== null) {\n this.payload(payload)\n }\n })\n return this\n }\n\n witness(account: AccountInstance) {\n this._accounts?.push(account)\n return this\n }\n\n witnesses(accounts: AccountInstance[]) {\n this._accounts?.push(...accounts)\n return this\n }\n\n protected async signatures(_hash: string, previousHashes: (string | Data | undefined)[]) {\n const hash = Buffer.from(_hash, 'hex')\n return await Promise.all(\n this._accounts.map(async (account, index) => Buffer.from(await account.sign(hash, previousHashes[index])).toString('hex')),\n )\n }\n\n private async getPayloadHashes(): Promise<string[]> {\n return this._payloadHashes ?? (await Promise.all(this._payloads.map((payload) => PayloadHasher.hashAsync(payload))))\n }\n\n private inlinePayloads() {\n return this._payloads.map<TPayload>((payload, index) => {\n return {\n ...payload,\n schema: this._payload_schemas[index],\n }\n })\n }\n\n private missingSchemaMessage(payload: Payload) {\n return `Builder: Missing Schema\\n${JSON.stringify(payload, null, 2)}`\n }\n}\n","import { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type QueryBoundWitnessSchema = BoundWitnessSchema\nexport const QueryBoundWitnessSchema: QueryBoundWitnessSchema = BoundWitnessSchema\n\nexport type QueryBoundWitness = BoundWitness<{\n query: string\n resultSet?: string\n schema: BoundWitnessSchema\n}>\n\nexport const isQueryBoundWitness = (x?: Payload | null): x is QueryBoundWitness => isBoundWitness(x) && (x as QueryBoundWitness)?.query !== undefined\n"],"mappings":"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","names":["assertEx","PayloadWrapper","BoundWitnessSchema","assertEx","PayloadWrapper"]}
@@ -0,0 +1,11 @@
1
+ import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator';
2
+ import { Query } from '@xyo-network/payload-model';
3
+ import { QueryBoundWitness } from './QueryBoundWitness';
4
+ export declare class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {
5
+ private _query;
6
+ protected get expectedSchema(): string;
7
+ static isQueryBoundWitnessValidator(obj: unknown): boolean;
8
+ validate(): Promise<Error[]>;
9
+ validateResultSet(): Promise<Error[]>;
10
+ }
11
+ //# sourceMappingURL=QueryBoundWitnessValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBoundWitnessValidator.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAG3E,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGrE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAA;AAChF,qBAAa,0BAA0B,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,qBAAqB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,MAAM,CAA+B;IAE7C,cAAuB,cAAc,IAAI,MAAM,CAE9C;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,OAAO;IAIjC,QAAQ;IAOjB,iBAAiB;CAwBxB"}
@@ -16,6 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/Query/QueryBoundWitnessValidator.ts
19
21
  var QueryBoundWitnessValidator_exports = {};
20
22
  __export(QueryBoundWitnessValidator_exports, {
21
23
  QueryBoundWitnessValidator: () => QueryBoundWitnessValidator
@@ -26,14 +28,19 @@ var import_boundwitness_validator = require("@xyo-network/boundwitness-validator
26
28
  var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
27
29
  var import_error = require("@xyo-network/error");
28
30
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
29
- var import_QueryBoundWitness = require("./QueryBoundWitness");
30
- class QueryBoundWitnessValidator extends import_boundwitness_validator.BoundWitnessValidator {
31
+
32
+ // src/Query/QueryBoundWitness.ts
33
+ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
34
+ var QueryBoundWitnessSchema = import_boundwitness_model.BoundWitnessSchema;
35
+
36
+ // src/Query/QueryBoundWitnessValidator.ts
37
+ var QueryBoundWitnessValidator = class _QueryBoundWitnessValidator extends import_boundwitness_validator.BoundWitnessValidator {
31
38
  _query;
32
39
  get expectedSchema() {
33
- return import_QueryBoundWitness.QueryBoundWitnessSchema;
40
+ return QueryBoundWitnessSchema;
34
41
  }
35
42
  static isQueryBoundWitnessValidator(obj) {
36
- return obj?.constructor === QueryBoundWitnessValidator;
43
+ return (obj == null ? void 0 : obj.constructor) === _QueryBoundWitnessValidator;
37
44
  }
38
45
  async validate() {
39
46
  return [
@@ -47,7 +54,7 @@ class QueryBoundWitnessValidator extends import_boundwitness_validator.BoundWitn
47
54
  const resultSetHash = (0, import_assert.assertEx)(this.obj.resultSet, "Missing ResultSet");
48
55
  const wrapper = import_boundwitness_wrapper.BoundWitnessWrapper.parse(this.obj);
49
56
  const resultSet = import_payload_wrapper.PayloadWrapper.wrap((await wrapper.payloadMap())[resultSetHash]);
50
- const required = resultSet?.payload().required;
57
+ const required = resultSet == null ? void 0 : resultSet.payload().required;
51
58
  if (required) {
52
59
  Object.entries(required).forEach(([key, value]) => {
53
60
  const found = wrapper.payloadSchemas.reduce((count, schema) => {
@@ -65,7 +72,7 @@ class QueryBoundWitnessValidator extends import_boundwitness_validator.BoundWitn
65
72
  }
66
73
  return errors;
67
74
  }
68
- }
75
+ };
69
76
  // Annotate the CommonJS export names for ESM import in node:
70
77
  0 && (module.exports = {
71
78
  QueryBoundWitnessValidator
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { handleError } from '@xyo-network/error'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\nexport class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {\n private _query: PayloadWrapper<T> | undefined\n\n protected override get expectedSchema(): string {\n return QueryBoundWitnessSchema\n }\n\n static isQueryBoundWitnessValidator(obj: unknown) {\n return (obj as QueryBoundWitnessValidator)?.constructor === QueryBoundWitnessValidator\n }\n\n override async validate() {\n return [\n ...(await super.validate()),\n // ...this.validateResultSet()\n ]\n }\n\n async validateResultSet() {\n const errors: Error[] = []\n try {\n const resultSetHash = assertEx(this.obj.resultSet, 'Missing ResultSet')\n const wrapper = BoundWitnessWrapper.parse(this.obj)\n const resultSet = PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadMap())[resultSetHash] as PayloadSetPayload)\n const required = resultSet?.payload().required\n if (required) {\n Object.entries(required).forEach(([key, value]) => {\n const found = wrapper.payloadSchemas.reduce((count, schema) => {\n return count + (schema === key ? 1 : 0)\n }, 0)\n if (found !== value) {\n errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))\n }\n })\n }\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n return errors\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AACzB,oCAAsC;AACtC,kCAAoC;AACpC,mBAA4B;AAE5B,6BAA+B;AAE/B,+BAA2D;AACpD,MAAM,mCAA4D,oDAAyC;AAAA,EACxG;AAAA,EAER,IAAuB,iBAAyB;AAC9C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,6BAA6B,KAAc;AAChD,WAAQ,KAAoC,gBAAgB;AAAA,EAC9D;AAAA,EAEA,MAAe,WAAW;AACxB,WAAO;AAAA,MACL,GAAI,MAAM,MAAM,SAAS;AAAA;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB;AACxB,UAAM,SAAkB,CAAC;AACzB,QAAI;AACF,YAAM,oBAAgB,wBAAS,KAAK,IAAI,WAAW,mBAAmB;AACtE,YAAM,UAAU,gDAAoB,MAAM,KAAK,GAAG;AAClD,YAAM,YAAY,sCAAe,MAAyB,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAsB;AACzH,YAAM,WAAW,WAAW,QAAQ,EAAE;AACtC,UAAI,UAAU;AACZ,eAAO,QAAQ,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACjD,gBAAM,QAAQ,QAAQ,eAAe,OAAO,CAAC,OAAO,WAAW;AAC7D,mBAAO,SAAS,WAAW,MAAM,IAAI;AAAA,UACvC,GAAG,CAAC;AACJ,cAAI,UAAU,OAAO;AACnB,mBAAO,KAAK,MAAM,sCAAsC,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,UACnF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,IAAI;AACX,oCAAY,IAAI,CAAC,UAAU;AACzB,eAAO,KAAK,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/Query/QueryBoundWitnessValidator.ts","../../../src/Query/QueryBoundWitness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { handleError } from '@xyo-network/error'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\nexport class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {\n private _query: PayloadWrapper<T> | undefined\n\n protected override get expectedSchema(): string {\n return QueryBoundWitnessSchema\n }\n\n static isQueryBoundWitnessValidator(obj: unknown) {\n return (obj as QueryBoundWitnessValidator)?.constructor === QueryBoundWitnessValidator\n }\n\n override async validate() {\n return [\n ...(await super.validate()),\n // ...this.validateResultSet()\n ]\n }\n\n async validateResultSet() {\n const errors: Error[] = []\n try {\n const resultSetHash = assertEx(this.obj.resultSet, 'Missing ResultSet')\n const wrapper = BoundWitnessWrapper.parse(this.obj)\n const resultSet = PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadMap())[resultSetHash] as PayloadSetPayload)\n const required = resultSet?.payload().required\n if (required) {\n Object.entries(required).forEach(([key, value]) => {\n const found = wrapper.payloadSchemas.reduce((count, schema) => {\n return count + (schema === key ? 1 : 0)\n }, 0)\n if (found !== value) {\n errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))\n }\n })\n }\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n return errors\n }\n}\n","import { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type QueryBoundWitnessSchema = BoundWitnessSchema\nexport const QueryBoundWitnessSchema: QueryBoundWitnessSchema = BoundWitnessSchema\n\nexport type QueryBoundWitness = BoundWitness<{\n query: string\n resultSet?: string\n schema: BoundWitnessSchema\n}>\n\nexport const isQueryBoundWitness = (x?: Payload | null): x is QueryBoundWitness => isBoundWitness(x) && (x as QueryBoundWitness)?.query !== undefined\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AACzB,oCAAsC;AACtC,kCAAoC;AACpC,mBAA4B;AAE5B,6BAA+B;;;ACL/B,gCAAiE;AAI1D,IAAM,0BAAmD;;;ADIzD,IAAM,6BAAN,MAAM,oCAA4D,oDAAyC;AAAA,EACxG;AAAA,EAER,IAAuB,iBAAyB;AAC9C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,6BAA6B,KAAc;AAChD,YAAQ,2BAAoC,iBAAgB;AAAA,EAC9D;AAAA,EAEA,MAAe,WAAW;AACxB,WAAO;AAAA,MACL,GAAI,MAAM,MAAM,SAAS;AAAA;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB;AACxB,UAAM,SAAkB,CAAC;AACzB,QAAI;AACF,YAAM,oBAAgB,wBAAS,KAAK,IAAI,WAAW,mBAAmB;AACtE,YAAM,UAAU,gDAAoB,MAAM,KAAK,GAAG;AAClD,YAAM,YAAY,sCAAe,MAAyB,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAsB;AACzH,YAAM,WAAW,uCAAW,UAAU;AACtC,UAAI,UAAU;AACZ,eAAO,QAAQ,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACjD,gBAAM,QAAQ,QAAQ,eAAe,OAAO,CAAC,OAAO,WAAW;AAC7D,mBAAO,SAAS,WAAW,MAAM,IAAI;AAAA,UACvC,GAAG,CAAC;AACJ,cAAI,UAAU,OAAO;AACnB,mBAAO,KAAK,MAAM,sCAAsC,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,UACnF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,IAAI;AACX,oCAAY,IAAI,CAAC,UAAU;AACzB,eAAO,KAAK,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,16 +1,22 @@
1
+ // src/Query/QueryBoundWitnessValidator.ts
1
2
  import { assertEx } from "@xylabs/assert";
2
3
  import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
3
4
  import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
4
5
  import { handleError } from "@xyo-network/error";
5
6
  import { PayloadWrapper } from "@xyo-network/payload-wrapper";
6
- import { QueryBoundWitnessSchema } from "./QueryBoundWitness";
7
- class QueryBoundWitnessValidator extends BoundWitnessValidator {
7
+
8
+ // src/Query/QueryBoundWitness.ts
9
+ import { BoundWitnessSchema, isBoundWitness } from "@xyo-network/boundwitness-model";
10
+ var QueryBoundWitnessSchema = BoundWitnessSchema;
11
+
12
+ // src/Query/QueryBoundWitnessValidator.ts
13
+ var QueryBoundWitnessValidator = class _QueryBoundWitnessValidator extends BoundWitnessValidator {
8
14
  _query;
9
15
  get expectedSchema() {
10
16
  return QueryBoundWitnessSchema;
11
17
  }
12
18
  static isQueryBoundWitnessValidator(obj) {
13
- return obj?.constructor === QueryBoundWitnessValidator;
19
+ return (obj == null ? void 0 : obj.constructor) === _QueryBoundWitnessValidator;
14
20
  }
15
21
  async validate() {
16
22
  return [
@@ -24,7 +30,7 @@ class QueryBoundWitnessValidator extends BoundWitnessValidator {
24
30
  const resultSetHash = assertEx(this.obj.resultSet, "Missing ResultSet");
25
31
  const wrapper = BoundWitnessWrapper.parse(this.obj);
26
32
  const resultSet = PayloadWrapper.wrap((await wrapper.payloadMap())[resultSetHash]);
27
- const required = resultSet?.payload().required;
33
+ const required = resultSet == null ? void 0 : resultSet.payload().required;
28
34
  if (required) {
29
35
  Object.entries(required).forEach(([key, value]) => {
30
36
  const found = wrapper.payloadSchemas.reduce((count, schema) => {
@@ -42,7 +48,7 @@ class QueryBoundWitnessValidator extends BoundWitnessValidator {
42
48
  }
43
49
  return errors;
44
50
  }
45
- }
51
+ };
46
52
  export {
47
53
  QueryBoundWitnessValidator
48
54
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Query/QueryBoundWitnessValidator.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { handleError } from '@xyo-network/error'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\nexport class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {\n private _query: PayloadWrapper<T> | undefined\n\n protected override get expectedSchema(): string {\n return QueryBoundWitnessSchema\n }\n\n static isQueryBoundWitnessValidator(obj: unknown) {\n return (obj as QueryBoundWitnessValidator)?.constructor === QueryBoundWitnessValidator\n }\n\n override async validate() {\n return [\n ...(await super.validate()),\n // ...this.validateResultSet()\n ]\n }\n\n async validateResultSet() {\n const errors: Error[] = []\n try {\n const resultSetHash = assertEx(this.obj.resultSet, 'Missing ResultSet')\n const wrapper = BoundWitnessWrapper.parse(this.obj)\n const resultSet = PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadMap())[resultSetHash] as PayloadSetPayload)\n const required = resultSet?.payload().required\n if (required) {\n Object.entries(required).forEach(([key, value]) => {\n const found = wrapper.payloadSchemas.reduce((count, schema) => {\n return count + (schema === key ? 1 : 0)\n }, 0)\n if (found !== value) {\n errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))\n }\n })\n }\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n return errors\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB;AAE/B,SAA4B,+BAA+B;AACpD,MAAM,mCAA4D,sBAAyC;AAAA,EACxG;AAAA,EAER,IAAuB,iBAAyB;AAC9C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,6BAA6B,KAAc;AAChD,WAAQ,KAAoC,gBAAgB;AAAA,EAC9D;AAAA,EAEA,MAAe,WAAW;AACxB,WAAO;AAAA,MACL,GAAI,MAAM,MAAM,SAAS;AAAA;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB;AACxB,UAAM,SAAkB,CAAC;AACzB,QAAI;AACF,YAAM,gBAAgB,SAAS,KAAK,IAAI,WAAW,mBAAmB;AACtE,YAAM,UAAU,oBAAoB,MAAM,KAAK,GAAG;AAClD,YAAM,YAAY,eAAe,MAAyB,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAsB;AACzH,YAAM,WAAW,WAAW,QAAQ,EAAE;AACtC,UAAI,UAAU;AACZ,eAAO,QAAQ,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACjD,gBAAM,QAAQ,QAAQ,eAAe,OAAO,CAAC,OAAO,WAAW;AAC7D,mBAAO,SAAS,WAAW,MAAM,IAAI;AAAA,UACvC,GAAG,CAAC;AACJ,cAAI,UAAU,OAAO;AACnB,mBAAO,KAAK,MAAM,sCAAsC,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,UACnF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,IAAI;AACX,kBAAY,IAAI,CAAC,UAAU;AACzB,eAAO,KAAK,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/Query/QueryBoundWitnessValidator.ts","../../../src/Query/QueryBoundWitness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { handleError } from '@xyo-network/error'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\nexport class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {\n private _query: PayloadWrapper<T> | undefined\n\n protected override get expectedSchema(): string {\n return QueryBoundWitnessSchema\n }\n\n static isQueryBoundWitnessValidator(obj: unknown) {\n return (obj as QueryBoundWitnessValidator)?.constructor === QueryBoundWitnessValidator\n }\n\n override async validate() {\n return [\n ...(await super.validate()),\n // ...this.validateResultSet()\n ]\n }\n\n async validateResultSet() {\n const errors: Error[] = []\n try {\n const resultSetHash = assertEx(this.obj.resultSet, 'Missing ResultSet')\n const wrapper = BoundWitnessWrapper.parse(this.obj)\n const resultSet = PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadMap())[resultSetHash] as PayloadSetPayload)\n const required = resultSet?.payload().required\n if (required) {\n Object.entries(required).forEach(([key, value]) => {\n const found = wrapper.payloadSchemas.reduce((count, schema) => {\n return count + (schema === key ? 1 : 0)\n }, 0)\n if (found !== value) {\n errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))\n }\n })\n }\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n return errors\n }\n}\n","import { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type QueryBoundWitnessSchema = BoundWitnessSchema\nexport const QueryBoundWitnessSchema: QueryBoundWitnessSchema = BoundWitnessSchema\n\nexport type QueryBoundWitness = BoundWitness<{\n query: string\n resultSet?: string\n schema: BoundWitnessSchema\n}>\n\nexport const isQueryBoundWitness = (x?: Payload | null): x is QueryBoundWitness => isBoundWitness(x) && (x as QueryBoundWitness)?.query !== undefined\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,6BAA6B;AACtC,SAAS,2BAA2B;AACpC,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB;;;ACL/B,SAAuB,oBAAoB,sBAAsB;AAI1D,IAAM,0BAAmD;;;ADIzD,IAAM,6BAAN,MAAM,oCAA4D,sBAAyC;AAAA,EACxG;AAAA,EAER,IAAuB,iBAAyB;AAC9C,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,6BAA6B,KAAc;AAChD,YAAQ,2BAAoC,iBAAgB;AAAA,EAC9D;AAAA,EAEA,MAAe,WAAW;AACxB,WAAO;AAAA,MACL,GAAI,MAAM,MAAM,SAAS;AAAA;AAAA,IAE3B;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB;AACxB,UAAM,SAAkB,CAAC;AACzB,QAAI;AACF,YAAM,gBAAgB,SAAS,KAAK,IAAI,WAAW,mBAAmB;AACtE,YAAM,UAAU,oBAAoB,MAAM,KAAK,GAAG;AAClD,YAAM,YAAY,eAAe,MAAyB,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAsB;AACzH,YAAM,WAAW,uCAAW,UAAU;AACtC,UAAI,UAAU;AACZ,eAAO,QAAQ,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACjD,gBAAM,QAAQ,QAAQ,eAAe,OAAO,CAAC,OAAO,WAAW;AAC7D,mBAAO,SAAS,WAAW,MAAM,IAAI;AAAA,UACvC,GAAG,CAAC;AACJ,cAAI,UAAU,OAAO;AACnB,mBAAO,KAAK,MAAM,sCAAsC,GAAG,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,UACnF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,SAAS,IAAI;AACX,kBAAY,IAAI,CAAC,UAAU;AACzB,eAAO,KAAK,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,18 @@
1
+ import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper';
2
+ import { Payload, Query } from '@xyo-network/payload-model';
3
+ import { PayloadWrapper } from '@xyo-network/payload-wrapper';
4
+ import { QueryBoundWitness } from './QueryBoundWitness';
5
+ export declare class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {
6
+ private _payloadsWithoutQuery;
7
+ private _query;
8
+ private _resultSet;
9
+ private isQueryBoundWitnessWrapper;
10
+ static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T>;
11
+ getErrors(): Promise<Error[]>;
12
+ getQuery(): Promise<T>;
13
+ getResultSet(): Promise<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/payload-model").PayloadSet & {
14
+ schema: "network.xyo.payload.set";
15
+ }>;
16
+ getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]>;
17
+ }
18
+ //# sourceMappingURL=QueryBoundWitnessWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBoundWitnessWrapper.d.ts","sourceRoot":"","sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,OAAO,EAAqB,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,qBAAa,wBAAwB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,CAAE,SAAQ,mBAAmB,CAAC,iBAAiB,CAAC;IAC3G,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAA+B;IAEjD,OAAO,CAAC,0BAA0B,CAAO;IAEzC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,wBAAwB,CAAC,CAAC,CAAC;IAelG,SAAS;IAIZ,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC;IAMtB,YAAY;;;IASH,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;CAaxE"}
@@ -16,45 +16,100 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/Query/QueryBoundWitnessWrapper.ts
19
21
  var QueryBoundWitnessWrapper_exports = {};
20
22
  __export(QueryBoundWitnessWrapper_exports, {
21
23
  QueryBoundWitnessWrapper: () => QueryBoundWitnessWrapper
22
24
  });
23
25
  module.exports = __toCommonJS(QueryBoundWitnessWrapper_exports);
24
- var import_assert = require("@xylabs/assert");
26
+ var import_assert2 = require("@xylabs/assert");
25
27
  var import_lodash = require("@xylabs/lodash");
26
- var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
28
+ var import_boundwitness_wrapper2 = require("@xyo-network/boundwitness-wrapper");
27
29
  var import_core = require("@xyo-network/core");
30
+ var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
31
+
32
+ // src/Query/QueryBoundWitnessValidator.ts
33
+ var import_assert = require("@xylabs/assert");
34
+ var import_boundwitness_validator = require("@xyo-network/boundwitness-validator");
35
+ var import_boundwitness_wrapper = require("@xyo-network/boundwitness-wrapper");
36
+ var import_error = require("@xyo-network/error");
28
37
  var import_payload_wrapper = require("@xyo-network/payload-wrapper");
29
- var import_QueryBoundWitnessValidator = require("./QueryBoundWitnessValidator");
30
- class QueryBoundWitnessWrapper extends import_boundwitness_wrapper.BoundWitnessWrapper {
38
+
39
+ // src/Query/QueryBoundWitness.ts
40
+ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
41
+ var QueryBoundWitnessSchema = import_boundwitness_model.BoundWitnessSchema;
42
+
43
+ // src/Query/QueryBoundWitnessValidator.ts
44
+ var QueryBoundWitnessValidator = class _QueryBoundWitnessValidator extends import_boundwitness_validator.BoundWitnessValidator {
45
+ _query;
46
+ get expectedSchema() {
47
+ return QueryBoundWitnessSchema;
48
+ }
49
+ static isQueryBoundWitnessValidator(obj) {
50
+ return (obj == null ? void 0 : obj.constructor) === _QueryBoundWitnessValidator;
51
+ }
52
+ async validate() {
53
+ return [
54
+ ...await super.validate()
55
+ // ...this.validateResultSet()
56
+ ];
57
+ }
58
+ async validateResultSet() {
59
+ const errors = [];
60
+ try {
61
+ const resultSetHash = (0, import_assert.assertEx)(this.obj.resultSet, "Missing ResultSet");
62
+ const wrapper = import_boundwitness_wrapper.BoundWitnessWrapper.parse(this.obj);
63
+ const resultSet = import_payload_wrapper.PayloadWrapper.wrap((await wrapper.payloadMap())[resultSetHash]);
64
+ const required = resultSet == null ? void 0 : resultSet.payload().required;
65
+ if (required) {
66
+ Object.entries(required).forEach(([key, value]) => {
67
+ const found = wrapper.payloadSchemas.reduce((count, schema) => {
68
+ return count + (schema === key ? 1 : 0);
69
+ }, 0);
70
+ if (found !== value) {
71
+ errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`));
72
+ }
73
+ });
74
+ }
75
+ } catch (ex) {
76
+ (0, import_error.handleError)(ex, (error) => {
77
+ errors.push(error);
78
+ });
79
+ }
80
+ return errors;
81
+ }
82
+ };
83
+
84
+ // src/Query/QueryBoundWitnessWrapper.ts
85
+ var QueryBoundWitnessWrapper = class _QueryBoundWitnessWrapper extends import_boundwitness_wrapper2.BoundWitnessWrapper {
31
86
  _payloadsWithoutQuery;
32
87
  _query;
33
88
  _resultSet;
34
89
  isQueryBoundWitnessWrapper = true;
35
90
  static parseQuery(obj, payloads) {
36
- (0, import_assert.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
91
+ (0, import_assert2.assertEx)(!Array.isArray(obj), "Array can not be converted to QueryBoundWitnessWrapper");
37
92
  switch (typeof obj) {
38
93
  case "object": {
39
94
  const castWrapper = obj;
40
- const wrapper = castWrapper?.isQueryBoundWitnessWrapper ? castWrapper : new QueryBoundWitnessWrapper(obj, payloads);
95
+ const wrapper = (castWrapper == null ? void 0 : castWrapper.isQueryBoundWitnessWrapper) ? castWrapper : new _QueryBoundWitnessWrapper(obj, payloads);
41
96
  return wrapper;
42
97
  }
43
98
  }
44
99
  throw Error(`Unable to parse [${typeof obj}]`);
45
100
  }
46
101
  getErrors() {
47
- return new import_QueryBoundWitnessValidator.QueryBoundWitnessValidator(this.boundwitness).validate();
102
+ return new QueryBoundWitnessValidator(this.boundwitness).validate();
48
103
  }
49
104
  async getQuery() {
50
105
  const payloadMap = await this.allPayloadMap();
51
106
  this._query = this._query ?? payloadMap[this.boundwitness.query];
52
- return (0, import_assert.assertEx)(this._query, `Missing Query [${this.boundwitness}]`);
107
+ return (0, import_assert2.assertEx)(this._query, `Missing Query [${this.boundwitness}]`);
53
108
  }
54
109
  async getResultSet() {
55
110
  const resultSetHash = this.boundwitness.resultSet;
56
111
  const payloadMap = await this.payloadMap();
57
- return (0, import_assert.assertEx)(
112
+ return (0, import_assert2.assertEx)(
58
113
  this._resultSet = this._resultSet ?? (resultSetHash ? payloadMap[resultSetHash] : void 0),
59
114
  `Missing resultSet [${resultSetHash}]`
60
115
  );
@@ -64,11 +119,11 @@ class QueryBoundWitnessWrapper extends import_boundwitness_wrapper.BoundWitnessW
64
119
  (await import_core.PayloadHasher.filterExclude(
65
120
  (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),
66
121
  this.payload().query
67
- )).map((payload) => import_payload_wrapper.PayloadWrapper.wrap(payload))
122
+ )).map((payload) => import_payload_wrapper2.PayloadWrapper.wrap(payload))
68
123
  );
69
124
  return this._payloadsWithoutQuery;
70
125
  }
71
- }
126
+ };
72
127
  // Annotate the CommonJS export names for ESM import in node:
73
128
  0 && (module.exports = {
74
129
  QueryBoundWitnessWrapper
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/Query/QueryBoundWitnessWrapper.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher } from '@xyo-network/core'\nimport { Payload, PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness } from './QueryBoundWitness'\nimport { QueryBoundWitnessValidator } from './QueryBoundWitnessValidator'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n private _resultSet: PayloadSetPayload | undefined\n\n private isQueryBoundWitnessWrapper = true\n\n static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper = castWrapper?.isQueryBoundWitnessWrapper ? castWrapper : new QueryBoundWitnessWrapper<T>(obj as QueryBoundWitness, payloads)\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n override getErrors() {\n return new QueryBoundWitnessValidator(this.boundwitness).validate()\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.allPayloadMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, `Missing Query [${this.boundwitness}]`)\n }\n\n async getResultSet() {\n const resultSetHash = this.boundwitness.resultSet\n const payloadMap = await this.payloadMap()\n return assertEx(\n (this._resultSet = this._resultSet ?? (resultSetHash ? (payloadMap[resultSetHash] as PayloadSetPayload | undefined) : undefined)),\n `Missing resultSet [${resultSetHash}]`,\n )\n }\n\n override async getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n compact(\n (\n await PayloadHasher.filterExclude(\n (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),\n this.payload().query,\n )\n ).map((payload) => PayloadWrapper.wrap(payload)),\n )\n return this._payloadsWithoutQuery\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAyB;AACzB,oBAAwB;AACxB,kCAAoC;AACpC,kBAA8B;AAE9B,6BAA+B;AAG/B,wCAA2C;AAEpC,MAAM,iCAA0D,gDAAuC;AAAA,EACpG;AAAA,EACA;AAAA,EACA;AAAA,EAEA,6BAA6B;AAAA,EAErC,OAAO,WAAoC,KAAc,UAAmD;AAC1G,gCAAS,CAAC,MAAM,QAAQ,GAAG,GAAG,wDAAwD;AACtF,YAAQ,OAAO,KAAK;AAAA,MAClB,KAAK,UAAU;AACb,cAAM,cAAc;AACpB,cAAM,UAAU,aAAa,6BAA6B,cAAc,IAAI,yBAA4B,KAA0B,QAAQ;AAI1I,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,MAAM,oBAAoB,OAAO,GAAG,GAAG;AAAA,EAC/C;AAAA,EAES,YAAY;AACnB,WAAO,IAAI,6DAA2B,KAAK,YAAY,EAAE,SAAS;AAAA,EACpE;AAAA,EAEA,MAAM,WAAuB;AAC3B,UAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,SAAK,SAAS,KAAK,UAAW,WAAW,KAAK,aAAa,KAAK;AAChE,eAAO,wBAAS,KAAK,QAAQ,kBAAkB,KAAK,YAAY,GAAG;AAAA,EACrE;AAAA,EAEA,MAAM,eAAe;AACnB,UAAM,gBAAgB,KAAK,aAAa;AACxC,UAAM,aAAa,MAAM,KAAK,WAAW;AACzC,eAAO;AAAA,MACJ,KAAK,aAAa,KAAK,eAAe,gBAAiB,WAAW,aAAa,IAAsC;AAAA,MACtH,sBAAsB,aAAa;AAAA,IACrC;AAAA,EACF;AAAA,EAEA,MAAe,qBAAyD;AACtE,SAAK,wBACH,KAAK,6BACL;AAAA,OAEI,MAAM,0BAAc;AAAA,SACjB,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAAA,QACrE,KAAK,QAAQ,EAAE;AAAA,MACjB,GACA,IAAI,CAAC,YAAY,sCAAe,KAAK,OAAO,CAAC;AAAA,IACjD;AACF,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/Query/QueryBoundWitnessWrapper.ts","../../../src/Query/QueryBoundWitnessValidator.ts","../../../src/Query/QueryBoundWitness.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { PayloadHasher } from '@xyo-network/core'\nimport { Payload, PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness } from './QueryBoundWitness'\nimport { QueryBoundWitnessValidator } from './QueryBoundWitnessValidator'\n\nexport class QueryBoundWitnessWrapper<T extends Query = Query> extends BoundWitnessWrapper<QueryBoundWitness> {\n private _payloadsWithoutQuery: PayloadWrapper<Payload>[] | undefined\n private _query: T | undefined\n private _resultSet: PayloadSetPayload | undefined\n\n private isQueryBoundWitnessWrapper = true\n\n static parseQuery<T extends Query = Query>(obj: unknown, payloads?: Payload[]): QueryBoundWitnessWrapper<T> {\n assertEx(!Array.isArray(obj), 'Array can not be converted to QueryBoundWitnessWrapper')\n switch (typeof obj) {\n case 'object': {\n const castWrapper = obj as QueryBoundWitnessWrapper<T>\n const wrapper = castWrapper?.isQueryBoundWitnessWrapper ? castWrapper : new QueryBoundWitnessWrapper<T>(obj as QueryBoundWitness, payloads)\n /*if (!wrapper.valid) {\n console.warn(`Parsed invalid QueryBoundWitness ${JSON.stringify(wrapper.errors.map((error) => error.message))}`)\n }*/\n return wrapper\n }\n }\n throw Error(`Unable to parse [${typeof obj}]`)\n }\n\n override getErrors() {\n return new QueryBoundWitnessValidator(this.boundwitness).validate()\n }\n\n async getQuery(): Promise<T> {\n const payloadMap = await this.allPayloadMap()\n this._query = this._query ?? (payloadMap[this.boundwitness.query] as T | undefined)\n return assertEx(this._query, `Missing Query [${this.boundwitness}]`)\n }\n\n async getResultSet() {\n const resultSetHash = this.boundwitness.resultSet\n const payloadMap = await this.payloadMap()\n return assertEx(\n (this._resultSet = this._resultSet ?? (resultSetHash ? (payloadMap[resultSetHash] as PayloadSetPayload | undefined) : undefined)),\n `Missing resultSet [${resultSetHash}]`,\n )\n }\n\n override async getWrappedPayloads(): Promise<PayloadWrapper<Payload>[]> {\n this._payloadsWithoutQuery =\n this._payloadsWithoutQuery ??\n compact(\n (\n await PayloadHasher.filterExclude(\n (await super.getWrappedPayloads()).map((wrapper) => wrapper.payload()),\n this.payload().query,\n )\n ).map((payload) => PayloadWrapper.wrap(payload)),\n )\n return this._payloadsWithoutQuery\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { handleError } from '@xyo-network/error'\nimport { PayloadSetPayload, Query } from '@xyo-network/payload-model'\nimport { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { QueryBoundWitness, QueryBoundWitnessSchema } from './QueryBoundWitness'\nexport class QueryBoundWitnessValidator<T extends Query = Query> extends BoundWitnessValidator<QueryBoundWitness> {\n private _query: PayloadWrapper<T> | undefined\n\n protected override get expectedSchema(): string {\n return QueryBoundWitnessSchema\n }\n\n static isQueryBoundWitnessValidator(obj: unknown) {\n return (obj as QueryBoundWitnessValidator)?.constructor === QueryBoundWitnessValidator\n }\n\n override async validate() {\n return [\n ...(await super.validate()),\n // ...this.validateResultSet()\n ]\n }\n\n async validateResultSet() {\n const errors: Error[] = []\n try {\n const resultSetHash = assertEx(this.obj.resultSet, 'Missing ResultSet')\n const wrapper = BoundWitnessWrapper.parse(this.obj)\n const resultSet = PayloadWrapper.wrap<PayloadSetPayload>((await wrapper.payloadMap())[resultSetHash] as PayloadSetPayload)\n const required = resultSet?.payload().required\n if (required) {\n Object.entries(required).forEach(([key, value]) => {\n const found = wrapper.payloadSchemas.reduce((count, schema) => {\n return count + (schema === key ? 1 : 0)\n }, 0)\n if (found !== value) {\n errors.push(Error(`validateResultSet: Missing Schema [${key}:${found}:${value}]`))\n }\n })\n }\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n return errors\n }\n}\n","import { BoundWitness, BoundWitnessSchema, isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type QueryBoundWitnessSchema = BoundWitnessSchema\nexport const QueryBoundWitnessSchema: QueryBoundWitnessSchema = BoundWitnessSchema\n\nexport type QueryBoundWitness = BoundWitness<{\n query: string\n resultSet?: string\n schema: BoundWitnessSchema\n}>\n\nexport const isQueryBoundWitness = (x?: Payload | null): x is QueryBoundWitness => isBoundWitness(x) && (x as QueryBoundWitness)?.query !== undefined\n"],"mappings":"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","names":["import_assert","import_boundwitness_wrapper","import_payload_wrapper"]}