@xyo-network/sentinel-abstract 2.110.10 → 2.110.11

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,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -131,10 +131,7 @@ var AbstractSentinel = class _AbstractSentinel extends import_module_abstract.Ab
131
131
  );
132
132
  const newList = newListCandidates.filter((taskCandidate) => {
133
133
  const input = taskCandidate.input;
134
- if (Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address))) {
135
- return false;
136
- }
137
- return true;
134
+ return !(Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)));
138
135
  });
139
136
  (0, import_assert.assertEx)(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
140
137
  job.tasks.push(newList);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel.js'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n if (\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),\n )\n ) {\n return false\n }\n return true\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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;ACAA,oBAAyB;AACzB,oBAAuB;AACvB,oBAA+B;AAE/B,kCAAoC;AACpC,gCAAiF;AACjF,kCAAyC;AACzC,6BAAuC;AAGvC,4BAWO;AAEA,IAAeA,mBAAf,MAAeA,0BAIZC,8CAAAA;EA3BV,OA2BUA;;;EAGR,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EACvD,OAAyBE,iBAAaC,8BAAe,oBAAoBN,mBAAkB,KAAA;EAC3FO,UAA0B,CAAA;EAClBC;EAER,IAAIC,aAAa;AACf,SAAKD,cAAc,KAAKA,eAAe,KAAKE,YAAW;AACvD,WAAO,KAAKF;EACd;EAEA,IAAaG,UAAoB;AAC/B,WAAO;MAACC;SAA8B,MAAMD;;EAC9C;EAEA,IAAIE,cAAuB;AACzB,WAAO,KAAKC,OAAOD,eAAe;EACpC;EAEA,IAAIE,cAAuB;AACzB,WAAO,KAAKD,OAAOC,eAAe;EACpC;EAEA,MAAMC,OAAOC,YAA4C;AACvD,SAAKC,YAAY,QAAA;AACjB,UAAMC,iBAAiB,YAAA;AACrB,YAAM,KAAKC,KAAK,eAAe;QAAEH;QAAYI,KAAK;MAAK,CAAA;AACvD,YAAMC,WAAW,MAAM,KAAKC,cAAcN,UAAAA;AAG1C,YAAMO,UAAU,MAAM,IAAIC,gDAAAA,EAAsBH,SAASA,QAAAA,EAAUI,OAAO,KAAKC,OAAO,EAAEC,MAAK,GAAIC,KAAI;AAErG,UAAI,KAAKf,OAAOgB,WAAW;AACzBC,kCAAO,KAAKC,kBAAkBR,MAAAA,CAAAA;MAChC;AAEA,YAAM,KAAKS,cAAchB,YAAYO,MAAAA;AACrC,aAAOA;IACT,GAAA;AACA,QAAI,KAAKX,aAAa;AACpB,aAAO,MAAMM;IACf,OAAO;AACLY,gCAAOZ,aAAAA;AACP,aAAO,CAAA;IACT;EACF;EAEA,MAAMe,YAAYZ,UAAsBK,SAAuD;AAC7F,UAAMQ,eAAoC;MAAEC,QAAQxB;IAA0B;AAC9E,WAAO,MAAM,KAAKyB,aAAaF,cAAcb,UAAUK,OAAAA;EACzD;EAEA,MAAgBM,cAAchB,YAAwBK,UAAsB;AAC1E,UAAMgB,iBAAiBhB,UAAUiB,OAAOC,wCAAAA,KAAmB,CAAA;AAC3D,UAAMC,cAAcnB,UAAUiB,OAAOG,yCAAAA,KAAoB,CAAA;AACzD,UAAMC,eAAeL,eAAeM,KAAK,CAACC,OAAOA,GAAGC,UAAUC,SAAS,KAAKC,OAAO,CAAA;AACnF,UAAM,KAAK5B,KAAK,aAAa;MAAEuB;MAAc1B;MAAYI,KAAK;MAAMoB;IAAY,CAAA;EAClF;EAEA,MAAgB/B,cAAc;AAC5B,UAAMuC,MAAmB;MAAEC,OAAO,CAAA;IAAG;AACrC,QAAIA,QAAwB,MAAMC,QAAQC,IACxC,KAAKtC,OAAOoC,MAAMG,IAAI,OAAOC,UAAU;MACrCC,OAAOD,KAAKC,SAAS;MACrBlC,SAAKmC,wBAAS,MAAM,KAAKC,QAAQH,KAAKjC,GAAG,GAAG,MAAM,kCAAkCiC,KAAKjC,GAAG,GAAG;IACjG,EAAA,CAAA;AAEF,WAAO6B,MAAMQ,SAAS,GAAG;AACvB,YAAMC,gBAAgBV,IAAIC,MAAMU,GAAG,EAAC,KAAM,CAAA;AAC1C,YAAMC;;QAEJX,MAAMX,OAAO,CAACe,SAAAA;AACZ,gBAAMC,QAAQD,KAAKC;AACnB,cAAIA,UAAUO,QAAW;AACvB,mBAAO;UACT;AACA,cAAI,OAAOP,UAAU,WAAW;AAC9B,mBAAO;UACT;AACA,cAAI,OAAOA,UAAU,UAAU;AAC7B,mBAAOI,cAAcf,KAAK,CAACmB,aAAaA,SAAS1C,IAAI2B,YAAYO,SAASQ,SAAS1C,IAAI2C,YAAYT,KAAAA;UACrG;AACA,cAAIU,MAAMC,QAAQX,KAAAA,GAAQ;AACxB,mBAAOI,cAAcf,KACnB,CAACmB,aAAaR,MAAMR,SAASgB,SAAS1C,IAAI2B,OAAO,KAAKO,MAAMR,SAASgB,SAAS1C,IAAI2C,WAAWD,SAAS1C,IAAI2B,OAAO,CAAA;UAErH;QACF,CAAA;;AAEF,YAAMmB,UAAUN,kBAAkBtB,OAAO,CAAC6B,kBAAAA;AACxC,cAAMb,QAAQa,cAAcb;AAC5B,YACEU,MAAMC,QAAQX,KAAAA,KACdL,MAAMmB,KACJ,CAACC,kBAAkBf,MAAMR,SAASuB,cAAcjD,IAAI2B,OAAO,KAAKO,MAAMR,SAASuB,cAAcjD,IAAI2C,WAAWM,cAAcjD,IAAI2B,OAAO,CAAA,GAEvI;AACA,iBAAO;QACT;AACA,eAAO;MACT,CAAA;AACAQ,kCAASW,QAAQT,SAAS,GAAG,MAAM,0BAA0BR,MAAMQ,MAAM,GAAG;AAC5ET,UAAIC,MAAMqB,KAAKJ,OAAAA;AAEfjB,cAAQA,MAAMX,OAAO,CAACe,SAAS,CAACa,QAAQpB,SAASO,IAAAA,CAAAA;IACnD;AACA,WAAOL;EACT;EAEA,MAAyBuB,aACvBC,OACAnD,UACAoD,aACmC;AACnC,UAAMC,UAAU,MAAMC,qDAAyBC,WAA4BJ,OAAOnD,QAAAA;AAClF,UAAMa,eAAe,MAAMwC,QAAQG,SAAQ;AAC3CtB,gCAAS,MAAM,KAAKuB,UAAUN,OAAOnD,UAAUoD,WAAAA,CAAAA;AAC/C,UAAMM,iBAA4B,CAAA;AAClC,YAAQ7C,aAAaC,QAAM;MACzB,KAAKxB,iDAA2B;AAC9BoE,uBAAeT,KAAI,GAAK,MAAM,KAAKvD,OAAOM,QAAAA,CAAAA;AAC1C;MACF;MACA,SAAS;AACP,eAAO,MAAMkD,aAAaC,OAAOnD,QAAAA;MACnC;IACF;AACA,WAAO0D;EACT;AAGF;","names":["AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel.js'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n return !(\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
@@ -107,10 +107,7 @@ var AbstractSentinel = class _AbstractSentinel extends AbstractModuleInstance {
107
107
  );
108
108
  const newList = newListCandidates.filter((taskCandidate) => {
109
109
  const input = taskCandidate.input;
110
- if (Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address))) {
111
- return false;
112
- }
113
- return true;
110
+ return !(Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)));
114
111
  });
