@xyo-network/sentinel 2.50.4 → 2.50.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/AbstractSentinel.js +0 -65
- package/dist/cjs/AbstractSentinel.js.map +1 -1
- package/dist/cjs/MemorySentinel.js +75 -0
- package/dist/cjs/MemorySentinel.js.map +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +14970 -2826
- package/dist/esm/AbstractSentinel.js +0 -50
- package/dist/esm/AbstractSentinel.js.map +1 -1
- package/dist/esm/MemorySentinel.js +56 -0
- package/dist/esm/MemorySentinel.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/AbstractSentinel.d.ts +6 -8
- package/dist/types/AbstractSentinel.d.ts.map +1 -1
- package/dist/types/MemorySentinel.d.ts +21 -0
- package/dist/types/MemorySentinel.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/AbstractSentinel.ts +18 -66
- package/src/MemorySentinel.ts +83 -0
- package/src/index.ts +1 -0
|
@@ -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":"AAAA,OAAO,
|
|
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
package/dist/esm/index.js.map
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
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":"
|
|
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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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,25 +11,25 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@xylabs/assert": "^2.7.4",
|
|
14
|
-
"@xyo-network/account": "^2.50.
|
|
15
|
-
"@xyo-network/account-model": "^2.50.
|
|
16
|
-
"@xyo-network/archivist": "^2.50.
|
|
17
|
-
"@xyo-network/archivist-wrapper": "^2.50.
|
|
18
|
-
"@xyo-network/boundwitness-model": "^2.50.
|
|
19
|
-
"@xyo-network/core": "^2.50.
|
|
20
|
-
"@xyo-network/module": "^2.50.
|
|
21
|
-
"@xyo-network/module-model": "^2.50.
|
|
22
|
-
"@xyo-network/payload-model": "^2.50.
|
|
23
|
-
"@xyo-network/payload-wrapper": "^2.50.
|
|
24
|
-
"@xyo-network/promise": "^2.50.
|
|
25
|
-
"@xyo-network/witness": "^2.50.
|
|
14
|
+
"@xyo-network/account": "^2.50.6",
|
|
15
|
+
"@xyo-network/account-model": "^2.50.6",
|
|
16
|
+
"@xyo-network/archivist": "^2.50.6",
|
|
17
|
+
"@xyo-network/archivist-wrapper": "^2.50.6",
|
|
18
|
+
"@xyo-network/boundwitness-model": "^2.50.6",
|
|
19
|
+
"@xyo-network/core": "^2.50.6",
|
|
20
|
+
"@xyo-network/module": "^2.50.6",
|
|
21
|
+
"@xyo-network/module-model": "^2.50.6",
|
|
22
|
+
"@xyo-network/payload-model": "^2.50.6",
|
|
23
|
+
"@xyo-network/payload-wrapper": "^2.50.6",
|
|
24
|
+
"@xyo-network/promise": "^2.50.6",
|
|
25
|
+
"@xyo-network/witness": "^2.50.6",
|
|
26
26
|
"lodash": "^4.17.21"
|
|
27
27
|
},
|
|
28
28
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/lodash": "^4.14.191",
|
|
31
|
-
"@xylabs/ts-scripts-yarn3": "^2.16.0
|
|
32
|
-
"@xylabs/tsconfig": "^2.16.0
|
|
31
|
+
"@xylabs/ts-scripts-yarn3": "^2.16.0",
|
|
32
|
+
"@xylabs/tsconfig": "^2.16.0",
|
|
33
33
|
"typescript": "^4.9.5"
|
|
34
34
|
},
|
|
35
35
|
"browser": "dist/esm/index.js",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
},
|
|
65
65
|
"sideEffects": false,
|
|
66
66
|
"types": "dist/types/index.d.ts",
|
|
67
|
-
"version": "2.50.
|
|
67
|
+
"version": "2.50.6"
|
|
68
68
|
}
|
package/src/AbstractSentinel.ts
CHANGED
|
@@ -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 {
|
|
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 {
|
|
11
|
+
import { SentinelReportQuerySchema } from './Queries'
|
|
14
12
|
import { SentinelModule } from './SentinelModel'
|
|
15
13
|
|
|
16
|
-
export type
|
|
14
|
+
export type SentinelParams<
|
|
15
|
+
TConfig extends SentinelConfig = SentinelConfig,
|
|
16
|
+
TAdditionalParams extends AnyObject | undefined = undefined,
|
|
17
|
+
> = ModuleParams<
|
|
17
18
|
TConfig,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
-
|
|
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