@xyo-network/sentinel 2.50.4 → 2.50.5

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,6 @@
1
- import { assertEx } from '@xylabs/assert';
2
- import { Account } from '@xyo-network/account';
3
1
  import { ArchivingModule } from '@xyo-network/archivist';
4
2
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper';
5
- import { QueryBoundWitnessWrapper, XyoErrorBuilder } from '@xyo-network/module';
6
3
  import { WitnessWrapper } from '@xyo-network/witness';
7
- import compact from 'lodash/compact';
8
4
  import uniq from 'lodash/uniq';
9
5
  import { SentinelReportQuerySchema } from './Queries';
10
6
  export class AbstractSentinel extends ArchivingModule {
@@ -15,9 +11,6 @@ export class AbstractSentinel extends ArchivingModule {
15
11
  get queries() {
16
12
  return [SentinelReportQuerySchema, ...super.queries];
17
13
  }
18
- static async create(params) {
19
- return (await super.create(params));
20
- }
21
14
  addWitness(address) {
22
15
  this.config.witnesses = uniq([...address, ...(this.config.witnesses ?? [])]);
23
16
  this._witnesses = undefined;
@@ -34,28 +27,6 @@ export class AbstractSentinel extends ArchivingModule {
34
27
  this._witnesses || (await this.resolve({ address: addresses })).map((witness) => new WitnessWrapper(witness));
35
28
  return this._witnesses;
36
29
  }
37
- async query(query, payloads, queryConfig) {
38
- const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
39
- const typedQuery = wrapper.query;
40
- assertEx(this.queryable(query, payloads, queryConfig));
41
- const queryAccount = new Account();
42
- const resultPayloads = [];
43
- try {
44
- switch (typedQuery.schemaName) {
45
- case SentinelReportQuerySchema: {
46
- resultPayloads.push(...(await this.report(payloads)));
47
- break;
48
- }
49
- default:
50
- return super.query(query, payloads);
51
- }
52
- }
53
- catch (ex) {
54
- const error = ex;
55
- resultPayloads.push(new XyoErrorBuilder([wrapper.hash], error.message).build());
56
- }
57
- return await this.bindResult(resultPayloads, queryAccount);
58
- }
59
30
  removeArchivist(address) {
60
31
  this.config.archivists = (this.config.archivists ?? []).filter((archivist) => !address.includes(archivist));
61
32
  this._archivists = undefined;
@@ -64,26 +35,5 @@ export class AbstractSentinel extends ArchivingModule {
64
35
  this.config.witnesses = (this.config.witnesses ?? []).filter((witness) => !address.includes(witness));
65
36
  this._witnesses = undefined;
66
37
  }
67
- async report(payloads = []) {
68
- const errors = [];
69
- this.params?.onReportStart?.();
70
- const allWitnesses = [...(await this.getWitnesses())];
71
- const allPayloads = [];
72
- try {
73
- const generatedPayloads = compact(await this.generatePayloads(allWitnesses));
74
- const combinedPayloads = [...generatedPayloads, ...payloads];
75
- allPayloads.push(...combinedPayloads);
76
- }
77
- catch (e) {
78
- errors.push(e);
79
- }
80
- const [newBoundWitness] = await this.bindResult(allPayloads);
81
- this.history.push(assertEx(newBoundWitness));
82
- this.params?.onReportEnd?.(newBoundWitness, errors.length > 0 ? errors : undefined);
83
- return [newBoundWitness, ...allPayloads];
84
- }
85
- async generatePayloads(witnesses) {
86
- return (await Promise.all(witnesses?.map(async (witness) => await witness.observe()))).flat();
87
- }
88
38
  }
89
39
  //# sourceMappingURL=AbstractSentinel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.js","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractSentinel.js","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { assertEx } from '@xylabs/assert';
2
+ import { Account } from '@xyo-network/account';
3
+ import { QueryBoundWitnessWrapper, XyoErrorBuilder } from '@xyo-network/module';
4
+ import compact from 'lodash/compact';
5
+ import { AbstractSentinel } from './AbstractSentinel';
6
+ import { SentinelReportQuerySchema } from './Queries';
7
+ export class MemorySentinel extends AbstractSentinel {
8
+ static configSchema;
9
+ static async create(params) {
10
+ return (await super.create(params));
11
+ }
12
+ async query(query, payloads, queryConfig) {
13
+ const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
14
+ const typedQuery = wrapper.query;
15
+ assertEx(this.queryable(query, payloads, queryConfig));
16
+ const queryAccount = new Account();
17
+ const resultPayloads = [];
18
+ try {
19
+ switch (typedQuery.schemaName) {
20
+ case SentinelReportQuerySchema: {
21
+ resultPayloads.push(...(await this.report(payloads)));
22
+ break;
23
+ }
24
+ default:
25
+ return super.query(query, payloads);
26
+ }
27
+ }
28
+ catch (ex) {
29
+ const error = ex;
30
+ resultPayloads.push(new XyoErrorBuilder([wrapper.hash], error.message).build());
31
+ }
32
+ return await this.bindResult(resultPayloads, queryAccount);
33
+ }
34
+ async report(payloads = []) {
35
+ const errors = [];
36
+ this.params?.onReportStart?.();
37
+ const allWitnesses = [...(await this.getWitnesses())];
38
+ const allPayloads = [];
39
+ try {
40
+ const generatedPayloads = compact(await this.generatePayloads(allWitnesses));
41
+ const combinedPayloads = [...generatedPayloads, ...payloads];
42
+ allPayloads.push(...combinedPayloads);
43
+ }
44
+ catch (e) {
45
+ errors.push(e);
46
+ }
47
+ const [newBoundWitness] = await this.bindResult(allPayloads);
48
+ this.history.push(assertEx(newBoundWitness));
49
+ this.params?.onReportEnd?.(newBoundWitness, errors.length > 0 ? errors : undefined);
50
+ return [newBoundWitness, ...allPayloads];
51
+ }
52
+ async generatePayloads(witnesses) {
53
+ return (await Promise.all(witnesses?.map(async (witness) => await witness.observe()))).flat();
54
+ }
55
+ }
56
+ //# sourceMappingURL=MemorySentinel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySentinel.js","sourceRoot":"","sources":["../../src/MemorySentinel.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './AbstractSentinel';
2
2
  export * from './Automation';
3
3
  export * from './Config';
4
+ export * from './MemorySentinel';
4
5
  export * from './Queries';
5
6
  export * from './SentinelIntervalAutomationWrapper';
6
7
  export * from './SentinelModel';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,qCAAqC,CAAA;AACnD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,qCAAqC,CAAA;AACnD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA"}
@@ -1,31 +1,29 @@
1
1
  import { ArchivingModule } from '@xyo-network/archivist';
2
2
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper';
3
3
  import { XyoBoundWitness } from '@xyo-network/boundwitness-model';
4
- import { ModuleConfig, ModuleParams, ModuleQueryResult, XyoQueryBoundWitness } from '@xyo-network/module';
4
+ import { AnyObject } from '@xyo-network/core';
5
+ import { ModuleParams, WithAdditional } from '@xyo-network/module';
5
6
  import { XyoPayload } from '@xyo-network/payload-model';
6
7
  import { WitnessWrapper } from '@xyo-network/witness';
7
8
  import { SentinelConfig, SentinelConfigSchema } from './Config';
8
9
  import { SentinelModule } from './SentinelModel';
9
- export type AbstractSentinelParams<TConfig extends SentinelConfig = SentinelConfig> = ModuleParams<TConfig, {
10
+ export type SentinelParams<TConfig extends SentinelConfig = SentinelConfig, TAdditionalParams extends AnyObject | undefined = undefined> = ModuleParams<TConfig, WithAdditional<{
10
11
  onReportEnd?: (boundWitness?: XyoBoundWitness, errors?: Error[]) => void;
11
12
  onReportStart?: () => void;
12
13
  onWitnessReportEnd?: (witness: WitnessWrapper, error?: Error) => void;
13
14
  onWitnessReportStart?: (witness: WitnessWrapper) => void;
14
- }>;
15
- export declare class AbstractSentinel<TParams extends AbstractSentinelParams = AbstractSentinelParams> extends ArchivingModule<TParams> implements SentinelModule<TParams['config']> {
15
+ }, TAdditionalParams>>;
16
+ export declare abstract class AbstractSentinel<TParams extends SentinelParams<SentinelConfig> = SentinelParams<SentinelConfig>> extends ArchivingModule<TParams> implements SentinelModule<TParams['config']> {
16
17
  static configSchema: SentinelConfigSchema;
17
18
  history: XyoBoundWitness[];
18
19
  private _archivists;
19
20
  private _witnesses;
20
21
  get queries(): string[];
21
- static create(params?: AbstractSentinelParams): Promise<AbstractSentinel>;
22
22
  addWitness(address: string[]): void;
23
23
  getArchivists(): Promise<ArchivistWrapper[]>;
24
24
  getWitnesses(): Promise<WitnessWrapper[]>;
25
- query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: XyoPayload[], queryConfig?: TConfig): Promise<ModuleQueryResult>;
26
25
  removeArchivist(address: string[]): void;
27
26
  removeWitness(address: string[]): void;
28
- report(payloads?: XyoPayload[]): Promise<XyoPayload[]>;
29
- private generatePayloads;
27
+ abstract report(payloads?: XyoPayload[]): Promise<XyoPayload[]>;
30
28
  }
31
29
  //# sourceMappingURL=AbstractSentinel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAA6C,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACpJ,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAmB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAItE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,MAAM,sBAAsB,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI,YAAY,CAChG,OAAO,EACP;IACE,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAA;IACxE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACrE,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzD,CACF,CAAA;AAED,qBAAa,gBAAgB,CAAC,OAAO,SAAS,sBAAsB,GAAG,sBAAsB,CAC3F,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,OAAgB,YAAY,EAAE,oBAAoB,CAAA;IAElD,OAAO,EAAE,eAAe,EAAE,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,UAAU,CAA8B;IAEhD,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;WAEqB,MAAM,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIxF,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAKtB,aAAa;IAQb,YAAY;IAQH,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EACrH,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAsB7B,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;IAKjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;IAKzB,MAAM,CAAC,QAAQ,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAoBlD,gBAAgB;CAG/B"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAmB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGtE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,MAAM,cAAc,CACxB,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,iBAAiB,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,IACzD,YAAY,CACd,OAAO,EACP,cAAc,CACZ;IACE,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAA;IACxE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACrE,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzD,EACD,iBAAiB,CAClB,CACF,CAAA;AAED,8BAAsB,gBAAgB,CAAC,OAAO,SAAS,cAAc,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,CACpH,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,OAAgB,YAAY,EAAE,oBAAoB,CAAA;IAElD,OAAO,EAAE,eAAe,EAAE,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,UAAU,CAA8B;IAEhD,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE;IAKtB,aAAa;IAQb,YAAY;IAQlB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;IAKjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE;IAK/B,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAChE"}
@@ -0,0 +1,21 @@
1
+ import { XyoBoundWitness } from '@xyo-network/boundwitness-model';
2
+ import { ModuleConfig, ModuleQueryResult, XyoQueryBoundWitness } from '@xyo-network/module';
3
+ import { XyoPayload } from '@xyo-network/payload-model';
4
+ import { WitnessWrapper } from '@xyo-network/witness';
5
+ import { AbstractSentinel, SentinelParams } from './AbstractSentinel';
6
+ import { SentinelConfig, SentinelConfigSchema } from './Config';
7
+ import { SentinelModule } from './SentinelModel';
8
+ export type MemorySentinelParams<TConfig extends SentinelConfig = SentinelConfig> = SentinelParams<TConfig, {
9
+ onReportEnd?: (boundWitness?: XyoBoundWitness, errors?: Error[]) => void;
10
+ onReportStart?: () => void;
11
+ onWitnessReportEnd?: (witness: WitnessWrapper, error?: Error) => void;
12
+ onWitnessReportStart?: (witness: WitnessWrapper) => void;
13
+ }>;
14
+ export declare class MemorySentinel<TParams extends MemorySentinelParams = MemorySentinelParams> extends AbstractSentinel<TParams> implements SentinelModule<TParams['config']> {
15
+ static configSchema: SentinelConfigSchema;
16
+ static create(params?: MemorySentinelParams): Promise<MemorySentinel>;
17
+ query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: XyoPayload[], queryConfig?: TConfig): Promise<ModuleQueryResult>;
18
+ report(payloads?: XyoPayload[]): Promise<XyoPayload[]>;
19
+ private generatePayloads;
20
+ }
21
+ //# sourceMappingURL=MemorySentinel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySentinel.d.ts","sourceRoot":"","sources":["../../src/MemorySentinel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAA6C,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACtI,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI,cAAc,CAChG,OAAO,EACP;IACE,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAA;IACxE,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IACrE,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzD,CACF,CAAA;AAED,qBAAa,cAAc,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,CACrF,SAAQ,gBAAgB,CAAC,OAAO,CAChC,YAAW,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,OAAgB,YAAY,EAAE,oBAAoB,CAAA;WAE5B,MAAM,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrE,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,OAAO,SAAS,YAAY,GAAG,YAAY,EACrH,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,UAAU,EAAE,EACvB,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAsBvB,MAAM,CAAC,QAAQ,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAoBlD,gBAAgB;CAG/B"}
@@ -1,6 +1,7 @@
1
1
  export * from './AbstractSentinel';
2
2
  export * from './Automation';
3
3
  export * from './Config';
4
+ export * from './MemorySentinel';
4
5
  export * from './Queries';
5
6
  export * from './SentinelIntervalAutomationWrapper';
6
7
  export * from './SentinelModel';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,qCAAqC,CAAA;AACnD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,qCAAqC,CAAA;AACnD,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA"}
package/package.json CHANGED
@@ -11,18 +11,18 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.7.4",
14
- "@xyo-network/account": "^2.50.4",
15
- "@xyo-network/account-model": "^2.50.4",
16
- "@xyo-network/archivist": "^2.50.4",
17
- "@xyo-network/archivist-wrapper": "^2.50.4",
18
- "@xyo-network/boundwitness-model": "^2.50.4",
19
- "@xyo-network/core": "^2.50.4",
20
- "@xyo-network/module": "^2.50.4",
21
- "@xyo-network/module-model": "^2.50.4",
22
- "@xyo-network/payload-model": "^2.50.4",
23
- "@xyo-network/payload-wrapper": "^2.50.4",
24
- "@xyo-network/promise": "^2.50.4",
25
- "@xyo-network/witness": "^2.50.4",
14
+ "@xyo-network/account": "^2.50.5",
15
+ "@xyo-network/account-model": "^2.50.5",
16
+ "@xyo-network/archivist": "^2.50.5",
17
+ "@xyo-network/archivist-wrapper": "^2.50.5",
18
+ "@xyo-network/boundwitness-model": "^2.50.5",
19
+ "@xyo-network/core": "^2.50.5",
20
+ "@xyo-network/module": "^2.50.5",
21
+ "@xyo-network/module-model": "^2.50.5",
22
+ "@xyo-network/payload-model": "^2.50.5",
23
+ "@xyo-network/payload-wrapper": "^2.50.5",
24
+ "@xyo-network/promise": "^2.50.5",
25
+ "@xyo-network/witness": "^2.50.5",
26
26
  "lodash": "^4.17.21"
27
27
  },
28
28
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -64,5 +64,5 @@
64
64
  },
