@xyo-network/sentinel-abstract 2.84.1 → 2.84.3

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,13 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ AbstractSentinel: () => AbstractSentinel
24
+ });
25
+ module.exports = __toCommonJS(src_exports);
26
+
1
27
  // src/AbstractSentinel.ts
2
- import { assertEx } from "@xylabs/assert";
3
- import { forget } from "@xylabs/forget";
4
- import { BoundWitnessBuilder, QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
5
- import { isBoundWitness, notBoundWitness } from "@xyo-network/boundwitness-model";
6
- import { AbstractModuleInstance } from "@xyo-network/module-abstract";
7
- import {
8
- SentinelReportQuerySchema
9
- } from "@xyo-network/sentinel-model";
10
- var AbstractSentinel = class extends AbstractModuleInstance {
28
+ var import_assert = require("@xylabs/assert");
29
+ var import_forget = require("@xylabs/forget");
30
+ var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
31
+ var import_boundwitness_model = require("@xyo-network/boundwitness-model");
32
+ var import_module_abstract = require("@xyo-network/module-abstract");
33
+ var import_sentinel_model = require("@xyo-network/sentinel-model");
34
+ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstance {
11
35
  history = [];
12
36
  _jobPromise;
13
37
  get jobPromise() {
@@ -15,7 +39,7 @@ var AbstractSentinel = class extends AbstractModuleInstance {
15
39
  return this._jobPromise;
16
40
  }
17
41
  get queries() {
18
- return [SentinelReportQuerySchema, ...super.queries];
42
+ return [import_sentinel_model.SentinelReportQuerySchema, ...super.queries];
19
43
  }
20
44
  get synchronous() {
21
45
  return this.config.synchronous ?? false;
@@ -30,7 +54,7 @@ var AbstractSentinel = class extends AbstractModuleInstance {
30
54
  const reportPromise = (async () => {
31
55
  await this.emit("reportStart", { inPayloads, module: this });
32
56
  const payloads = await this.reportHandler(inPayloads);
33
- const result = (await new BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat();
57
+ const result = (await new import_boundwitness_builder.BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat();
34
58
  if (this.config.archiving) {
35
59
  await this.storeToArchivists(result);
36
60
  }
@@ -40,13 +64,13 @@ var AbstractSentinel = class extends AbstractModuleInstance {
40
64
  if (this.synchronous) {
41
65
  return await reportPromise;
42
66
  } else {
43
- forget(reportPromise);
67
+ (0, import_forget.forget)(reportPromise);
44
68
  return [];
45
69
  }
46
70
  }
47
71
  async emitReportEnd(inPayloads, payloads) {
48
- const boundwitnesses = (payloads == null ? void 0 : payloads.filter(isBoundWitness)) ?? [];
49
- const outPayloads = (payloads == null ? void 0 : payloads.filter(notBoundWitness)) ?? [];
72
+ const boundwitnesses = (payloads == null ? void 0 : payloads.filter(import_boundwitness_model.isBoundWitness)) ?? [];
73
+ const outPayloads = (payloads == null ? void 0 : payloads.filter(import_boundwitness_model.notBoundWitness)) ?? [];
50
74
  const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address));
51
75
  await this.emit("reportEnd", { boundwitness, inPayloads, module: this, outPayloads });
52
76
  }
@@ -55,7 +79,7 @@ var AbstractSentinel = class extends AbstractModuleInstance {
55
79
  let tasks = await Promise.all(
56
80
  this.config.tasks.map(async (task) => ({
57
81
  input: task.input ?? false,
58
- module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`)
82
+ module: (0, import_assert.assertEx)(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`)
59
83
  }))
60
84
  );
61
85
  while (tasks.length) {
@@ -77,19 +101,19 @@ var AbstractSentinel = class extends AbstractModuleInstance {
77
101
  }
78
102
  })
79
103
  );
80
- assertEx(newList.length > 0, `Unable to generateJob [${tasks.length}]`);
104
+ (0, import_assert.assertEx)(newList.length > 0, `Unable to generateJob [${tasks.length}]`);
81
105
  job.tasks.push(newList);
82
106
  tasks = tasks.filter((task) => !newList.includes(task));
83
107
  }
84
108
  return job;
85
109
  }
86
110
  async queryHandler(query, payloads, queryConfig) {
87
- const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
111
+ const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
88
112
  const queryPayload = await wrapper.getQuery();
89
- assertEx(this.queryable(query, payloads, queryConfig));
113
+ (0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
90
114
  const resultPayloads = [];
91
115
  switch (queryPayload.schema) {
92
- case SentinelReportQuerySchema: {
116
+ case import_sentinel_model.SentinelReportQuerySchema: {
93
117
  resultPayloads.push(...await this.report(payloads));
94
118
  break;
95
119
  }
@@ -100,7 +124,8 @@ var AbstractSentinel = class extends AbstractModuleInstance {
100
124
  return resultPayloads;
101
125
  }
102
126
  };
103
- export {
127
+ // Annotate the CommonJS export names for ESM import in node:
128
+ 0 && (module.exports = {
104
129
  AbstractSentinel
105
- };
106
- //# sourceMappingURL=index.mjs.map
130
+ });
131
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { BoundWitnessBuilder, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueryBase,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\n\nexport abstract class AbstractSentinel<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements CustomSentinelInstance<TParams, TEventData>\n{\n history: BoundWitness[] = []\n private _jobPromise?: Promise<SentinelJob>\n\n get jobPromise() {\n this._jobPromise = this._jobPromise ?? this.generateJob()\n return this._jobPromise\n }\n\n override get queries(): string[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n get synchronous(): boolean {\n return this.config.synchronous ?? false\n }\n\n protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {\n return {\n 'network.xyo.query.sentinel.report': '1/1',\n }\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, module: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat()\n\n if (this.config.archiving) {\n await this.storeToArchivists(result)\n }\n\n await this.emitReportEnd(inPayloads, result)\n return result\n })()\n if (this.synchronous) {\n return await reportPromise\n } else {\n forget(reportPromise)\n return []\n }\n }\n\n protected async emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]) {\n const boundwitnesses = payloads?.filter(isBoundWitness) ?? []\n const outPayloads = payloads?.filter(notBoundWitness) ?? []\n const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address))\n await this.emit('reportEnd', { boundwitness, inPayloads, module: this, outPayloads })\n }\n\n protected async generateJob() {\n const job: SentinelJob = { tasks: [] }\n let tasks: ResolvedTask[] = await Promise.all(\n this.config.tasks.map(async (task) => ({\n input: task.input ?? false,\n module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`),\n })),\n )\n while (tasks.length) {\n const previousTasks = job.tasks.length ? job.tasks[job.tasks.length - 1] : []\n const newList =\n //add all tasks that either require no previous input or have the previous input module already added\n tasks.filter((task) => {\n const input = task.input\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.module.address === input || prevTask.module.config.name === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.module.address) || input.includes(prevTask.module.config.name ?? prevTask.module.address),\n )\n }\n })\n assertEx(newList.length > 0, `Unable to generateJob [${tasks.length}]`)\n job.tasks.push(newList)\n //remove the tasks we just added\n tasks = tasks.filter((task) => !newList.includes(task))\n }\n return job\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case SentinelReportQuerySchema: {\n resultPayloads.push(...(await this.report(payloads)))\n break\n }\n default: {\n return super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],"mappings":"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","names":[]}
@@ -1,37 +1,13 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- AbstractSentinel: () => AbstractSentinel
24
- });
25
- module.exports = __toCommonJS(src_exports);
26
-
27
1
  // src/AbstractSentinel.ts
28
- var import_assert = require("@xylabs/assert");
29
- var import_forget = require("@xylabs/forget");
30
- var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
31
- var import_boundwitness_model = require("@xyo-network/boundwitness-model");
32
- var import_module_abstract = require("@xyo-network/module-abstract");
33
- var import_sentinel_model = require("@xyo-network/sentinel-model");
34
- var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstance {
2
+ import { assertEx } from "@xylabs/assert";
3
+ import { forget } from "@xylabs/forget";
4
+ import { BoundWitnessBuilder, QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
5
+ import { isBoundWitness, notBoundWitness } from "@xyo-network/boundwitness-model";
6
+ import { AbstractModuleInstance } from "@xyo-network/module-abstract";
7
+ import {
8
+ SentinelReportQuerySchema
9
+ } from "@xyo-network/sentinel-model";
10
+ var AbstractSentinel = class extends AbstractModuleInstance {
35
11
  history = [];
36
12
  _jobPromise;
37
13
  get jobPromise() {
@@ -39,7 +15,7 @@ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstan
39
15
  return this._jobPromise;
40
16
  }
41
17
  get queries() {
42
- return [import_sentinel_model.SentinelReportQuerySchema, ...super.queries];
18
+ return [SentinelReportQuerySchema, ...super.queries];
43
19
  }
44
20
  get synchronous() {
45
21
  return this.config.synchronous ?? false;
@@ -54,7 +30,7 @@ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstan
54
30
  const reportPromise = (async () => {
55
31
  await this.emit("reportStart", { inPayloads, module: this });
56
32
  const payloads = await this.reportHandler(inPayloads);
57
- const result = (await new import_boundwitness_builder.BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat();
33
+ const result = (await new BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat();
58
34
  if (this.config.archiving) {
59
35
  await this.storeToArchivists(result);
60
36
  }
@@ -64,13 +40,13 @@ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstan
64
40
  if (this.synchronous) {
65
41
  return await reportPromise;
66
42
  } else {
67
- (0, import_forget.forget)(reportPromise);
43
+ forget(reportPromise);
68
44
  return [];
69
45
  }
70
46
  }
71
47
  async emitReportEnd(inPayloads, payloads) {
72
- const boundwitnesses = (payloads == null ? void 0 : payloads.filter(import_boundwitness_model.isBoundWitness)) ?? [];
73
- const outPayloads = (payloads == null ? void 0 : payloads.filter(import_boundwitness_model.notBoundWitness)) ?? [];
48
+ const boundwitnesses = (payloads == null ? void 0 : payloads.filter(isBoundWitness)) ?? [];
49
+ const outPayloads = (payloads == null ? void 0 : payloads.filter(notBoundWitness)) ?? [];
74
50
  const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address));
75
51
  await this.emit("reportEnd", { boundwitness, inPayloads, module: this, outPayloads });
76
52
  }
@@ -79,7 +55,7 @@ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstan
79
55
  let tasks = await Promise.all(
80
56
  this.config.tasks.map(async (task) => ({
81
57
  input: task.input ?? false,
82
- module: (0, import_assert.assertEx)(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`)
58
+ module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`)
83
59
  }))
84
60
  );
85
61
  while (tasks.length) {
@@ -101,19 +77,19 @@ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstan
101
77
  }
102
78
  })
103
79
  );
104
- (0, import_assert.assertEx)(newList.length > 0, `Unable to generateJob [${tasks.length}]`);
80
+ assertEx(newList.length > 0, `Unable to generateJob [${tasks.length}]`);
105
81
  job.tasks.push(newList);
106
82
  tasks = tasks.filter((task) => !newList.includes(task));
107
83
  }
108
84
  return job;
109
85
  }
110
86
  async queryHandler(query, payloads, queryConfig) {
111
- const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
87
+ const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
112
88
  const queryPayload = await wrapper.getQuery();
113
- (0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
89
+ assertEx(this.queryable(query, payloads, queryConfig));
114
90
  const resultPayloads = [];
115
91
  switch (queryPayload.schema) {
116
- case import_sentinel_model.SentinelReportQuerySchema: {
92
+ case SentinelReportQuerySchema: {
117
93
  resultPayloads.push(...await this.report(payloads));
118
94
  break;
119
95
  }
@@ -124,8 +100,7 @@ var AbstractSentinel = class extends import_module_abstract.AbstractModuleInstan
124
100
  return resultPayloads;
125
101
  }
126
102
  };
127
- // Annotate the CommonJS export names for ESM import in node:
128
- 0 && (module.exports = {
103
+ export {
129
104
  AbstractSentinel
130
- });
105
+ };
131
106
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { BoundWitnessBuilder, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueryBase,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\n\nexport abstract class AbstractSentinel<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements CustomSentinelInstance<TParams, TEventData>\n{\n history: BoundWitness[] = []\n private _jobPromise?: Promise<SentinelJob>\n\n get jobPromise() {\n this._jobPromise = this._jobPromise ?? this.generateJob()\n return this._jobPromise\n }\n\n override get queries(): string[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n get synchronous(): boolean {\n return this.config.synchronous ?? false\n }\n\n protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {\n return {\n 'network.xyo.query.sentinel.report': '1/1',\n }\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, module: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat()\n\n if (this.config.archiving) {\n await this.storeToArchivists(result)\n }\n\n await this.emitReportEnd(inPayloads, result)\n return result\n })()\n if (this.synchronous) {\n return await reportPromise\n } else {\n forget(reportPromise)\n return []\n }\n }\n\n protected async emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]) {\n const boundwitnesses = payloads?.filter(isBoundWitness) ?? []\n const outPayloads = payloads?.filter(notBoundWitness) ?? []\n const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address))\n await this.emit('reportEnd', { boundwitness, inPayloads, module: this, outPayloads })\n }\n\n protected async generateJob() {\n const job: SentinelJob = { tasks: [] }\n let tasks: ResolvedTask[] = await Promise.all(\n this.config.tasks.map(async (task) => ({\n input: task.input ?? false,\n module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`),\n })),\n )\n while (tasks.length) {\n const previousTasks = job.tasks.length ? job.tasks[job.tasks.length - 1] : []\n const newList =\n //add all tasks that either require no previous input or have the previous input module already added\n tasks.filter((task) => {\n const input = task.input\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.module.address === input || prevTask.module.config.name === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.module.address) || input.includes(prevTask.module.config.name ?? prevTask.module.address),\n )\n }\n })\n assertEx(newList.length > 0, `Unable to generateJob [${tasks.length}]`)\n job.tasks.push(newList)\n //remove the tasks we just added\n tasks = tasks.filter((task) => !newList.includes(task))\n }\n return job\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case SentinelReportQuerySchema: {\n resultPayloads.push(...(await this.report(payloads)))\n break\n }\n default: {\n return super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { BoundWitnessBuilder, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueryBase,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\n\nexport abstract class AbstractSentinel<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements CustomSentinelInstance<TParams, TEventData>\n{\n history: BoundWitness[] = []\n private _jobPromise?: Promise<SentinelJob>\n\n get jobPromise() {\n this._jobPromise = this._jobPromise ?? this.generateJob()\n return this._jobPromise\n }\n\n override get queries(): string[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n get synchronous(): boolean {\n return this.config.synchronous ?? false\n }\n\n protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {\n return {\n 'network.xyo.query.sentinel.report': '1/1',\n }\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, module: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat()\n\n if (this.config.archiving) {\n await this.storeToArchivists(result)\n }\n\n await this.emitReportEnd(inPayloads, result)\n return result\n })()\n if (this.synchronous) {\n return await reportPromise\n } else {\n forget(reportPromise)\n return []\n }\n }\n\n protected async emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]) {\n const boundwitnesses = payloads?.filter(isBoundWitness) ?? []\n const outPayloads = payloads?.filter(notBoundWitness) ?? []\n const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address))\n await this.emit('reportEnd', { boundwitness, inPayloads, module: this, outPayloads })\n }\n\n protected async generateJob() {\n const job: SentinelJob = { tasks: [] }\n let tasks: ResolvedTask[] = await Promise.all(\n this.config.tasks.map(async (task) => ({\n input: task.input ?? false,\n module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`),\n })),\n )\n while (tasks.length) {\n const previousTasks = job.tasks.length ? job.tasks[job.tasks.length - 1] : []\n const newList =\n //add all tasks that either require no previous input or have the previous input module already added\n tasks.filter((task) => {\n const input = task.input\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.module.address === input || prevTask.module.config.name === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.module.address) || input.includes(prevTask.module.config.name ?? prevTask.module.address),\n )\n }\n })\n assertEx(newList.length > 0, `Unable to generateJob [${tasks.length}]`)\n job.tasks.push(newList)\n //remove the tasks we just added\n tasks = tasks.filter((task) => !newList.includes(task))\n }\n return job\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case SentinelReportQuerySchema: {\n resultPayloads.push(...(await this.report(payloads)))\n break\n }\n default: {\n return super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -12,20 +12,19 @@
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.13.20",
14
14
  "@xylabs/forget": "^2.13.20",
15
- "@xyo-network/boundwitness-builder": "~2.84.1",
16
- "@xyo-network/boundwitness-model": "~2.84.1",
17
- "@xyo-network/module-abstract": "~2.84.1",
18
- "@xyo-network/module-model": "~2.84.1",
19
- "@xyo-network/payload-model": "~2.84.1",
20
- "@xyo-network/sentinel-model": "~2.84.1"
15
+ "@xyo-network/boundwitness-builder": "~2.84.3",
16
+ "@xyo-network/boundwitness-model": "~2.84.3",
17
+ "@xyo-network/module-abstract": "~2.84.3",
18
+ "@xyo-network/module-model": "~2.84.3",
19
+ "@xyo-network/payload-model": "~2.84.3",
20
+ "@xyo-network/sentinel-model": "~2.84.3"
21
21
  },
22
22
  "description": "Primary SDK for using XYO Protocol 2.0",
23
23
  "devDependencies": {
24
- "@xylabs/ts-scripts-yarn3": "^3.2.10",
25
- "@xylabs/tsconfig": "^3.2.10",
24
+ "@xylabs/ts-scripts-yarn3": "^3.2.19",
25
+ "@xylabs/tsconfig": "^3.2.19",
26
26
  "typescript": "^5.3.3"
27
27
  },
28
- "docs": "dist/docs.json",
29
28
  "types": "dist/node/index.d.ts",
30
29
  "exports": {
31
30
  ".": {
@@ -41,19 +40,19 @@
41
40
  },
42
41
  "node": {
43
42
  "require": {
44
- "types": "./dist/node/index.d.ts",
45
- "default": "./dist/node/index.js"
43
+ "types": "./dist/node/index.d.cts",
44
+ "default": "./dist/node/index.cjs"
46
45
  },
47
46
  "import": {
48
47
  "types": "./dist/node/index.d.mts",
49
- "default": "./dist/node/index.mjs"
48
+ "default": "./dist/node/index.js"
50
49
  }
51
50
  }
52
51
  },
53
52
  "./package.json": "./package.json"
54
53
  },
55
- "main": "dist/node/index.js",
56
- "module": "dist/node/index.mjs",
54
+ "main": "dist/node/index.cjs",
55
+ "module": "dist/node/index.js",
57
56
  "homepage": "https://xyo.network",
58
57
  "license": "LGPL-3.0-only",
59
58
  "publishConfig": {
@@ -64,5 +63,6 @@
64
63
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
65
64
  },
66
65
  "sideEffects": false,
67
- "version": "2.84.1"
66
+ "version": "2.84.3",
67
+ "type": "module"
68
68
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { BoundWitnessBuilder, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueryBase,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\n\nexport abstract class AbstractSentinel<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n >\n extends AbstractModuleInstance<TParams, TEventData>\n implements CustomSentinelInstance<TParams, TEventData>\n{\n history: BoundWitness[] = []\n private _jobPromise?: Promise<SentinelJob>\n\n get jobPromise() {\n this._jobPromise = this._jobPromise ?? this.generateJob()\n return this._jobPromise\n }\n\n override get queries(): string[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n get synchronous(): boolean {\n return this.config.synchronous ?? false\n }\n\n protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {\n return {\n 'network.xyo.query.sentinel.report': '1/1',\n }\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, module: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).witness(this.account).build()).flat()\n\n if (this.config.archiving) {\n await this.storeToArchivists(result)\n }\n\n await this.emitReportEnd(inPayloads, result)\n return result\n })()\n if (this.synchronous) {\n return await reportPromise\n } else {\n forget(reportPromise)\n return []\n }\n }\n\n protected async emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]) {\n const boundwitnesses = payloads?.filter(isBoundWitness) ?? []\n const outPayloads = payloads?.filter(notBoundWitness) ?? []\n const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address))\n await this.emit('reportEnd', { boundwitness, inPayloads, module: this, outPayloads })\n }\n\n protected async generateJob() {\n const job: SentinelJob = { tasks: [] }\n let tasks: ResolvedTask[] = await Promise.all(\n this.config.tasks.map(async (task) => ({\n input: task.input ?? false,\n module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`),\n })),\n )\n while (tasks.length) {\n const previousTasks = job.tasks.length ? job.tasks[job.tasks.length - 1] : []\n const newList =\n //add all tasks that either require no previous input or have the previous input module already added\n tasks.filter((task) => {\n const input = task.input\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.module.address === input || prevTask.module.config.name === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.module.address) || input.includes(prevTask.module.config.name ?? prevTask.module.address),\n )\n }\n })\n assertEx(newList.length > 0, `Unable to generateJob [${tasks.length}]`)\n job.tasks.push(newList)\n //remove the tasks we just added\n tasks = tasks.filter((task) => !newList.includes(task))\n }\n return job\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case SentinelReportQuerySchema: {\n resultPayloads.push(...(await this.report(payloads)))\n break\n }\n default: {\n return super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],"mappings":"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","names":[]}