115
112
  assertEx(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
116
113
  job.tasks.push(newList);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n if (\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),\n )\n ) {\n return false\n }\n return true\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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["assertEx","forget","globallyUnique","BoundWitnessBuilder","isBoundWitness","notBoundWitness","QueryBoundWitnessWrapper","AbstractModuleInstance","SentinelConfigSchema","SentinelReportQuerySchema","AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
1
+ {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n return !(\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":";;;;AAAA,SAASA,gBAAgB;AACzB,SAASC,cAAc;AACvB,SAASC,sBAAsB;AAE/B,SAASC,2BAA2B;AACpC,SAAuBC,gBAAgBC,uBAA0C;AACjF,SAASC,gCAAgC;AACzC,SAASC,8BAA8B;AAGvC,SAGEC,sBAOAC,iCACK;AAEA,IAAeC,mBAAf,MAAeA,0BAIZC,uBAAAA;EA3BV,OA2BUA;;;EAGR,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EACvD,OAAyBE,aAAaC,eAAe,oBAAoBN,mBAAkB,KAAA;EAC3FO,UAA0B,CAAA;EAClBC;EAER,IAAIC,aAAa;AACf,SAAKD,cAAc,KAAKA,eAAe,KAAKE,YAAW;AACvD,WAAO,KAAKF;EACd;EAEA,IAAaG,UAAoB;AAC/B,WAAO;MAACC;SAA8B,MAAMD;;EAC9C;EAEA,IAAIE,cAAuB;AACzB,WAAO,KAAKC,OAAOD,eAAe;EACpC;EAEA,IAAIE,cAAuB;AACzB,WAAO,KAAKD,OAAOC,eAAe;EACpC;EAEA,MAAMC,OAAOC,YAA4C;AACvD,SAAKC,YAAY,QAAA;AACjB,UAAMC,iBAAiB,YAAA;AACrB,YAAM,KAAKC,KAAK,eAAe;QAAEH;QAAYI,KAAK;MAAK,CAAA;AACvD,YAAMC,WAAW,MAAM,KAAKC,cAAcN,UAAAA;AAG1C,YAAMO,UAAU,MAAM,IAAIC,oBAAAA,EAAsBH,SAASA,QAAAA,EAAUI,OAAO,KAAKC,OAAO,EAAEC,MAAK,GAAIC,KAAI;AAErG,UAAI,KAAKf,OAAOgB,WAAW;AACzBC,eAAO,KAAKC,kBAAkBR,MAAAA,CAAAA;MAChC;AAEA,YAAM,KAAKS,cAAchB,YAAYO,MAAAA;AACrC,aAAOA;IACT,GAAA;AACA,QAAI,KAAKX,aAAa;AACpB,aAAO,MAAMM;IACf,OAAO;AACLY,aAAOZ,aAAAA;AACP,aAAO,CAAA;IACT;EACF;EAEA,MAAMe,YAAYZ,UAAsBK,SAAuD;AAC7F,UAAMQ,eAAoC;MAAEC,QAAQxB;IAA0B;AAC9E,WAAO,MAAM,KAAKyB,aAAaF,cAAcb,UAAUK,OAAAA;EACzD;EAEA,MAAgBM,cAAchB,YAAwBK,UAAsB;AAC1E,UAAMgB,iBAAiBhB,UAAUiB,OAAOC,cAAAA,KAAmB,CAAA;AAC3D,UAAMC,cAAcnB,UAAUiB,OAAOG,eAAAA,KAAoB,CAAA;AACzD,UAAMC,eAAeL,eAAeM,KAAK,CAACC,OAAOA,GAAGC,UAAUC,SAAS,KAAKC,OAAO,CAAA;AACnF,UAAM,KAAK5B,KAAK,aAAa;MAAEuB;MAAc1B;MAAYI,KAAK;MAAMoB;IAAY,CAAA;EAClF;EAEA,MAAgB/B,cAAc;AAC5B,UAAMuC,MAAmB;MAAEC,OAAO,CAAA;IAAG;AACrC,QAAIA,QAAwB,MAAMC,QAAQC,IACxC,KAAKtC,OAAOoC,MAAMG,IAAI,OAAOC,UAAU;MACrCC,OAAOD,KAAKC,SAAS;MACrBlC,KAAKmC,SAAS,MAAM,KAAKC,QAAQH,KAAKjC,GAAG,GAAG,MAAM,kCAAkCiC,KAAKjC,GAAG,GAAG;IACjG,EAAA,CAAA;AAEF,WAAO6B,MAAMQ,SAAS,GAAG;AACvB,YAAMC,gBAAgBV,IAAIC,MAAMU,GAAG,EAAC,KAAM,CAAA;AAC1C,YAAMC;;QAEJX,MAAMX,OAAO,CAACe,SAAAA;AACZ,gBAAMC,QAAQD,KAAKC;AACnB,cAAIA,UAAUO,QAAW;AACvB,mBAAO;UACT;AACA,cAAI,OAAOP,UAAU,WAAW;AAC9B,mBAAO;UACT;AACA,cAAI,OAAOA,UAAU,UAAU;AAC7B,mBAAOI,cAAcf,KAAK,CAACmB,aAAaA,SAAS1C,IAAI2B,YAAYO,SAASQ,SAAS1C,IAAI2C,YAAYT,KAAAA;UACrG;AACA,cAAIU,MAAMC,QAAQX,KAAAA,GAAQ;AACxB,mBAAOI,cAAcf,KACnB,CAACmB,aAAaR,MAAMR,SAASgB,SAAS1C,IAAI2B,OAAO,KAAKO,MAAMR,SAASgB,SAAS1C,IAAI2C,WAAWD,SAAS1C,IAAI2B,OAAO,CAAA;UAErH;QACF,CAAA;;AAEF,YAAMmB,UAAUN,kBAAkBtB,OAAO,CAAC6B,kBAAAA;AACxC,cAAMb,QAAQa,cAAcb;AAC5B,eAAO,EACLU,MAAMC,QAAQX,KAAAA,KACdL,MAAMmB,KACJ,CAACC,kBAAkBf,MAAMR,SAASuB,cAAcjD,IAAI2B,OAAO,KAAKO,MAAMR,SAASuB,cAAcjD,IAAI2C,WAAWM,cAAcjD,IAAI2B,OAAO,CAAA;MAG3I,CAAA;AACAQ,eAASW,QAAQT,SAAS,GAAG,MAAM,0BAA0BR,MAAMQ,MAAM,GAAG;AAC5ET,UAAIC,MAAMqB,KAAKJ,OAAAA;AAEfjB,cAAQA,MAAMX,OAAO,CAACe,SAAS,CAACa,QAAQpB,SAASO,IAAAA,CAAAA;IACnD;AACA,WAAOL;EACT;EAEA,MAAyBuB,aACvBC,OACAnD,UACAoD,aACmC;AACnC,UAAMC,UAAU,MAAMC,yBAAyBC,WAA4BJ,OAAOnD,QAAAA;AAClF,UAAMa,eAAe,MAAMwC,QAAQG,SAAQ;AAC3CtB,aAAS,MAAM,KAAKuB,UAAUN,OAAOnD,UAAUoD,WAAAA,CAAAA;AAC/C,UAAMM,iBAA4B,CAAA;AAClC,YAAQ7C,aAAaC,QAAM;MACzB,KAAKxB,2BAA2B;AAC9BoE,uBAAeT,KAAI,GAAK,MAAM,KAAKvD,OAAOM,QAAAA,CAAAA;AAC1C;MACF;MACA,SAAS;AACP,eAAO,MAAMkD,aAAaC,OAAOnD,QAAAA;MACnC;IACF;AACA,WAAO0D;EACT;AAGF;","names":["assertEx","forget","globallyUnique","BoundWitnessBuilder","isBoundWitness","notBoundWitness","QueryBoundWitnessWrapper","AbstractModuleInstance","SentinelConfigSchema","SentinelReportQuerySchema","AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -131,10 +131,7 @@ var AbstractSentinel = class _AbstractSentinel extends import_module_abstract.Ab
131
131
  );
132
132
  const newList = newListCandidates.filter((taskCandidate) => {
133
133
  const input = taskCandidate.input;
134
- if (Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address))) {
135
- return false;
136
- }
137
- return true;
134
+ return !(Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)));
138
135
  });