65
65
  "sideEffects": false,
66
66
  "types": "dist/types/index.d.ts",
67
- "version": "2.50.4"
67
+ "version": "2.50.5"
68
68
  }
@@ -1,29 +1,33 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import { Account } from '@xyo-network/account'
3
1
  import { AbstractArchivist, ArchivingModule } from '@xyo-network/archivist'
4
2
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
5
3
  import { XyoBoundWitness } from '@xyo-network/boundwitness-model'
6
- import { ModuleConfig, ModuleParams, ModuleQueryResult, QueryBoundWitnessWrapper, XyoErrorBuilder, XyoQueryBoundWitness } from '@xyo-network/module'
4
+ import { AnyObject } from '@xyo-network/core'
5
+ import { ModuleParams, WithAdditional } from '@xyo-network/module'
7
6
  import { XyoPayload } from '@xyo-network/payload-model'
8
7
  import { AbstractWitness, WitnessWrapper } from '@xyo-network/witness'
9
- import compact from 'lodash/compact'
10
8
  import uniq from 'lodash/uniq'
11
9
 
12
10
  import { SentinelConfig, SentinelConfigSchema } from './Config'
13
- import { SentinelQuery, SentinelReportQuerySchema } from './Queries'
11
+ import { SentinelReportQuerySchema } from './Queries'
14
12
  import { SentinelModule } from './SentinelModel'
