@xyo-network/abstract-witness 2.68.0 → 2.69.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,10 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractWitness = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const assert_1 = require("@xylabs/assert");
6
- const account_1 = require("@xyo-network/account");
7
6
  const boundwitness_builder_1 = require("@xyo-network/boundwitness-builder");
8
7
  const core_1 = require("@xyo-network/core");
9
- const error_1 = require("@xyo-network/error");
10
8
  const module_1 = require("@xyo-network/module");
11
9
  const witness_model_1 = require("@xyo-network/witness-model");
12
10
  (0, module_1.creatableModule)();
@@ -23,15 +21,19 @@ class AbstractWitness extends module_1.AbstractModuleInstance {
23
21
  'network.xyo.query.witness.observe': '1/1',
24
22
  };
25
23
  }
26
- observe(payloads) {
24
+ /** @function observe The main entry point for a witness. Do not override this function. Implement/override observeHandler for custom functionality */
25
+ observe(inPayloads) {
27
26
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
28
27
  yield this.started('throw');
29
- const payloadList = (0, assert_1.assertEx)(yield this.observeHandler(payloads), 'Trying to witness nothing');
30
- (0, assert_1.assertEx)(payloadList.length > 0, 'Trying to witness empty list');
31
- payloadList === null || payloadList === void 0 ? void 0 : payloadList.forEach((payload) => (0, assert_1.assertEx)(payload.schema, 'observe: Missing Schema'));
32
- return payloadList;
28
+ yield this.emit('observeStart', { inPayloads: inPayloads, module: this });
29
+ const outPayloads = (0, assert_1.assertEx)(yield this.observeHandler(inPayloads), 'Trying to witness nothing');
30
+ (0, assert_1.assertEx)(outPayloads.length > 0, 'Trying to witness empty list');
31
+ outPayloads === null || outPayloads === void 0 ? void 0 : outPayloads.forEach((payload) => (0, assert_1.assertEx)(payload.schema, 'observe: Missing Schema'));
32
+ yield this.emit('observeEnd', { inPayloads, module: this, outPayloads });
33
+ return outPayloads;
33
34
  });
34
35
  }
