@xyo-network/sentinel-abstract 7.0.8 → 7.0.10
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/neutral/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from '@xyo-network/sdk/sentinel-abstract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oCAAoC,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,144 +1,3 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
|
|
3
|
-
assertEx,
|
|
4
|
-
forget,
|
|
5
|
-
globallyUnique
|
|
6
|
-
} from "@ariestools/sdk";
|
|
7
|
-
import { AbstractModuleInstance } from "@xyo-network/module-abstract";
|
|
8
|
-
import {
|
|
9
|
-
BoundWitnessBuilder,
|
|
10
|
-
isBoundWitness,
|
|
11
|
-
PayloadBuilder,
|
|
12
|
-
QueryBoundWitnessWrapper
|
|
13
|
-
} from "@xyo-network/sdk-protocol";
|
|
14
|
-
import {
|
|
15
|
-
SentinelConfigSchema,
|
|
16
|
-
SentinelReportQuerySchema
|
|
17
|
-
} from "@xyo-network/sentinel-model";
|
|
18
|
-
var AbstractSentinel = class _AbstractSentinel extends AbstractModuleInstance {
|
|
19
|
-
static configSchemas = [...super.configSchemas, SentinelConfigSchema];
|
|
20
|
-
static defaultConfigSchema = SentinelConfigSchema;
|
|
21
|
-
static uniqueName = globallyUnique("AbstractSentinel", _AbstractSentinel, "xyo");
|
|
22
|
-
history = [];
|
|
23
|
-
_jobPromise;
|
|
24
|
-
get jobPromise() {
|
|
25
|
-
this._jobPromise = this._jobPromise ?? this.generateJob();
|
|
26
|
-
return this._jobPromise;
|
|
27
|
-
}
|
|
28
|
-
get queries() {
|
|
29
|
-
return [SentinelReportQuerySchema, ...super.queries];
|
|
30
|
-
}
|
|
31
|
-
get synchronous() {
|
|
32
|
-
return this.config.synchronous ?? true;
|
|
33
|
-
}
|
|
34
|
-
get throwErrors() {
|
|
35
|
-
return this.config.throwErrors ?? true;
|
|
36
|
-
}
|
|
37
|
-
async report(inPayloads) {
|
|
38
|
-
this._noOverride("report");
|
|
39
|
-
this.isSupportedQuery(SentinelReportQuerySchema, "report");
|
|
40
|
-
return await this.spanAsync("report", async () => {
|
|
41
|
-
const reportPromise = (async () => {
|
|
42
|
-
if (this.reentrancy?.scope === "global" && this.reentrancy?.action === "skip" && this.globalReentrancyMutex?.isLocked()) {
|
|
43
|
-
console.warn(`Skipping report for ${this.id} due to global reentrancy lock`);
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
46
|
-
try {
|
|
47
|
-
await this.globalReentrancyMutex?.acquire();
|
|
48
|
-
await this.emit("reportStart", { inPayloads, mod: this });
|
|
49
|
-
const payloads = await this.reportHandler(inPayloads);
|
|
50
|
-
const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat();
|
|
51
|
-
if (this.config.archiving) {
|
|
52
|
-
forget(this.storeToArchivists(result), { name: `AbstractSentinel.report.storeArchivist [${this.id}]` });
|
|
53
|
-
}
|
|
54
|
-
await this.emitReportEnd(inPayloads, result);
|
|
55
|
-
return result;
|
|
56
|
-
} finally {
|
|
57
|
-
this.globalReentrancyMutex?.release();
|
|
58
|
-
}
|
|
59
|
-
})();
|
|
60
|
-
if (this.synchronous) {
|
|
61
|
-
return await reportPromise;
|
|
62
|
-
} else {
|
|
63
|
-
forget(reportPromise, { name: `AbstractSentinel.report [${this.id}]` });
|
|
64
|
-
return [];
|
|
65
|
-
}
|
|
66
|
-
}, { timeBudgetLimit: 200 });
|
|
67
|
-
}
|
|
68
|
-
async reportQuery(payloads, account) {
|
|
69
|
-
this._noOverride("reportQuery");
|
|
70
|
-
const queryPayload = { schema: SentinelReportQuerySchema };
|
|
71
|
-
return await this.sendQueryRaw(queryPayload, payloads, account);
|
|
72
|
-
}
|
|
73
|
-
async emitReportEnd(inPayloads, payloads) {
|
|
74
|
-
const boundwitnesses = payloads?.filter(isBoundWitness) ?? [];
|
|
75
|
-
const outPayloads = payloads?.filter((payload) => !isBoundWitness(payload)) ?? [];
|
|
76
|
-
const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address));
|
|
77
|
-
await this.emit("reportEnd", {
|
|
78
|
-
boundwitness,
|
|
79
|
-
inPayloads,
|
|
80
|
-
mod: this,
|
|
81
|
-
outPayloads
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
async generateJob() {
|
|
85
|
-
const job = { tasks: [] };
|
|
86
|
-
let tasks = await Promise.all(
|
|
87
|
-
(this.config.tasks ?? []).map(async (task) => ({
|
|
88
|
-
input: task.input ?? false,
|
|
89
|
-
mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`)
|
|
90
|
-
}))
|
|
91
|
-
);
|
|
92
|
-
while (tasks.length > 0) {
|
|
93
|
-
const previousTasks = job.tasks.at(-1) ?? [];
|
|
94
|
-
const newListCandidates = tasks.filter((task) => {
|
|
95
|
-
const input = task.input;
|
|
96
|
-
if (input === void 0) {
|
|
97
|
-
return true;
|
|
98
|
-
}
|
|
99
|
-
if (typeof input === "boolean") {
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
if (typeof input === "string") {
|
|
103
|
-
return previousTasks.some((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input);
|
|
104
|
-
}
|
|
105
|
-
if (Array.isArray(input)) {
|
|
106
|
-
return previousTasks.some(
|
|
107
|
-
(prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address)
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
return false;
|
|
111
|
-
});
|
|
112
|
-
const newList = newListCandidates.filter((taskCandidate) => {
|
|
113
|
-
const input = taskCandidate.input;
|
|
114
|
-
return !(Array.isArray(input) && tasks.some(
|
|
115
|
-
(remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)
|
|
116
|
-
));
|
|
117
|
-
});
|
|
118
|
-
assertEx(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
|
|
119
|
-
job.tasks.push(newList);
|
|
120
|
-
tasks = tasks.filter((task) => !newList.includes(task));
|
|
121
|
-
}
|
|
122
|
-
return job;
|
|
123
|
-
}
|
|
124
|
-
async queryHandler(query, payloads, queryConfig) {
|
|
125
|
-
const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
|
|
126
|
-
const queryPayload = await wrapper.getQuery();
|
|
127
|
-
assertEx(await this.queryable(query, payloads, queryConfig));
|
|
128
|
-
const resultPayloads = [];
|
|
129
|
-
switch (queryPayload.schema) {
|
|
130
|
-
case SentinelReportQuerySchema: {
|
|
131
|
-
resultPayloads.push(...await this.report(payloads));
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
default: {
|
|
135
|
-
return super.queryHandler(query, payloads);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return PayloadBuilder.omitPrivateStorageMeta(resultPayloads);
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
export {
|
|
142
|
-
AbstractSentinel
|
|
143
|
-
};
|
|
1
|
+
// src/index.ts
|
|
2
|
+
export * from "@xyo-network/sdk/sentinel-abstract";
|
|
144
3
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": ";
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["// Compatibility shim: this package re-exports from @xyo-network/sdk.\nexport * from '@xyo-network/sdk/sentinel-abstract'\n"],
|
|
5
|
+
"mappings": ";AACA,cAAc;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/sentinel-abstract",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.10",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -34,12 +34,11 @@
|
|
|
34
34
|
"README.md"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@xyo-network/
|
|
38
|
-
"@xyo-network/module-model": "~7.0.8",
|
|
39
|
-
"@xyo-network/sentinel-model": "~7.0.8"
|
|
37
|
+
"@xyo-network/sdk": "~7.0.10"
|
|
40
38
|
},
|
|
41
39
|
"devDependencies": {
|
|
42
|
-
"@ariestools/sdk": "~
|
|
40
|
+
"@ariestools/sdk": "~8.0.2",
|
|
41
|
+
"@ariestools/threads": "~8.0.2",
|
|
43
42
|
"@bitauth/libauth": "~3.0.0",
|
|
44
43
|
"@metamask/providers": "~22.1.1",
|
|
45
44
|
"@noble/post-quantum": "~0.6.1",
|
|
@@ -47,14 +46,11 @@
|
|
|
47
46
|
"@opentelemetry/sdk-trace-base": "~2.9.0",
|
|
48
47
|
"@scure/base": "~2.2.0",
|
|
49
48
|
"@scure/bip39": "~2.2.0",
|
|
50
|
-
"@xylabs/
|
|
51
|
-
"@xylabs/
|
|
52
|
-
"@
|
|
53
|
-
"@xylabs/tsconfig": "~8.6.2",
|
|
54
|
-
"@xyo-network/sdk-protocol": "~7.0.13",
|
|
49
|
+
"@xylabs/toolchain": "~8.6.8",
|
|
50
|
+
"@xylabs/tsconfig": "~8.6.8",
|
|
51
|
+
"@xyo-network/sdk-protocol": "~7.0.15",
|
|
55
52
|
"ajv": "~8.20.0",
|
|
56
53
|
"async-mutex": "~0.5.0",
|
|
57
|
-
"browserslist": "~4.28.4",
|
|
58
54
|
"debug": "~4.4.3",
|
|
59
55
|
"eslint": "~10.6.0",
|
|
60
56
|
"eslint-import-resolver-typescript": "~4.4.5",
|
|
@@ -68,7 +64,8 @@
|
|
|
68
64
|
"zod": "~4.4.3"
|
|
69
65
|
},
|
|
70
66
|
"peerDependencies": {
|
|
71
|
-
"@ariestools/sdk": "^
|
|
67
|
+
"@ariestools/sdk": "^8.0.2",
|
|
68
|
+
"@ariestools/threads": "^8.0.2",
|
|
72
69
|
"@bitauth/libauth": "^3.0.0",
|
|
73
70
|
"@metamask/providers": "^22.1.1",
|
|
74
71
|
"@noble/post-quantum": "^0.6.1",
|
|
@@ -76,9 +73,7 @@
|
|
|
76
73
|
"@opentelemetry/sdk-trace-base": "^2.9.0",
|
|
77
74
|
"@scure/base": "^2.2.0",
|
|
78
75
|
"@scure/bip39": "^2.2.0",
|
|
79
|
-
"@
|
|
80
|
-
"@xylabs/threads": "^7.0.8",
|
|
81
|
-
"@xyo-network/sdk-protocol": "^7.0.13",
|
|
76
|
+
"@xyo-network/sdk-protocol": "^7.0.15",
|
|
82
77
|
"ajv": "^8.20.0",
|
|
83
78
|
"async-mutex": "^0.5.0",
|
|
84
79
|
"debug": "^4.4.3",
|
|
@@ -95,5 +90,6 @@
|
|
|
95
90
|
},
|
|
96
91
|
"publishConfig": {
|
|
97
92
|
"access": "public"
|
|
98
|
-
}
|
|
93
|
+
},
|
|
94
|
+
"deprecated": "Use @xyo-network/sdk/sentinel-abstract instead. Replace @xyo-network/sentinel-abstract with @xyo-network/sdk/sentinel-abstract. This package is a compatibility shim only and will not receive further updates."
|
|
99
95
|
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
2
|
-
import type { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model';
|
|
3
|
-
import type { AccountInstance, BoundWitness, Payload, QueryBoundWitness, Schema } from '@xyo-network/sdk-protocol';
|
|
4
|
-
import type { AttachableSentinelInstance, CustomSentinelInstance, SentinelInstance, SentinelJob, SentinelModuleEventData, SentinelParams } from '@xyo-network/sentinel-model';
|
|
5
|
-
export declare abstract class AbstractSentinel<TParams extends SentinelParams = SentinelParams, TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>> extends AbstractModuleInstance<TParams, TEventData> implements CustomSentinelInstance<TParams, TEventData>, AttachableSentinelInstance<TParams, TEventData> {
|
|
6
|
-
static readonly configSchemas: Schema[];
|
|
7
|
-
static readonly defaultConfigSchema: Schema;
|
|
8
|
-
static readonly uniqueName: string;
|
|
9
|
-
history: BoundWitness[];
|
|
10
|
-
private _jobPromise?;
|
|
11
|
-
get jobPromise(): Promise<SentinelJob>;
|
|
12
|
-
get queries(): Schema[];
|
|
13
|
-
get synchronous(): boolean;
|
|
14
|
-
get throwErrors(): boolean;
|
|
15
|
-
report(inPayloads?: Payload[]): Promise<Payload[]>;
|
|
16
|
-
reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult>;
|
|
17
|
-
protected emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]): Promise<void>;
|
|
18
|
-
protected generateJob(): Promise<SentinelJob>;
|
|
19
|
-
protected queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConfig): Promise<ModuleQueryHandlerResult>;
|
|
20
|
-
abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=AbstractSentinel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EACV,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAC1D,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EACV,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAClE,MAAM,2BAA2B,CAAA;AAIlC,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EAEtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAGf,MAAM,6BAA6B,CAAA;AAMpC,8BAAsB,gBAAgB,CACpC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE1H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,0BAA0B,CAAC,OAAO,EAAE,UAAU,CAAC;IACvG,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,EAAE,MAAM,CAA8D;IACzG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAGrC;IAED,IAAa,OAAO,IAAI,MAAM,EAAE,CAE/B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqClD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAM9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;cAS1E,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;cAgD1B,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;IAiBpC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CACjE"}
|