15
13
 
16
- export type AbstractSentinelParams<TConfig extends SentinelConfig = SentinelConfig> = ModuleParams<
14
+ export type SentinelParams<
15
+ TConfig extends SentinelConfig = SentinelConfig,
16
+ TAdditionalParams extends AnyObject | undefined = undefined,
17
+ > = ModuleParams<
17
18
  TConfig,
18
- {
19
- onReportEnd?: (boundWitness?: XyoBoundWitness, errors?: Error[]) => void
20
- onReportStart?: () => void
21
- onWitnessReportEnd?: (witness: WitnessWrapper, error?: Error) => void
22
- onWitnessReportStart?: (witness: WitnessWrapper) => void
23
- }
19
+ WithAdditional<
20
+ {
21
+ onReportEnd?: (boundWitness?: XyoBoundWitness, errors?: Error[]) => void
22
+ onReportStart?: () => void
23
+ onWitnessReportEnd?: (witness: WitnessWrapper, error?: Error) => void
24
+ onWitnessReportStart?: (witness: WitnessWrapper) => void
25
+ },
26
+ TAdditionalParams
27
+ >
24
28
  >
25
29
 
26
- export class AbstractSentinel<TParams extends AbstractSentinelParams = AbstractSentinelParams>
30
+ export abstract class AbstractSentinel<TParams extends SentinelParams<SentinelConfig> = SentinelParams<SentinelConfig>>
27
31
  extends ArchivingModule<TParams>