36
+ /** @function queryHandler Calls observe for an observe query. Override to support additional queries. */
35
37
  queryHandler(query, payloads, queryConfig) {
36
38
  const _super = Object.create(null, {
37
39
  queryHandler: { get: () => super.queryHandler }
@@ -40,36 +42,20 @@ class AbstractWitness extends module_1.AbstractModuleInstance {
40
42
  const wrapper = boundwitness_builder_1.QueryBoundWitnessWrapper.parseQuery(query, payloads);
41
43
  const queryPayload = yield wrapper.getQuery();
42
44
  (0, assert_1.assertEx)(this.queryable(query, payloads, queryConfig));
45
+ const resultPayloads = [];
43
46
  // Remove the query payload from the arguments passed to us so we don't observe it
44
47
  const filteredObservation = yield core_1.PayloadHasher.filterExclude(payloads, query.query);
45
- const queryAccount = this.ephemeralQueryAccountEnabled ? yield account_1.HDWallet.random() : undefined;
46
- try {
47
- switch (queryPayload.schema) {
48
- case witness_model_1.WitnessObserveQuerySchema: {
49
- yield this.emit('reportStart', { inPayloads: payloads, module: this });
50
- const resultPayloads = yield this.observe(filteredObservation);
51
- yield this.emit('reportEnd', { inPayloads: payloads, module: this, outPayloads: resultPayloads });
52
- return (yield this.bindQueryResult(queryPayload, resultPayloads, queryAccount ? [queryAccount] : []))[0];
53
- }
54
- default: {
55
- return _super.queryHandler.call(this, query, payloads);
56
- }
48
+ switch (queryPayload.schema) {
49
+ case witness_model_1.WitnessObserveQuerySchema: {
50
+ const observePayloads = yield this.observe(filteredObservation);
51
+ resultPayloads.push(...observePayloads);
52
+ break;
53
+ }
54
+ default: {
55
+ return _super.queryHandler.call(this, query, payloads);
57
56
  }
58
57
  }
59
- catch (ex) {
60
- return (0, error_1.handleErrorAsync)(ex, (error) => tslib_1.__awaiter(this, void 0, void 0, function* () {
61
- var _a;
62
- const [result] = yield this.bindQueryResult(queryPayload, [], queryAccount ? [queryAccount] : [], [
63
- new module_1.ModuleErrorBuilder()
64
- .sources([yield wrapper.hashAsync()])
65
- .name((_a = this.config.name) !== null && _a !== void 0 ? _a : '<Unknown>')
66
- .query(query.schema)
67
- .message(error.message)
68
- .build(),
69
- ]);
70
- return result;
71
- }));
72
- }
58
+ return resultPayloads;
73
59
  });
74
60
  }
75
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractWitness.js","sourceRoot":"","sources":["../../src/AbstractWitness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractWitness.js","sourceRoot":"","sources":["../../src/AbstractWitness.ts"],"names":[],"mappings":";;;;AAAA,2CAAyC;AACzC,4EAA+F;AAC/F,4CAAiD;AACjD,gDAAqH;AAGrH,8DASmC;AAEnC,IAAA,wBAAe,GAAE,CAAA;AACjB,MAAsB,eAIpB,SAAQ,+BAA2C;IAKnD,IAAa,OAAO;QAClB,OAAO,CAAC,yCAAyB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,SAAS;;QACX,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,SAAS,CAAA;IAC/B,CAAC;IAED,IAAuB,kBAAkB;QACvC,OAAO;YACL,mCAAmC,EAAE,KAAK;SAC3C,CAAA;IACH,CAAC;IAED,wJAAwJ;IAClJ,OAAO,CAAC,UAAsB;;YAClC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YACzE,MAAM,WAAW,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,2BAA2B,CAAC,CAAA;YAChG,IAAA,iBAAQ,EAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAA;YAChE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,iBAAQ,EAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAA;YACtF,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YACxE,OAAO,WAAW,CAAA;QACpB,CAAC;KAAA;IAED,0GAA0G;IACjF,YAAY,CACnC,KAAQ,EACR,QAAoB,EACpB,WAAqB;;;;;YAErB,MAAM,OAAO,GAAG,+CAAwB,CAAC,UAAU,CAAe,KAAK,EAAE,QAAQ,CAAC,CAAA;YAClF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;YAC7C,IAAA,iBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;YACtD,MAAM,cAAc,GAAc,EAAE,CAAA;YACpC,kFAAkF;YAClF,MAAM,mBAAmB,GAAG,MAAM,oBAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACpF,QAAQ,YAAY,CAAC,MAAM,EAAE;gBAC3B,KAAK,yCAAyB,CAAC,CAAC;oBAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;oBAC/D,cAAc,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAA;oBACvC,MAAK;iBACN;gBACD,OAAO,CAAC,CAAC;oBACP,OAAO,OAAM,YAAY,YAAC,KAAK,EAAE,QAAQ,EAAC;iBAC3C;aACF;YACD,OAAO,cAAc,CAAA;QACvB,CAAC;KAAA;;AAzDH,0CA6DC;AAtD0B,6BAAa,GAAa,CAAC,mCAAmB,CAAC,CAAA"}
@@ -1,9 +1,7 @@
1
1
  import { assertEx } from '@xylabs/assert';
2
- import { HDWallet } from '@xyo-network/account';
3
2
  import { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder';
4
3
  import { PayloadHasher } from '@xyo-network/core';
5
- import { handleErrorAsync } from '@xyo-network/error';
6
- import { AbstractModuleInstance, creatableModule, ModuleErrorBuilder } from '@xyo-network/module';
4
+ import { AbstractModuleInstance, creatableModule } from '@xyo-network/module';
7
5
  import { WitnessConfigSchema, WitnessObserveQuerySchema, } from '@xyo-network/witness-model';
8
6
  creatableModule();
9
7
  export class AbstractWitness extends AbstractModuleInstance {
@@ -19,46 +17,35 @@ export class AbstractWitness extends AbstractModuleInstance {
19
17
  'network.xyo.query.witness.observe': '1/1',
20
18
  };
21
19
  }
22
- async observe(payloads) {
20
+ /** @function observe The main entry point for a witness. Do not override this function. Implement/override observeHandler for custom functionality */
21
+ async observe(inPayloads) {
23
22
  await this.started('throw');
24
- const payloadList = assertEx(await this.observeHandler(payloads), 'Trying to witness nothing');
25
- assertEx(payloadList.length > 0, 'Trying to witness empty list');
26
- payloadList?.forEach((payload) => assertEx(payload.schema, 'observe: Missing Schema'));
27
- return payloadList;
23
+ await this.emit('observeStart', { inPayloads: inPayloads, module: this });
24
+ const outPayloads = assertEx(await this.observeHandler(inPayloads), 'Trying to witness nothing');
25
+ assertEx(outPayloads.length > 0, 'Trying to witness empty list');
26
+ outPayloads?.forEach((payload) => assertEx(payload.schema, 'observe: Missing Schema'));
27
+ await this.emit('observeEnd', { inPayloads, module: this, outPayloads });
28
+ return outPayloads;
28
29
  }
30
+ /** @function queryHandler Calls observe for an observe query. Override to support additional queries. */
29
31
  async queryHandler(query, payloads, queryConfig) {
30
32
  const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
31
33
  const queryPayload = await wrapper.getQuery();
32
34
  assertEx(this.queryable(query, payloads, queryConfig));
35
+ const resultPayloads = [];
33
36
  // Remove the query payload from the arguments passed to us so we don't observe it
34
37
  const filteredObservation = await PayloadHasher.filterExclude(payloads, query.query);
35
- const queryAccount = this.ephemeralQueryAccountEnabled ? await HDWallet.random() : undefined;
36
- try {
37
- switch (queryPayload.schema) {
38
- case WitnessObserveQuerySchema: {
39
- await this.emit('reportStart', { inPayloads: payloads, module: this });
40
- const resultPayloads = await this.observe(filteredObservation);
41
- await this.emit('reportEnd', { inPayloads: payloads, module: this, outPayloads: resultPayloads });
42
- return (await this.bindQueryResult(queryPayload, resultPayloads, queryAccount ? [queryAccount] : []))[0];
43
- }
44
- default: {
45
- return super.queryHandler(query, payloads);
46
- }
38
+ switch (queryPayload.schema) {
39
+ case WitnessObserveQuerySchema: {
40
+ const observePayloads = await this.observe(filteredObservation);
41
+ resultPayloads.push(...observePayloads);
42
+ break;
43
+ }
44
+ default: {
45
+ return super.queryHandler(query, payloads);
47
46
  }
48
47
  }
49
- catch (ex) {
50
- return handleErrorAsync(ex, async (error) => {
51
- const [result] = await this.bindQueryResult(queryPayload, [], queryAccount ? [queryAccount] : [], [
52
- new ModuleErrorBuilder()
53
- .sources([await wrapper.hashAsync()])
54
- .name(this.config.name ?? '<Unknown>')
55
- .query(query.schema)
56
- .message(error.message)
57
- .build(),
58
- ]);
59
- return result;
60
- });
61
- }
48
+ return resultPayloads;
62
49
  }
63
50
  }
64
51
  //# sourceMappingURL=AbstractWitness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractWitness.js","sourceRoot":"","sources":["../../src/AbstractWitness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractWitness.js","sourceRoot":"","sources":["../../src/AbstractWitness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAqB,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAA0C,MAAM,qBAAqB,CAAA;AAGrH,OAAO,EAEL,mBAAmB,EAGnB,yBAAyB,GAI1B,MAAM,4BAA4B,CAAA;AAEnC,eAAe,EAAE,CAAA;AACjB,MAAM,OAAgB,eAIpB,SAAQ,sBAA2C;IAGnD,MAAM,CAAmB,aAAa,GAAa,CAAC,mBAAmB,CAAC,CAAA;IAExE,IAAa,OAAO;QAClB,OAAO,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,CAAA;IAC/B,CAAC;IAED,IAAuB,kBAAkB;QACvC,OAAO;YACL,mCAAmC,EAAE,KAAK;SAC3C,CAAA;IACH,CAAC;IAED,wJAAwJ;IACxJ,KAAK,CAAC,OAAO,CAAC,UAAsB;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC3B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,2BAA2B,CAAC,CAAA;QAChG,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAA;QAChE,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAA;QACtF,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QACxE,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,0GAA0G;IACvF,KAAK,CAAC,YAAY,CACnC,KAAQ,EACR,QAAoB,EACpB,WAAqB;QAErB,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAe,KAAK,EAAE,QAAQ,CAAC,CAAA;QAClF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;QAC7C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;QACtD,MAAM,cAAc,GAAc,EAAE,CAAA;QACpC,kFAAkF;QAClF,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACpF,QAAQ,YAAY,CAAC,MAAM,EAAE;YAC3B,KAAK,yBAAyB,CAAC,CAAC;gBAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;gBAC/D,cAAc,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAA;gBACvC,MAAK;aACN;YACD,OAAO,CAAC,CAAC;gBACP,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAC3C;SACF;QACD,OAAO,cAAc,CAAA;IACvB,CAAC"}
@@ -1,17 +1,20 @@
1
1
  import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
2
- import { AbstractModuleInstance, ModuleConfig, ModuleQueryResult } from '@xyo-network/module';
2
+ import { AbstractModuleInstance, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module';
3
3
  import { Payload } from '@xyo-network/payload-model';
4
4
  import { Promisable } from '@xyo-network/promise';
5
- import { CustomWitnessModule, WitnessModule, WitnessModuleEventData, WitnessParams, WitnessQueryBase } from '@xyo-network/witness-model';
6
- export declare abstract class AbstractWitness<TParams extends WitnessParams = WitnessParams, TEventData extends WitnessModuleEventData<WitnessModule<TParams>> = WitnessModuleEventData<WitnessModule<TParams>>> extends AbstractModuleInstance<TParams, TEventData> implements CustomWitnessModule<TParams, TEventData> {
5
+ import { CustomWitnessInstance, WitnessInstance, WitnessModuleEventData, WitnessParams, WitnessQueryBase } from '@xyo-network/witness-model';
6
+ export declare abstract class AbstractWitness<TParams extends WitnessParams = WitnessParams, TEventData extends WitnessModuleEventData<WitnessInstance<TParams>> = WitnessModuleEventData<WitnessInstance<TParams>>> extends AbstractModuleInstance<TParams, TEventData> implements CustomWitnessInstance<TParams, TEventData> {
7
7
  static readonly configSchemas: string[];
8
8
  get queries(): string[];
9
9
  get targetSet(): (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/payload-model").PayloadSet & {
10
10
  schema: "network.xyo.payload.set";
11
11
  }) | undefined;
12
12
  protected get _queryAccountPaths(): Record<WitnessQueryBase['schema'], string>;
13
- observe(payloads?: Payload[]): Promise<Payload[]>;
14
- protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryResult>;
13
+ /** @function observe The main entry point for a witness. Do not override this function. Implement/override observeHandler for custom functionality */
14
+ observe(inPayloads?: Payload[]): Promise<Payload[]>;
15
+ /** @function queryHandler Calls observe for an observe query. Override to support additional queries. */
16
+ protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
17
+ /** @function observeHandler Implement or override to add custom functionality to a witness */
15
18
  protected abstract observeHandler(payloads?: Payload[]): Promisable<Payload[]>;
16
19
  }
17
20
  //# sourceMappingURL=AbstractWitness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractWitness.d.ts","sourceRoot":"","sources":["../../src/AbstractWitness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAA;AAG/F,OAAO,EAAE,sBAAsB,EAAmB,YAAY,EAAsB,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAClI,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACL,mBAAmB,EAEnB,aAAa,EACb,sBAAsB,EAEtB,aAAa,EAEb,gBAAgB,EACjB,MAAM,4BAA4B,CAAA;AAGnC,8BAAsB,eAAe,CACjC,OAAO,SAAS,aAAa,GAAG,aAAa,EAC7C,UAAU,SAAS,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAEpH,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEnD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwB;IAExE,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,IAAI,SAAS;;mBAEZ;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAItF;IAEK,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAQ9B,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAkC7B,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAC/E"}
1
+ {"version":3,"file":"AbstractWitness.d.ts","sourceRoot":"","sources":["../../src/AbstractWitness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,mCAAmC,CAAA;AAE/F,OAAO,EAAE,sBAAsB,EAAmB,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AACrH,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACL,qBAAqB,EAErB,eAAe,EACf,sBAAsB,EAEtB,aAAa,EAEb,gBAAgB,EACjB,MAAM,4BAA4B,CAAA;AAGnC,8BAAsB,eAAe,CACjC,OAAO,SAAS,aAAa,GAAG,aAAa,EAC7C,UAAU,SAAS,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,sBAAsB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAExH,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC;IAErD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAwB;IAExE,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,IAAI,SAAS;;mBAEZ;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAItF;IAED,wJAAwJ;IAClJ,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAUzD,0GAA0G;cACjF,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EAChI,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,wBAAwB,CAAC;IAoBpC,8FAA8F;IAC9F,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;CAC/E"}
package/package.json CHANGED
@@ -11,14 +11,12 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.9.3",
14
- "@xyo-network/account": "~2.68.0",
15
- "@xyo-network/boundwitness-builder": "~2.68.0",
16
- "@xyo-network/core": "~2.68.0",
17
- "@xyo-network/error": "~2.68.0",
18
- "@xyo-network/module": "~2.68.0",
19
- "@xyo-network/payload-model": "~2.68.0",
20
- "@xyo-network/promise": "~2.68.0",
21
- "@xyo-network/witness-model": "~2.68.0"
14
+ "@xyo-network/boundwitness-builder": "~2.69.0-rc.2",
15
+ "@xyo-network/core": "~2.69.0-rc.2",
16
+ "@xyo-network/module": "~2.69.0-rc.2",
17
+ "@xyo-network/payload-model": "~2.69.0-rc.2",
18
+ "@xyo-network/promise": "~2.69.0-rc.2",
19
+ "@xyo-network/witness-model": "~2.69.0-rc.2"
22
20
  },
23
21
  "devDependencies": {
24
22
  "@xylabs/ts-scripts-yarn3": "^2.19.0",
@@ -58,5 +56,6 @@
58
56
  },
59
57
  "sideEffects": false,
60
58
  "types": "dist/types/index.d.ts",
61
- "version": "2.68.0"
59
+ "version": "2.69.0-rc.2",
60
+ "stableVersion": "2.68.0"
62
61
  }
@@ -1,15 +1,13 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
- import { HDWallet } from '@xyo-network/account'
3
2
  import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
4
3
  import { PayloadHasher } from '@xyo-network/core'
5
- import { handleErrorAsync } from '@xyo-network/error'
6
- import { AbstractModuleInstance, creatableModule, ModuleConfig, ModuleErrorBuilder, ModuleQueryResult } from '@xyo-network/module'
4
+ import { AbstractModuleInstance, creatableModule, ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module'
7
5
  import { Payload } from '@xyo-network/payload-model'
8
6
  import { Promisable } from '@xyo-network/promise'
9
7
  import {
10
- CustomWitnessModule,
8
+ CustomWitnessInstance,
11
9
  WitnessConfigSchema,
12
- WitnessModule,
10
+ WitnessInstance,
13
11
  WitnessModuleEventData,
14
12
  WitnessObserveQuerySchema,
15
13
  WitnessParams,
@@ -20,10 +18,10 @@ import {
20
18
  creatableModule()
21
19
  export abstract class AbstractWitness<
22
20
  TParams extends WitnessParams = WitnessParams,
23
- TEventData extends WitnessModuleEventData<WitnessModule<TParams>> = WitnessModuleEventData<WitnessModule<TParams>>,
21
+ TEventData extends WitnessModuleEventData<WitnessInstance<TParams>> = WitnessModuleEventData<WitnessInstance<TParams>>,
24
22
  >
25
23
  extends AbstractModuleInstance<TParams, TEventData>
26
- implements CustomWitnessModule<TParams, TEventData>
24
+ implements CustomWitnessInstance<TParams, TEventData>
27
25
  {
28
26
  static override readonly configSchemas: string[] = [WitnessConfigSchema]
29
27
 
@@ -41,51 +39,42 @@ export abstract class AbstractWitness<
41
39
  }
42
40
  }
43
41
 
44
- async observe(payloads?: Payload[]): Promise<Payload[]> {
42
+ /** @function observe The main entry point for a witness. Do not override this function. Implement/override observeHandler for custom functionality */
43
+ async observe(inPayloads?: Payload[]): Promise<Payload[]> {
45
44
  await this.started('throw')
46
- const payloadList = assertEx(await this.observeHandler(payloads), 'Trying to witness nothing')
47
- assertEx(payloadList.length > 0, 'Trying to witness empty list')
48
- payloadList?.forEach((payload) => assertEx(payload.schema, 'observe: Missing Schema'))
49
- return payloadList
45
+ await this.emit('observeStart', { inPayloads: inPayloads, module: this })
46
+ const outPayloads = assertEx(await this.observeHandler(inPayloads), 'Trying to witness nothing')
47
+ assertEx(outPayloads.length > 0, 'Trying to witness empty list')
48
+ outPayloads?.forEach((payload) => assertEx(payload.schema, 'observe: Missing Schema'))
49
+ await this.emit('observeEnd', { inPayloads, module: this, outPayloads })
50
+ return outPayloads
50
51
  }
51
52
 
53
+ /** @function queryHandler Calls observe for an observe query. Override to support additional queries. */
52
54
  protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
53
55
  query: T,
54
56
  payloads?: Payload[],
55
57
  queryConfig?: TConfig,
56
- ): Promise<ModuleQueryResult> {
58
+ ): Promise<ModuleQueryHandlerResult> {
57
59
  const wrapper = QueryBoundWitnessWrapper.parseQuery<WitnessQuery>(query, payloads)
58
60
  const queryPayload = await wrapper.getQuery()
59
61
  assertEx(this.queryable(query, payloads, queryConfig))
62
+ const resultPayloads: Payload[] = []
60
63
  // Remove the query payload from the arguments passed to us so we don't observe it
61
64
  const filteredObservation = await PayloadHasher.filterExclude(payloads, query.query)
62
- const queryAccount = this.ephemeralQueryAccountEnabled ? await HDWallet.random() : undefined
63
- try {
64
- switch (queryPayload.schema) {
65
- case WitnessObserveQuerySchema: {
66
- await this.emit('reportStart', { inPayloads: payloads, module: this })
67
- const resultPayloads = await this.observe(filteredObservation)
68
- await this.emit('reportEnd', { inPayloads: payloads, module: this, outPayloads: resultPayloads })
69
- return (await this.bindQueryResult(queryPayload, resultPayloads, queryAccount ? [queryAccount] : []))[0]
70
- }
71
- default: {
72
- return super.queryHandler(query, payloads)
73
- }
65
+ switch (queryPayload.schema) {
66
+ case WitnessObserveQuerySchema: {
67
+ const observePayloads = await this.observe(filteredObservation)
68
+ resultPayloads.push(...observePayloads)
69
+ break
70
+ }
71
+ default: {
72
+ return super.queryHandler(query, payloads)
74
73
  }
75
- } catch (ex) {
76
- return handleErrorAsync(ex, async (error) => {
77
- const [result] = await this.bindQueryResult(queryPayload, [], queryAccount ? [queryAccount] : [], [
78
- new ModuleErrorBuilder()
79
- .sources([await wrapper.hashAsync()])
80
- .name(this.config.name ?? '<Unknown>')
81
- .query(query.schema)
82
- .message(error.message)
83
- .build(),
84
- ])
85
- return result
86
- })
87
74
  }
75
+ return resultPayloads
88
76
  }
89
77
 
78
+ /** @function observeHandler Implement or override to add custom functionality to a witness */
90
79
  protected abstract observeHandler(payloads?: Payload[]): Promisable<Payload[]>
91
80
  }