@xyo-network/sentinel 2.56.1 → 2.57.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.
@@ -1,10 +1,13 @@
1
+ import { assertEx } from '@xylabs/assert';
2
+ import { Account } from '@xyo-network/account';
1
3
  import { ArchivingModule } from '@xyo-network/archivist';
2
4
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper';
5
+ import { ModuleErrorBuilder, QueryBoundWitnessWrapper, } from '@xyo-network/module';
3
6
  import { WitnessWrapper } from '@xyo-network/witness';
4
7
  import uniq from 'lodash/uniq';
5
8
  import { SentinelConfigSchema } from './Config';
6
9
  import { SentinelReportQuerySchema } from './Queries';
7
- class AbstractSentinel extends ArchivingModule {
10
+ export class AbstractSentinel extends ArchivingModule {
8
11
  static configSchema = SentinelConfigSchema;
9
12
  history = [];
10
13
  _archivists;
@@ -12,6 +15,11 @@ class AbstractSentinel extends ArchivingModule {
12
15
  get queries() {
13
16
  return [SentinelReportQuerySchema, ...super.queries];
14
17
  }
18
+ get _queryAccountPaths() {
19
+ return {
20
+ 'network.xyo.query.sentinel.report': '1/1',
21
+ };
22
+ }
15
23
  addArchivist(address) {
16
24
  this.config.archivists = uniq([...address, ...(this.config.archivists ?? [])]);
17
25
  this._archivists = undefined;
@@ -46,6 +54,30 @@ class AbstractSentinel extends ArchivingModule {
46
54
  this.config.witnesses = (this.config.witnesses ?? []).filter((witness) => !address.includes(witness));
47
55
  this._witnesses = undefined;
48
56
  }
57
+ async queryHandler(query, payloads, queryConfig) {
58
+ const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
59
+ const typedQuery = wrapper.query.payload;
60
+ assertEx(this.queryable(query, payloads, queryConfig));
61
+ const queryAccount = new Account();
62
+ const resultPayloads = [];
63
+ try {
64
+ switch (typedQuery.schema) {
65
+ case SentinelReportQuerySchema: {
66
+ await this.emit('reportStart', { inPayloads: payloads, module: this });
67
+ resultPayloads.push(...(await this.report(payloads)));
68
+ await this.emit('reportEnd', { inPayloads: payloads, module: this, outPayloads: resultPayloads });
69
+ break;
70
+ }
71
+ default: {
72
+ return super.queryHandler(query, payloads);
73
+ }
74
+ }
75
+ }
76
+ catch (ex) {
77
+ const error = ex;
78
+ return this.bindQueryResult(typedQuery, [new ModuleErrorBuilder().sources([wrapper.hash]).message(error.message).build()], [queryAccount]);
79
+ }
80
+ return await this.bindQueryResult(typedQuery, resultPayloads, [queryAccount]);
81
+ }
49
82
  }
50
- export { AbstractSentinel };
51
83
  //# sourceMappingURL=AbstractSentinel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.js","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAIjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,IAAI,MAAM,aAAa,CAAA;AAE9B,OAAO,EAAkB,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAGrD,MAAsB,gBAIpB,SAAQ,eAAoC;IAG5C,MAAM,CAAU,YAAY,GAAW,oBAAoB,CAAA;IAE3D,OAAO,GAAmB,EAAE,CAAA;IACpB,WAAW,CAAgC;IAC3C,UAAU,CAA8B;IAEhD,IAAa,OAAO;QAClB,OAAO,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,YAAY,CAAC,OAAiB;QAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;IAC9B,CAAC;IAED,UAAU,CAAC,OAAiB;QAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5E,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAyB;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC7I,IAAI,CAAC,WAAW;YACd,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5I,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAChD,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,wCAAwC,SAAS,CAAC,MAAM,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;SAClH;QAED,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAyB;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACzI,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QAEzI,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC/C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,uCAAuC,SAAS,CAAC,MAAM,YAAY,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;SAChH;QAED,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,eAAe,CAAC,OAAiB;QAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;QAC3G,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;IAC9B,CAAC;IAED,aAAa,CAAC,OAAiB;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QACrG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC7B,CAAC;;SA1DmB,gBAAgB"}
1
+ {"version":3,"file":"AbstractSentinel.js","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"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"}
@@ -6,34 +6,34 @@ import compact from 'lodash/compact';
6
6
  import { AbstractSentinel } from './AbstractSentinel';
7
7
  import { SentinelConfigSchema } from './Config';
8
8
  import { SentinelReportQuerySchema } from './Queries';
9
- class MemorySentinel extends AbstractSentinel {
9
+ export class MemorySentinel extends AbstractSentinel {
10
10
  static configSchema = SentinelConfigSchema;
11
11
  async report(payloads = []) {
12
12
  const errors = [];
13
13
  await this.emit('reportStart', { inPayloads: payloads, module: this });
14
14
  const allWitnesses = [...(await this.getWitnesses())];
15
- const allPayloads = [];
15
+ const resultPayloads = [];
16
16
  try {
17
17
  const generatedPayloads = compact(await this.generatePayloads(allWitnesses));
18
18
  const combinedPayloads = [...generatedPayloads, ...payloads];
19
- allPayloads.push(...combinedPayloads);
19
+ resultPayloads.push(...combinedPayloads);
20
20
  }
21
21
  catch (e) {
22
22
  errors.push(e);
23
23
  }
24
- const [boundWitness] = await this.bindResult(allPayloads);
24
+ const [boundWitness] = await this.bindQueryResult({ schema: SentinelReportQuerySchema }, resultPayloads);
25
25
  this.history.push(assertEx(boundWitness));
26
- await this.emit('reportEnd', { boundWitness, errors, inPayloads: payloads, module: this, outPayloads: allPayloads });
27
- return [boundWitness, ...allPayloads];
26
+ await this.emit('reportEnd', { boundWitness, errors, inPayloads: payloads, module: this, outPayloads: resultPayloads });
27
+ return [boundWitness, ...resultPayloads];
28
28
  }
29
29
  async queryHandler(query, payloads, queryConfig) {
30
30
  const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
31
- const typedQuery = wrapper.query;
31
+ const typedQuery = wrapper.query.payload;
32
32
  assertEx(this.queryable(query, payloads, queryConfig));
33
33
  const queryAccount = new Account();
34
34
  const resultPayloads = [];
35
35
  try {
36
- switch (typedQuery.schemaName) {
36
+ switch (typedQuery.schema) {
37
37
  case SentinelReportQuerySchema: {
38
38
  resultPayloads.push(...(await this.report(payloads)));
39
39
  break;
@@ -46,7 +46,7 @@ class MemorySentinel extends AbstractSentinel {
46
46
  const error = ex;
47
47
  resultPayloads.push(new ModuleErrorBuilder().sources([wrapper.hash]).message(error.message).build());
48
48
  }
49
- return await this.bindResult(resultPayloads, queryAccount);
49
+ return await this.bindQueryResult(typedQuery, resultPayloads, [queryAccount]);
50
50
  }
51
51
  async generatePayloads(witnesses) {
52
52
  return (await Promise.allSettled(witnesses?.map((witness) => witness.observe())))
@@ -55,5 +55,4 @@ class MemorySentinel extends AbstractSentinel {
55
55
  .flat();
56
56
  }
57
57
  }
58
- export { MemorySentinel };
59
58
  //# sourceMappingURL=MemorySentinel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemorySentinel.js","sourceRoot":"","sources":["../../src/MemorySentinel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemorySentinel.js","sourceRoot":"","sources":["../../src/MemorySentinel.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { constructableModuleWrapper, ModuleWrapper } from '@xyo-network/module';
2
2
  import { PayloadWrapper } from '@xyo-network/payload-wrapper';
3
3
  import { SentinelReportQuerySchema } from './Queries';
4
4
  constructableModuleWrapper();
5
- class SentinelWrapper extends ModuleWrapper {
5
+ export class SentinelWrapper extends ModuleWrapper {
6
6
  static requiredQueries = [SentinelReportQuerySchema, ...super.requiredQueries];
7
7
  async report(payloads) {
8
8
  const queryPayload = PayloadWrapper.parse({ schema: SentinelReportQuerySchema });
@@ -10,5 +10,4 @@ class SentinelWrapper extends ModuleWrapper {
10
10
  return result;
11
11
  }
12
12
  }
13
- export { SentinelWrapper };
14
13
  //# sourceMappingURL=Wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAuB,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAG1E,0BAA0B,EAAE,CAAA;AAC5B,MAAa,eAAiE,SAAQ,aAAsB;IAC1G,MAAM,CAAU,eAAe,GAAG,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA;IAEvF,KAAK,CAAC,MAAM,CAAC,QAAoB;QAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAsB,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAA;QACrG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC3D,OAAO,MAAM,CAAA;IACf,CAAC;;SAPU,eAAe"}
1
+ {"version":3,"file":"Wrapper.js","sourceRoot":"","sources":["../../src/Wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,EAAuB,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAG1E,0BAA0B,EAAE,CAAA;AAC5B,MAAM,OAAO,eAAiE,SAAQ,aAAsB;IAC1G,MAAM,CAAU,eAAe,GAAG,CAAC,yBAAyB,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,CAAA;IAEvF,KAAK,CAAC,MAAM,CAAC,QAAoB;QAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAsB,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAA;QACrG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAC3D,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -2,10 +2,11 @@ import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { ArchivingModule } from '@xyo-network/archivist';
3
3
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper';
4
4
  import { BoundWitness } from '@xyo-network/boundwitness-model';
5
- import { AnyConfigSchema } from '@xyo-network/module';
5
+ import { AnyConfigSchema, ModuleConfig, ModuleQueryResult, QueryBoundWitness } from '@xyo-network/module';
6
6
  import { Payload } from '@xyo-network/payload-model';
7
7
  import { WitnessWrapper } from '@xyo-network/witness';
8
8
  import { SentinelConfig } from './Config';
9
+ import { SentinelQueryBase } from './Queries';
9
10
  import { SentinelModule, SentinelModuleEventData, SentinelParams } from './SentinelModel';
10
11
  export declare abstract class AbstractSentinel<TParams extends SentinelParams<AnyConfigSchema<SentinelConfig>> = SentinelParams<SentinelConfig>, TEventData extends SentinelModuleEventData = SentinelModuleEventData> extends ArchivingModule<TParams, TEventData> implements SentinelModule<TParams, TEventData> {
11
12
  static configSchema: string;
@@ -13,12 +14,44 @@ export declare abstract class AbstractSentinel<TParams extends SentinelParams<An
13
14
  private _archivists;
14
15
  private _witnesses;
15
16
  get queries(): string[];
17
+ protected get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string>;
16
18
  addArchivist(address: string[]): void;
17
19
  addWitness(address: string[]): void;
18
- getArchivists(account?: AccountInstance): Promise<ArchivistWrapper<import("@xyo-network/archivist").ArchivistModule>[]>;
20
+ getArchivists(account?: AccountInstance): Promise<ArchivistWrapper<import("@xyo-network/archivist").ArchivistModule<import("@xyo-network/archivist").ArchivistParams<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
21
+ name?: string | undefined;
22
+ paging?: Record<string, {
23
+ size?: number | undefined;
24
+ }> | undefined;
25
+ schema: string;
26
+ security?: {
27
+ allowAnonymous?: boolean | undefined;
28
+ allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
29
+ disallowed?: Record<string, string[]> | undefined;
30
+ } | undefined;
31
+ storeQueries?: boolean | undefined;
32
+ } & Omit<Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
33
+ name?: string | undefined;
34
+ paging?: Record<string, {
35
+ size?: number | undefined;
36
+ }> | undefined;
37
+ schema: "network.xyo.archivist.config";
38
+ security?: {
39
+ allowAnonymous?: boolean | undefined;
40
+ allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
41
+ disallowed?: Record<string, string[]> | undefined;
42
+ } | undefined;
43
+ storeQueries?: boolean | undefined;
44
+ } & Omit<{
45
+ parents?: import("@xyo-network/archivist").ArchivistParents | undefined;
46
+ schema: "network.xyo.archivist.config";
47
+ storeParentReads?: boolean | undefined;
48
+ } & Omit<undefined, "schema">, "schema">, "schema"> & {
49
+ schema: string;
50
+ }, "schema">, undefined>, import("@xyo-network/archivist").ArchivistModuleEventData>>[]>;
19
51
  getWitnesses(account?: AccountInstance): Promise<WitnessWrapper[]>;
20
52
  removeArchivist(address: string[]): void;
21
53
  removeWitness(address: string[]): void;
54
+ protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryResult>;
22
55
  abstract report(payloads?: Payload[]): Promise<Payload[]>;
23
56
  }
24
57
  //# sourceMappingURL=AbstractSentinel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,cAAc,EAAwB,MAAM,UAAU,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEzF,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,EAChG,UAAU,SAAS,uBAAuB,GAAG,uBAAuB,CAEtE,SAAQ,eAAe,CAAC,OAAO,EAAE,UAAU,CAC3C,YAAW,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC;IAE9C,OAAgB,YAAY,EAAE,MAAM,CAAuB;IAE3D,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,UAAU,CAA8B;IAEhD,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE;IAK9B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAKtB,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe;IAWvC,YAAY,CAAC,OAAO,CAAC,EAAE,eAAe;IAY5C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;IAKjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;IAK/B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAC1D"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EACL,eAAe,EACf,YAAY,EAEZ,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,cAAc,EAAwB,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAA6B,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEzF,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,EAChG,UAAU,SAAS,uBAAuB,GAAG,uBAAuB,CAEtE,SAAQ,eAAe,CAAC,OAAO,EAAE,UAAU,CAC3C,YAAW,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC;IAE9C,OAAgB,YAAY,EAAE,MAAM,CAAuB;IAE3D,OAAO,EAAE,YAAY,EAAE,CAAK;IAE5B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,UAAU,CAA8B;IAEhD,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,cAAuB,kBAAkB,IAAI,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAIvF;IAED,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE;IAK9B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAKtB,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWvC,YAAY,CAAC,OAAO,CAAC,EAAE,eAAe;IAY5C,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;IAKjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;cAKN,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;IAyB7B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAC1D"}
@@ -1,6 +1,7 @@
1
1
  export * from './Report';
2
- import { ModuleQuery, Query } from '@xyo-network/module-model';
2
+ import { ModuleQuery, ModuleQueryBase, Query } from '@xyo-network/module-model';
3
3
  import { SentinelReportQuery } from './Report';
4
4
  export type SentinelQueryBase = SentinelReportQuery;
5
+ export type SentinelModuleQueries = ModuleQueryBase | SentinelQueryBase;
5
6
  export type SentinelQuery<TQuery extends Query | void = void> = ModuleQuery<TQuery extends Query ? SentinelQueryBase | TQuery : SentinelQueryBase>;
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AAEnD,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC,MAAM,SAAS,KAAK,GAAG,iBAAiB,GAAG,MAAM,GAAG,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AAExB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AACnD,MAAM,MAAM,qBAAqB,GAAG,eAAe,GAAG,iBAAiB,CAAA;AACvE,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,WAAW,CAAC,MAAM,SAAS,KAAK,GAAG,iBAAiB,GAAG,MAAM,GAAG,iBAAiB,CAAC,CAAA"}
package/package.json CHANGED
@@ -12,25 +12,25 @@
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.7.6",
14
14
  "@xylabs/promise": "^2.7.6",
15
- "@xyo-network/account": "^2.56.1",
16
- "@xyo-network/account-model": "^2.56.1",
17
- "@xyo-network/archivist": "^2.56.1",
18
- "@xyo-network/archivist-wrapper": "^2.56.1",
19
- "@xyo-network/boundwitness-model": "^2.56.1",
20
- "@xyo-network/core": "^2.56.1",
21
- "@xyo-network/module": "^2.56.1",
22
- "@xyo-network/module-model": "^2.56.1",
23
- "@xyo-network/payload-model": "^2.56.1",
24
- "@xyo-network/payload-wrapper": "^2.56.1",
25
- "@xyo-network/promise": "^2.56.1",
26
- "@xyo-network/witness": "^2.56.1",
15
+ "@xyo-network/account": "^2.57.4",
16
+ "@xyo-network/account-model": "^2.57.4",
17
+ "@xyo-network/archivist": "^2.57.4",
18
+ "@xyo-network/archivist-wrapper": "^2.57.4",
19
+ "@xyo-network/boundwitness-model": "^2.57.4",
20
+ "@xyo-network/core": "^2.57.4",
21
+ "@xyo-network/module": "^2.57.4",
22
+ "@xyo-network/module-model": "^2.57.4",
23
+ "@xyo-network/payload-model": "^2.57.4",
24
+ "@xyo-network/payload-wrapper": "^2.57.4",
25
+ "@xyo-network/promise": "^2.57.4",
26
+ "@xyo-network/witness": "^2.57.4",
27
27
  "lodash": "^4.17.21"
28
28
  },
29
29
  "description": "Primary SDK for using XYO Protocol 2.0",
30
30
  "devDependencies": {
31
31
  "@types/lodash": "^4.14.194",
32
- "@xylabs/ts-scripts-yarn3": "^2.17.6",
33
- "@xylabs/tsconfig": "^2.17.6",
32
+ "@xylabs/ts-scripts-yarn3": "^2.17.12",
33
+ "@xylabs/tsconfig": "^2.17.12",
34
34
  "typescript": "^5.0.4"
35
35
  },
36
36
  "browser": "dist/esm/index.js",
@@ -65,5 +65,5 @@
65
65
  },
66
66
  "sideEffects": false,
67
67
  "types": "dist/types/index.d.ts",
68
- "version": "2.56.1"
68
+ "version": "2.57.4"
69
69
  }
@@ -1,14 +1,23 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { Account } from '@xyo-network/account'
1
3
  import { AccountInstance } from '@xyo-network/account-model'
2
4
  import { ArchivingModule } from '@xyo-network/archivist'
3
5
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
4
6
  import { BoundWitness } from '@xyo-network/boundwitness-model'
5
- import { AnyConfigSchema } from '@xyo-network/module'
7
+ import {
8
+ AnyConfigSchema,
9
+ ModuleConfig,
10
+ ModuleErrorBuilder,
11
+ ModuleQueryResult,
12
+ QueryBoundWitness,
13
+ QueryBoundWitnessWrapper,
14
+ } from '@xyo-network/module'
6
15
  import { Payload } from '@xyo-network/payload-model'
7
16
  import { WitnessWrapper } from '@xyo-network/witness'
8
17
  import uniq from 'lodash/uniq'
9
18
 
10
19
  import { SentinelConfig, SentinelConfigSchema } from './Config'
11
- import { SentinelReportQuerySchema } from './Queries'
20
+ import { SentinelQueryBase, SentinelReportQuerySchema } from './Queries'
12
21
  import { SentinelModule, SentinelModuleEventData, SentinelParams } from './SentinelModel'
13
22
 
14
23
  export abstract class AbstractSentinel<
@@ -21,6 +30,7 @@ export abstract class AbstractSentinel<
21
30
  static override configSchema: string = SentinelConfigSchema
22
31
 
23
32
  history: BoundWitness[] = []
33
+
24
34
  private _archivists: ArchivistWrapper[] | undefined
25
35
  private _witnesses: WitnessWrapper[] | undefined
26
36
 
@@ -28,6 +38,12 @@ export abstract class AbstractSentinel<
28
38
  return [SentinelReportQuerySchema, ...super.queries]
29
39
  }
30
40
 
41
+ protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {
42
+ return {
43
+ 'network.xyo.query.sentinel.report': '1/1',
44
+ }
45
+ }
46
+
31
47
  addArchivist(address: string[]) {
32
48
  this.config.archivists = uniq([...address, ...(this.config.archivists ?? [])])
33
49
  this._archivists = undefined
@@ -71,5 +87,34 @@ export abstract class AbstractSentinel<
71
87
  this._witnesses = undefined
72
88
  }
73
89
 
90
+ protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
91
+ query: T,
92
+ payloads?: Payload[],
93
+ queryConfig?: TConfig,
94
+ ): Promise<ModuleQueryResult> {
95
+ const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)
96
+ const typedQuery = wrapper.query.payload
97
+ assertEx(this.queryable(query, payloads, queryConfig))
98
+ const queryAccount = new Account()
99
+ const resultPayloads: Payload[] = []
100
+ try {
101
+ switch (typedQuery.schema) {
102
+ case SentinelReportQuerySchema: {
103
+ await this.emit('reportStart', { inPayloads: payloads, module: this })
104
+ resultPayloads.push(...(await this.report(payloads)))
105
+ await this.emit('reportEnd', { inPayloads: payloads, module: this, outPayloads: resultPayloads })
106
+ break
107
+ }
108
+ default: {
109
+ return super.queryHandler(query, payloads)
110
+ }
111
+ }
112
+ } catch (ex) {
113
+ const error = ex as Error
114
+ return this.bindQueryResult(typedQuery, [new ModuleErrorBuilder().sources([wrapper.hash]).message(error.message).build()], [queryAccount])
115
+ }
116
+ return await this.bindQueryResult(typedQuery, resultPayloads, [queryAccount])
117
+ }
118
+
74
119
  abstract report(payloads?: Payload[]): Promise<Payload[]>
75
120
  }
@@ -35,20 +35,20 @@ export class MemorySentinel<
35
35
  const errors: Error[] = []
36
36
  await this.emit('reportStart', { inPayloads: payloads, module: this as SentinelModule })
37
37
  const allWitnesses = [...(await this.getWitnesses())]
38
- const allPayloads: Payload[] = []
38
+ const resultPayloads: Payload[] = []
39
39
 
40
40
  try {
41
41
  const generatedPayloads = compact(await this.generatePayloads(allWitnesses))
42
42
  const combinedPayloads = [...generatedPayloads, ...payloads]
43
- allPayloads.push(...combinedPayloads)
43
+ resultPayloads.push(...combinedPayloads)
44
44
  } catch (e) {
45
45
  errors.push(e as Error)
46
46
  }
47
47
 
48
- const [boundWitness] = await this.bindResult(allPayloads)
48
+ const [boundWitness] = await this.bindQueryResult({ schema: SentinelReportQuerySchema }, resultPayloads)
49
49
  this.history.push(assertEx(boundWitness))
50
- await this.emit('reportEnd', { boundWitness, errors, inPayloads: payloads, module: this as SentinelModule, outPayloads: allPayloads })
51
- return [boundWitness, ...allPayloads]
50
+ await this.emit('reportEnd', { boundWitness, errors, inPayloads: payloads, module: this as SentinelModule, outPayloads: resultPayloads })
51
+ return [boundWitness, ...resultPayloads]
52
52
  }
53
53
 
54
54
  protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
@@ -57,12 +57,12 @@ export class MemorySentinel<
57
57
  queryConfig?: TConfig,
58
58
  ): Promise<ModuleQueryResult> {
59
59
  const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQuery>(query, payloads)
60
- const typedQuery = wrapper.query
60
+ const typedQuery = wrapper.query.payload
61
61
  assertEx(this.queryable(query, payloads, queryConfig))
62
62
  const queryAccount = new Account()
63
63
  const resultPayloads: Payload[] = []
64
64
  try {
65
- switch (typedQuery.schemaName) {
65
+ switch (typedQuery.schema) {
66
66
  case SentinelReportQuerySchema: {
67
67
  resultPayloads.push(...(await this.report(payloads)))
68
68
  break
@@ -74,7 +74,7 @@ export class MemorySentinel<
74
74
  const error = ex as Error
75
75
  resultPayloads.push(new ModuleErrorBuilder().sources([wrapper.hash]).message(error.message).build())
76
76
  }
77
- return await this.bindResult(resultPayloads, queryAccount)
77
+ return await this.bindQueryResult(typedQuery, resultPayloads, [queryAccount])
78
78
  }
79
79
 
80
80
  private async generatePayloads(witnesses: WitnessWrapper[]): Promise<Payload[]> {
@@ -1,9 +1,9 @@
1
1
  export * from './Report'
2
2
 
3
- import { ModuleQuery, Query } from '@xyo-network/module-model'
3
+ import { ModuleQuery, ModuleQueryBase, Query } from '@xyo-network/module-model'
4
4
 
5
5
  import { SentinelReportQuery } from './Report'
6
6
 
7
7
  export type SentinelQueryBase = SentinelReportQuery
8
-
8
+ export type SentinelModuleQueries = ModuleQueryBase | SentinelQueryBase
9
9
  export type SentinelQuery<TQuery extends Query | void = void> = ModuleQuery<TQuery extends Query ? SentinelQueryBase | TQuery : SentinelQueryBase>
package/typedoc.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "intentionallyNotExported": [
3
-
4
- ]
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
5
  }