28
32
  implements SentinelModule<TParams['config']>
29
33
  {
@@ -37,10 +41,6 @@ export class AbstractSentinel<TParams extends AbstractSentinelParams = AbstractS
37
41
  return [SentinelReportQuerySchema, ...super.queries]
38
42
  }
39
43
 
40
- static override async create(params?: AbstractSentinelParams): Promise<AbstractSentinel> {
41
- return (await super.create(params)) as AbstractSentinel
42
- }
43
-
44
44
  addWitness(address: string[]) {
45
45
  this.config.witnesses = uniq([...address, ...(this.config.witnesses ?? [])])
46
46
  this._witnesses = undefined
@@ -62,32 +62,6 @@ export class AbstractSentinel<TParams extends AbstractSentinelParams = AbstractS
62
62
  return this._witnesses
63
63
  }
64
64
 
65
- override async query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
66
- query: T,
67
- payloads?: XyoPayload[],
68
- queryConfig?: TConfig,
69
- ): Promise<ModuleQueryResult> {
70
- const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQuery>(query, payloads)
71
- const typedQuery = wrapper.query
72
- assertEx(this.queryable(query, payloads, queryConfig))
73
- const queryAccount = new Account()
74
- const resultPayloads: XyoPayload[] = []
75
- try {
76
- switch (typedQuery.schemaName) {
77
- case SentinelReportQuerySchema: {
78
- resultPayloads.push(...(await this.report(payloads)))
79
- break
80
- }
81
- default:
82
- return super.query(query, payloads)
83
- }
84
- } catch (ex) {
85
- const error = ex as Error
86
- resultPayloads.push(new XyoErrorBuilder([wrapper.hash], error.message).build())
87
- }
88
- return await this.bindResult(resultPayloads, queryAccount)
89
- }
90
-
91
65
  removeArchivist(address: string[]) {
92
66
  this.config.archivists = (this.config.archivists ?? []).filter((archivist) => !address.includes(archivist))
93
67
  this._archivists = undefined
@@ -98,27 +72,5 @@ export class AbstractSentinel<TParams extends AbstractSentinelParams = AbstractS
98
72
  this._witnesses = undefined
99
73
  }