139
136
  (0, import_assert.assertEx)(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
140
137
  job.tasks.push(newList);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel.js'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n if (\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),\n )\n ) {\n return false\n }\n return true\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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel.js'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n return !(\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
@@ -107,10 +107,7 @@ var AbstractSentinel = class _AbstractSentinel extends AbstractModuleInstance {
107
107
  );
108
108
  const newList = newListCandidates.filter((taskCandidate) => {
109
109
  const input = taskCandidate.input;
110
- if (Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address))) {
111
- return false;
112
- }
113
- return true;
110
+ return !(Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)));
114
111
  });
115
112
  assertEx(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
116
113
  job.tasks.push(newList);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n if (\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),\n )\n ) {\n return false\n }\n return true\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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["assertEx","forget","globallyUnique","BoundWitnessBuilder","isBoundWitness","notBoundWitness","QueryBoundWitnessWrapper","AbstractModuleInstance","SentinelConfigSchema","SentinelReportQuerySchema","AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
1
+ {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n return !(\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["assertEx","forget","globallyUnique","BoundWitnessBuilder","isBoundWitness","notBoundWitness","QueryBoundWitnessWrapper","AbstractModuleInstance","SentinelConfigSchema","SentinelReportQuerySchema","AbstractSentinel","AbstractModuleInstance","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cAkDF,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"}
1
+ {"version":3,"file":"AbstractSentinel.d.ts","sourceRoot":"","sources":["../../src/AbstractSentinel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,YAAY,EAAmC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAElH,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,sBAAsB,EAGtB,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,cAAc,EAIf,MAAM,6BAA6B,CAAA;AAEpC,8BAAsB,gBAAgB,CAClC,OAAO,SAAS,cAAc,GAAG,cAAc,EAC/C,UAAU,SAAS,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAE5H,SAAQ,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAClD,YAAW,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;IAEtD,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiD;IACjG,gBAAyB,mBAAmB,EAAE,MAAM,CAAuB;IAC3E,gBAAyB,UAAU,SAA8D;IACjG,OAAO,EAAE,YAAY,EAAE,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAsB;IAE1C,IAAI,UAAU,yBAGb;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;IAwBlD,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;cAK9E,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE;cAO1D,WAAW;cA+CF,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"}
@@ -127,10 +127,7 @@ var _AbstractSentinel = class _AbstractSentinel extends import_module_abstract.A
127
127
  );
128
128
  const newList = newListCandidates.filter((taskCandidate) => {
129
129
  const input = taskCandidate.input;
130
- if (Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address))) {
131
- return false;
132
- }
133
- return true;
130
+ return !(Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)));
134
131
  });
