@xyo-network/sentinel-abstract 2.79.4 → 2.79.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.
|
@@ -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
|
|
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 +1 @@
|
|
|
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
|
|
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/dist/node/index.js.map
CHANGED
|
@@ -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
|
|
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":[]}
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/assert": "^2.13.
|
|
14
|
-
"@xylabs/forget": "^2.13.
|
|
15
|
-
"@xyo-network/boundwitness-builder": "~2.79.
|
|
16
|
-
"@xyo-network/boundwitness-model": "~2.79.
|
|
17
|
-
"@xyo-network/module-abstract": "~2.79.
|
|
18
|
-
"@xyo-network/module-model": "~2.79.
|
|
19
|
-
"@xyo-network/payload-model": "~2.79.
|
|
20
|
-
"@xyo-network/sentinel-model": "~2.79.
|
|
13
|
+
"@xylabs/assert": "^2.13.9",
|
|
14
|
+
"@xylabs/forget": "^2.13.9",
|
|
15
|
+
"@xyo-network/boundwitness-builder": "~2.79.6",
|
|
16
|
+
"@xyo-network/boundwitness-model": "~2.79.6",
|
|
17
|
+
"@xyo-network/module-abstract": "~2.79.6",
|
|
18
|
+
"@xyo-network/module-model": "~2.79.6",
|
|
19
|
+
"@xyo-network/payload-model": "~2.79.6",
|
|
20
|
+
"@xyo-network/sentinel-model": "~2.79.6"
|
|
21
21
|
},
|
|
22
22
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
23
23
|
"devDependencies": {
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
65
65
|
},
|
|
66
66
|
"sideEffects": false,
|
|
67
|
-
"version": "2.79.
|
|
67
|
+
"version": "2.79.6"
|
|
68
68
|
}
|
package/src/AbstractSentinel.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module-mode
|
|
|
7
7
|
import { Payload } from '@xyo-network/payload-model'
|
|
8
8
|
import {
|
|
9
9
|
CustomSentinelInstance,
|
|
10
|
-
|
|
10
|
+
ResolvedTask,
|
|
11
11
|
SentinelInstance,
|
|
12
12
|
SentinelJob,
|
|
13
13
|
SentinelModuleEventData,
|
|
@@ -78,7 +78,7 @@ export abstract class AbstractSentinel<
|
|
|
78
78
|
|
|
79
79
|
protected async generateJob() {
|
|
80
80
|
const job: SentinelJob = { tasks: [] }
|
|
81
|
-
let tasks:
|
|
81
|
+
let tasks: ResolvedTask[] = await Promise.all(
|
|
82
82
|
this.config.tasks.map(async (task) => ({
|
|
83
83
|
input: task.input ?? false,
|
|
84
84
|
module: assertEx(await this.resolve(task.module), `Unable to resolve task module [${task.module}]`),
|