100
74
 
101
- async report(payloads: XyoPayload[] = []): Promise<XyoPayload[]> {
102
- const errors: Error[] = []
103
- this.params?.onReportStart?.()
104
- const allWitnesses = [...(await this.getWitnesses())]
105
- const allPayloads: XyoPayload[] = []
106
-
107
- try {
108
- const generatedPayloads = compact(await this.generatePayloads(allWitnesses))
109
- const combinedPayloads = [...generatedPayloads, ...payloads]
110
- allPayloads.push(...combinedPayloads)
111
- } catch (e) {
112
- errors.push(e as Error)
113
- }
114
-
115
- const [newBoundWitness] = await this.bindResult(allPayloads)
116
- this.history.push(assertEx(newBoundWitness))
117
- this.params?.onReportEnd?.(newBoundWitness, errors.length > 0 ? errors : undefined)
118
- return [newBoundWitness, ...allPayloads]
119
- }
120
-
121
- private async generatePayloads(witnesses: WitnessWrapper[]): Promise<XyoPayload[]> {
122
- return (await Promise.all(witnesses?.map(async (witness) => await witness.observe()))).flat()
123
- }
75
+ abstract report(payloads?: XyoPayload[]): Promise<XyoPayload[]>
124
76
  }
@@ -0,0 +1,83 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { Account } from '@xyo-network/account'
3
+ import { XyoBoundWitness } from '@xyo-network/boundwitness-model'
4
+ import { ModuleConfig, ModuleQueryResult, QueryBoundWitnessWrapper, XyoErrorBuilder, XyoQueryBoundWitness } from '@xyo-network/module'
5
+ import { XyoPayload } from '@xyo-network/payload-model'
6
+ import { WitnessWrapper } from '@xyo-network/witness'
7
+ import compact from 'lodash/compact'
8
+
9
+ import { AbstractSentinel, SentinelParams } from './AbstractSentinel'
10
+ import { SentinelConfig, SentinelConfigSchema } from './Config'
11
+ import { SentinelQuery, SentinelReportQuerySchema } from './Queries'
12
+ import { SentinelModule } from './SentinelModel'
13
+
14
+ export type MemorySentinelParams<TConfig extends SentinelConfig = SentinelConfig> = SentinelParams<
15
+ TConfig,
16
+ {
17
+ onReportEnd?: (boundWitness?: XyoBoundWitness, errors?: Error[]) => void
18
+ onReportStart?: () => void
19
+ onWitnessReportEnd?: (witness: WitnessWrapper, error?: Error) => void
20
+ onWitnessReportStart?: (witness: WitnessWrapper) => void
21
+ }
22
+ >
23
+
24
+ export class MemorySentinel<TParams extends MemorySentinelParams = MemorySentinelParams>
25
+ extends AbstractSentinel<TParams>
26
+ implements SentinelModule<TParams['config']>
27
+ {
28
+ static override configSchema: SentinelConfigSchema
29
+
30
+ static override async create(params?: MemorySentinelParams): Promise<MemorySentinel> {
31
+ return (await super.create(params)) as MemorySentinel
32
+ }
33
+
34
+ override async query<T extends XyoQueryBoundWitness = XyoQueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
35
+ query: T,
36
+ payloads?: XyoPayload[],
37
+ queryConfig?: TConfig,
38
+ ): Promise<ModuleQueryResult> {
39
+ const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQuery>(query, payloads)
40
+ const typedQuery = wrapper.query
41
+ assertEx(this.queryable(query, payloads, queryConfig))
42
+ const queryAccount = new Account()
43
+ const resultPayloads: XyoPayload[] = []
44
+ try {
45
+ switch (typedQuery.schemaName) {
46
+ case SentinelReportQuerySchema: {
47
+ resultPayloads.push(...(await this.report(payloads)))
48
+ break
49
+ }
50
+ default:
51
+ return super.query(query, payloads)
52
+ }
53
+ } catch (ex) {
54
+ const error = ex as Error
55
+ resultPayloads.push(new XyoErrorBuilder([wrapper.hash], error.message).build())
56
+ }
57
+ return await this.bindResult(resultPayloads, queryAccount)
58
+ }
59
+
60
+ async report(payloads: XyoPayload[] = []): Promise<XyoPayload[]> {
61
+ const errors: Error[] = []
62
+ this.params?.onReportStart?.()
63
+ const allWitnesses = [...(await this.getWitnesses())]
64
+ const allPayloads: XyoPayload[] = []
65
+
66
+ try {
67
+ const generatedPayloads = compact(await this.generatePayloads(allWitnesses))
68
+ const combinedPayloads = [...generatedPayloads, ...payloads]
69
+ allPayloads.push(...combinedPayloads)
70
+ } catch (e) {
71
+ errors.push(e as Error)
72
+ }
73
+
74
+ const [newBoundWitness] = await this.bindResult(allPayloads)
75
+ this.history.push(assertEx(newBoundWitness))
76
+ this.params?.onReportEnd?.(newBoundWitness, errors.length > 0 ? errors : undefined)
77
+ return [newBoundWitness, ...allPayloads]
78
+ }
79
+
80
+ private async generatePayloads(witnesses: WitnessWrapper[]): Promise<XyoPayload[]> {
81
+ return (await Promise.all(witnesses?.map(async (witness) => await witness.observe()))).flat()
82
+ }
83
+ }
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './AbstractSentinel'
2
2
  export * from './Automation'
3
3
  export * from './Config'
4
+ export * from './MemorySentinel'
4
5
  export * from './Queries'
5
6
  export * from './SentinelIntervalAutomationWrapper'
6
7
  export * from './SentinelModel'