135
132
  (0, import_assert.assertEx)(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
136
133
  job.tasks.push(newList);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel.js'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n if (\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),\n )\n ) {\n return false\n }\n return true\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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["AbstractSentinel","AbstractModuleInstance","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["export * from './AbstractSentinel.js'\n","import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n return !(\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["AbstractSentinel","AbstractModuleInstance","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique"]}
@@ -103,10 +103,7 @@ var _AbstractSentinel = class _AbstractSentinel extends AbstractModuleInstance {
103
103
  );
104
104
  const newList = newListCandidates.filter((taskCandidate) => {
105
105
  const input = taskCandidate.input;
106
- if (Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address))) {
107
- return false;
108
- }
109
- return true;
106
+ return !(Array.isArray(input) && tasks.some((remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address)));
110
107
  });
111
108
  assertEx(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`);
112
109
  job.tasks.push(newList);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n if (\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),\n )\n ) {\n return false\n }\n return true\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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["assertEx","forget","globallyUnique","BoundWitnessBuilder","isBoundWitness","notBoundWitness","QueryBoundWitnessWrapper","AbstractModuleInstance","SentinelConfigSchema","SentinelReportQuerySchema","AbstractSentinel","AbstractModuleInstance","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique"]}
1
+ {"version":3,"sources":["../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { forget } from '@xylabs/forget'\nimport { globallyUnique } from '@xylabs/object'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport { ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n ResolvedTask,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\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 static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractSentinel', AbstractSentinel, 'xyo')\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 get throwErrors(): boolean {\n return this.config.throwErrors ?? true\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n const reportPromise = (async () => {\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n //create boundwitness\n const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat()\n\n if (this.config.archiving) {\n forget(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 async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\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, mod: 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 mod: assertEx(await this.resolve(task.mod), () => `Unable to resolve task module [${task.mod}]`),\n })),\n )\n while (tasks.length > 0) {\n const previousTasks = job.tasks.at(-1) ?? []\n const newListCandidates =\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 (input === undefined) {\n return true\n }\n if (typeof input === 'boolean') {\n return true\n }\n if (typeof input === 'string') {\n return previousTasks.find((prevTask) => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.find(\n (prevTask) => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n })\n //remove any tasks that have inputs that are in the current list or the remaining tasks\n const newList = newListCandidates.filter((taskCandidate) => {\n const input = taskCandidate.input\n return !(\n Array.isArray(input) &&\n tasks.some(\n (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.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 = await QueryBoundWitnessWrapper.parseQuery<SentinelQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(await 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":["assertEx","forget","globallyUnique","BoundWitnessBuilder","isBoundWitness","notBoundWitness","QueryBoundWitnessWrapper","AbstractModuleInstance","SentinelConfigSchema","SentinelReportQuerySchema","AbstractSentinel","AbstractModuleInstance","history","_jobPromise","jobPromise","generateJob","queries","SentinelReportQuerySchema","synchronous","config","throwErrors","report","inPayloads","_noOverride","reportPromise","emit","mod","payloads","reportHandler","result","BoundWitnessBuilder","signer","account","build","flat","archiving","forget","storeToArchivists","emitReportEnd","reportQuery","queryPayload","schema","sendQueryRaw","boundwitnesses","filter","isBoundWitness","outPayloads","notBoundWitness","boundwitness","find","bw","addresses","includes","address","job","tasks","Promise","all","map","task","input","assertEx","resolve","length","previousTasks","at","newListCandidates","undefined","prevTask","modName","Array","isArray","newList","taskCandidate","some","remainingTask","push","queryHandler","query","queryConfig","wrapper","QueryBoundWitnessWrapper","parseQuery","getQuery","queryable","resultPayloads","configSchemas","SentinelConfigSchema","defaultConfigSchema","uniqueName","globallyUnique"]}
package/package.json CHANGED
@@ -10,22 +10,22 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^3.6.4",
14
- "@xylabs/forget": "^3.6.4",
15
- "@xylabs/object": "^3.6.4",
16
- "@xyo-network/account-model": "^2.110.10",
17
- "@xyo-network/boundwitness-builder": "^2.110.10",
18
- "@xyo-network/boundwitness-model": "^2.110.10",
19
- "@xyo-network/boundwitness-wrapper": "^2.110.10",
20
- "@xyo-network/module-abstract": "^2.110.10",
21
- "@xyo-network/module-model": "^2.110.10",
22
- "@xyo-network/payload-model": "^2.110.10",
23
- "@xyo-network/sentinel-model": "^2.110.10"
13
+ "@xylabs/assert": "^3.6.5",
14
+ "@xylabs/forget": "^3.6.5",
15
+ "@xylabs/object": "^3.6.5",
16
+ "@xyo-network/account-model": "^2.110.11",
17
+ "@xyo-network/boundwitness-builder": "^2.110.11",
18
+ "@xyo-network/boundwitness-model": "^2.110.11",
19
+ "@xyo-network/boundwitness-wrapper": "^2.110.11",
20
+ "@xyo-network/module-abstract": "^2.110.11",
21
+ "@xyo-network/module-model": "^2.110.11",
22
+ "@xyo-network/payload-model": "^2.110.11",
23
+ "@xyo-network/sentinel-model": "^2.110.11"
24
24
  },
25
25
  "description": "Primary SDK for using XYO Protocol 2.0",
26
26
  "devDependencies": {
27
- "@xylabs/ts-scripts-yarn3": "^3.12.4",
28
- "@xylabs/tsconfig": "^3.12.4",
27
+ "@xylabs/ts-scripts-yarn3": "^3.13.3",
28
+ "@xylabs/tsconfig": "^3.13.3",
29
29
  "typescript": "^5.5.4"
30
30
  },
31
31
  "types": "dist/node/index.d.ts",
@@ -66,6 +66,6 @@
66
66
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
67
67
  },
68
68
  "sideEffects": false,
69
- "version": "2.110.10",
69
+ "version": "2.110.11",
70
70
  "type": "module"
71
71
  }
@@ -119,15 +119,12 @@ export abstract class AbstractSentinel<
119
119
  //remove any tasks that have inputs that are in the current list or the remaining tasks
120
120
  const newList = newListCandidates.filter((taskCandidate) => {
121
121
  const input = taskCandidate.input
122
- if (
122
+ return !(
123
123
  Array.isArray(input) &&
124
124
  tasks.some(
125
125
  (remainingTask) => input.includes(remainingTask.mod.address) || input.includes(remainingTask.mod.modName ?? remainingTask.mod.address),
126
126
  )
127
- ) {
128
- return false
129
- }
130
- return true
127
+ )
131
128
  })
132
129
  assertEx(newList.length > 0, () => `Unable to generateJob [${tasks.length}]`)
133
130
  job.tasks.push(newList)