@xyo-network/sentinel 2.75.14 → 2.75.16

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.
Files changed (97) hide show
  1. package/dist/browser/AbstractSentinel.d.cts +4 -8
  2. package/dist/browser/AbstractSentinel.d.cts.map +1 -1
  3. package/dist/browser/AbstractSentinel.d.mts +4 -8
  4. package/dist/browser/AbstractSentinel.d.mts.map +1 -1
  5. package/dist/browser/AbstractSentinel.d.ts +4 -8
  6. package/dist/browser/AbstractSentinel.d.ts.map +1 -1
  7. package/dist/browser/MemorySentinel.d.cts +1 -1
  8. package/dist/browser/MemorySentinel.d.cts.map +1 -1
  9. package/dist/browser/MemorySentinel.d.mts +1 -1
  10. package/dist/browser/MemorySentinel.d.mts.map +1 -1
  11. package/dist/browser/MemorySentinel.d.ts +1 -1
  12. package/dist/browser/MemorySentinel.d.ts.map +1 -1
  13. package/dist/browser/Wrapper.d.cts +3 -3
  14. package/dist/browser/Wrapper.d.cts.map +1 -1
  15. package/dist/browser/Wrapper.d.mts +3 -3
  16. package/dist/browser/Wrapper.d.mts.map +1 -1
  17. package/dist/browser/Wrapper.d.ts +3 -3
  18. package/dist/browser/Wrapper.d.ts.map +1 -1
  19. package/dist/browser/index.cjs +10 -34
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.js +5 -29
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/docs.json +7814 -11998
  24. package/dist/node/AbstractSentinel.d.cts +4 -8
  25. package/dist/node/AbstractSentinel.d.cts.map +1 -1
  26. package/dist/node/AbstractSentinel.d.mts +4 -8
  27. package/dist/node/AbstractSentinel.d.mts.map +1 -1
  28. package/dist/node/AbstractSentinel.d.ts +4 -8
  29. package/dist/node/AbstractSentinel.d.ts.map +1 -1
  30. package/dist/node/MemorySentinel.d.cts +1 -1
  31. package/dist/node/MemorySentinel.d.cts.map +1 -1
  32. package/dist/node/MemorySentinel.d.mts +1 -1
  33. package/dist/node/MemorySentinel.d.mts.map +1 -1
  34. package/dist/node/MemorySentinel.d.ts +1 -1
  35. package/dist/node/MemorySentinel.d.ts.map +1 -1
  36. package/dist/node/Wrapper.d.cts +3 -3
  37. package/dist/node/Wrapper.d.cts.map +1 -1
  38. package/dist/node/Wrapper.d.mts +3 -3
  39. package/dist/node/Wrapper.d.mts.map +1 -1
  40. package/dist/node/Wrapper.d.ts +3 -3
  41. package/dist/node/Wrapper.d.ts.map +1 -1
  42. package/dist/node/index.js +10 -36
  43. package/dist/node/index.js.map +1 -1
  44. package/dist/node/index.mjs +5 -31
  45. package/dist/node/index.mjs.map +1 -1
  46. package/package.json +28 -25
  47. package/src/AbstractSentinel.ts +5 -39
  48. package/src/MemorySentinel.ts +3 -3
  49. package/src/Wrapper.ts +2 -2
  50. package/dist/browser/AbstractSentinel.cjs +0 -113
  51. package/dist/browser/AbstractSentinel.cjs.map +0 -1
  52. package/dist/browser/AbstractSentinel.js +0 -94
  53. package/dist/browser/AbstractSentinel.js.map +0 -1
  54. package/dist/browser/Automation.cjs +0 -27
  55. package/dist/browser/Automation.cjs.map +0 -1
  56. package/dist/browser/Automation.js +0 -6
  57. package/dist/browser/Automation.js.map +0 -1
  58. package/dist/browser/MemorySentinel.cjs +0 -149
  59. package/dist/browser/MemorySentinel.cjs.map +0 -1
  60. package/dist/browser/MemorySentinel.js +0 -133
  61. package/dist/browser/MemorySentinel.js.map +0 -1
  62. package/dist/browser/SentinelIntervalAutomationWrapper.cjs +0 -68
  63. package/dist/browser/SentinelIntervalAutomationWrapper.cjs.map +0 -1
  64. package/dist/browser/SentinelIntervalAutomationWrapper.js +0 -47
  65. package/dist/browser/SentinelIntervalAutomationWrapper.js.map +0 -1
  66. package/dist/browser/SentinelRunner.cjs +0 -157
  67. package/dist/browser/SentinelRunner.cjs.map +0 -1
  68. package/dist/browser/SentinelRunner.js +0 -136
  69. package/dist/browser/SentinelRunner.js.map +0 -1
  70. package/dist/browser/Wrapper.cjs +0 -45
  71. package/dist/browser/Wrapper.cjs.map +0 -1
  72. package/dist/browser/Wrapper.js +0 -28
  73. package/dist/browser/Wrapper.js.map +0 -1
  74. package/dist/node/AbstractSentinel.js +0 -121
  75. package/dist/node/AbstractSentinel.js.map +0 -1
  76. package/dist/node/AbstractSentinel.mjs +0 -98
  77. package/dist/node/AbstractSentinel.mjs.map +0 -1
  78. package/dist/node/Automation.js +0 -31
  79. package/dist/node/Automation.js.map +0 -1
  80. package/dist/node/Automation.mjs +0 -6
  81. package/dist/node/Automation.mjs.map +0 -1
  82. package/dist/node/MemorySentinel.js +0 -157
  83. package/dist/node/MemorySentinel.js.map +0 -1
  84. package/dist/node/MemorySentinel.mjs +0 -137
  85. package/dist/node/MemorySentinel.mjs.map +0 -1
  86. package/dist/node/SentinelIntervalAutomationWrapper.js +0 -72
  87. package/dist/node/SentinelIntervalAutomationWrapper.js.map +0 -1
  88. package/dist/node/SentinelIntervalAutomationWrapper.mjs +0 -47
  89. package/dist/node/SentinelIntervalAutomationWrapper.mjs.map +0 -1
  90. package/dist/node/SentinelRunner.js +0 -162
  91. package/dist/node/SentinelRunner.js.map +0 -1
  92. package/dist/node/SentinelRunner.mjs +0 -137
  93. package/dist/node/SentinelRunner.mjs.map +0 -1
  94. package/dist/node/Wrapper.js +0 -49
  95. package/dist/node/Wrapper.js.map +0 -1
  96. package/dist/node/Wrapper.mjs +0 -28
  97. package/dist/node/Wrapper.mjs.map +0 -1
@@ -1,157 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/MemorySentinel.ts
21
- var MemorySentinel_exports = {};
22
- __export(MemorySentinel_exports, {
23
- MemorySentinel: () => MemorySentinel
24
- });
25
- module.exports = __toCommonJS(MemorySentinel_exports);
26
- var import_assert2 = require("@xylabs/assert");
27
- var import_promise = require("@xylabs/promise");
28
- var import_error = require("@xyo-network/error");
29
- var import_sentinel_model2 = require("@xyo-network/sentinel-model");
30
-
31
- // src/AbstractSentinel.ts
32
- var import_assert = require("@xylabs/assert");
33
- var import_lodash = require("@xylabs/lodash");
34
- var import_archivist = require("@xyo-network/archivist");
35
- var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
36
- var import_boundwitness_model = require("@xyo-network/boundwitness-model");
37
- var import_sentinel_model = require("@xyo-network/sentinel-model");
38
- var import_witness = require("@xyo-network/witness");
39
- var AbstractSentinel = class extends import_archivist.AbstractArchivingModule {
40
- history = [];
41
- get queries() {
42
- return [import_sentinel_model.SentinelReportQuerySchema, ...super.queries];
43
- }
44
- get _queryAccountPaths() {
45
- return {
46
- "network.xyo.query.sentinel.report": "1/1"
47
- };
48
- }
49
- addArchivist(address) {
50
- this.config.archivists = (0, import_lodash.uniq)([...address, ...this.config.archivists ?? []]);
51
- }
52
- addWitness(address) {
53
- this.config.witnesses = (0, import_lodash.uniq)([...address, ...this.config.witnesses ?? []]);
54
- }
55
- async archivists() {
56
- var _a, _b, _c, _d, _e, _f, _g, _h;
57
- (_c = this.logger) == null ? void 0 : _c.debug(`archivists:config:archivist: ${(_b = (_a = this.config) == null ? void 0 : _a.archivists) == null ? void 0 : _b.length}`);
58
- const namesOrAddresses = ((_d = this.config) == null ? void 0 : _d.archivists) ? Array.isArray(this.config.archivists) ? (_e = this.config) == null ? void 0 : _e.archivists : [this.config.archivists] : void 0;
59
- (_f = this.logger) == null ? void 0 : _f.debug(`archivist:namesOrAddresses: ${namesOrAddresses == null ? void 0 : namesOrAddresses.length}`);
60
- const result = [
61
- ...await this.resolve(namesOrAddresses ? { address: namesOrAddresses } : void 0),
62
- ...await this.resolve(namesOrAddresses ? { name: namesOrAddresses } : void 0)
63
- ].map((module2) => (0, import_assert.assertEx)((0, import_archivist.asArchivistInstance)(module2), "Tried to resolve a non-archivist as an archivist"));
64
- if (namesOrAddresses && namesOrAddresses.length !== result.length) {
65
- (_g = this.logger) == null ? void 0 : _g.warn(`Not all archivists found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`);
66
- }
67
- (_h = this.logger) == null ? void 0 : _h.debug(`archivists:result: ${result == null ? void 0 : result.length}`);
68
- return result;
69
- }
70
- removeArchivist(address) {
71
- this.config.archivists = (this.config.archivists ?? []).filter((archivist) => !address.includes(archivist));
72
- }
73
- removeWitness(address) {
74
- this.config.witnesses = (this.config.witnesses ?? []).filter((witness) => !address.includes(witness));
75
- }
76
- async report(inPayloads) {
77
- var _a;
78
- this._noOverride("report");
79
- await this.emit("reportStart", { inPayloads, module: this });
80
- const payloads = await this.reportHandler(inPayloads);
81
- (_a = this.logger) == null ? void 0 : _a.debug(`report:payloads: ${JSON.stringify(payloads, null, 2)}`);
82
- const outPayloads = payloads.filter(import_boundwitness_model.notBoundWitness);
83
- const boundwitnesses = payloads.filter(import_boundwitness_model.isBoundWitness);
84
- const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address));
85
- await this.emit("reportEnd", { boundwitness, inPayloads, module: this, outPayloads });
86
- return payloads;
87
- }
88
- async witnesses() {
89
- var _a, _b, _c, _d, _e, _f, _g;
90
- (_c = this.logger) == null ? void 0 : _c.debug(`witnesses:config:witnesses: ${(_b = (_a = this.config) == null ? void 0 : _a.witnesses) == null ? void 0 : _b.length}`);
91
- const namesOrAddresses = ((_d = this.config) == null ? void 0 : _d.witnesses) ? Array.isArray(this.config.witnesses) ? (_e = this.config) == null ? void 0 : _e.witnesses : [this.config.witnesses] : void 0;
92
- (_f = this.logger) == null ? void 0 : _f.debug(`witnesses:namesOrAddresses: ${namesOrAddresses == null ? void 0 : namesOrAddresses.length}`);
93
- const result = namesOrAddresses ? [
94
- ...await this.resolve({ address: namesOrAddresses }, { identity: import_witness.isWitnessInstance }),
95
- ...await this.resolve({ name: namesOrAddresses }, { identity: import_witness.isWitnessInstance })
96
- ] : await this.resolve(void 0, { identity: import_witness.isWitnessInstance });
97
- if (namesOrAddresses && namesOrAddresses.length !== result.length) {
98
- (_g = this.logger) == null ? void 0 : _g.warn(`Not all witnesses found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`);
99
- }
100
- result.map((item) => {
101
- var _a2;
102
- (_a2 = this.logger) == null ? void 0 : _a2.debug(`witnesses:result: ${item.config.schema}`);
103
- });
104
- return result;
105
- }
106
- async queryHandler(query, payloads, queryConfig) {
107
- const wrapper = import_boundwitness_builder.QueryBoundWitnessWrapper.parseQuery(query, payloads);
108
- const queryPayload = await wrapper.getQuery();
109
- (0, import_assert.assertEx)(this.queryable(query, payloads, queryConfig));
110
- const resultPayloads = [];
111
- switch (queryPayload.schema) {
112
- case import_sentinel_model.SentinelReportQuerySchema: {
113
- resultPayloads.push(...await this.report(payloads));
114
- break;
115
- }
116
- default: {
117
- return super.queryHandler(query, payloads);
118
- }
119
- }
120
- return resultPayloads;
121
- }
122
- };
123
-
124
- // src/MemorySentinel.ts
125
- var MemorySentinel = class extends AbstractSentinel {
126
- static configSchemas = [import_sentinel_model2.SentinelConfigSchema];
127
- async reportHandler(payloads = []) {
128
- await this.started("throw");
129
- const errors = [];
130
- const allWitnesses = [...await this.witnesses()];
131
- const resultPayloads = [];
132
- try {
133
- const [generatedPayloads, generatedErrors] = await this.generateResults(allWitnesses, payloads);
134
- const combinedPayloads = [...generatedPayloads, ...payloads];
135
- resultPayloads.push(...combinedPayloads);
136
- errors.push(...generatedErrors);
137
- } catch (ex) {
138
- (0, import_error.handleError)(ex, (error) => {
139
- errors.push(error);
140
- });
141
- }
142
- const [boundWitness] = await this.bindQueryResult({ schema: import_sentinel_model2.SentinelReportQuerySchema }, resultPayloads);
143
- this.history.push((0, import_assert2.assertEx)(boundWitness));
144
- return [boundWitness, ...resultPayloads];
145
- }
146
- async generateResults(witnesses, inPayloads) {
147
- const results = await Promise.allSettled(witnesses == null ? void 0 : witnesses.map((witness) => witness.observe(inPayloads)));
148
- const payloads = results.filter(import_promise.fulfilled).map((result) => result.value).flat();
149
- const errors = results.filter(import_promise.rejected).map((result) => result.reason).flat();
150
- return [payloads, errors];
151
- }
152
- };
153
- // Annotate the CommonJS export names for ESM import in node:
154
- 0 && (module.exports = {
155
- MemorySentinel
156
- });
157
- //# sourceMappingURL=MemorySentinel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/MemorySentinel.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { fulfilled, rejected } from '@xylabs/promise'\nimport { handleError } from '@xyo-network/error'\nimport { AnyConfigSchema } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n SentinelConfig,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\nimport { WitnessInstance } from '@xyo-network/witness'\n\nimport { AbstractSentinel } from './AbstractSentinel'\n\nexport type MemorySentinelParams<TConfig extends AnyConfigSchema<SentinelConfig> = AnyConfigSchema<SentinelConfig>> = SentinelParams<TConfig>\n\nexport class MemorySentinel<\n TParams extends MemorySentinelParams = MemorySentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override configSchemas = [SentinelConfigSchema]\n\n async reportHandler(payloads: Payload[] = []): Promise<Payload[]> {\n await this.started('throw')\n const errors: Error[] = []\n const allWitnesses = [...(await this.witnesses())]\n const resultPayloads: Payload[] = []\n\n try {\n const [generatedPayloads, generatedErrors] = await this.generateResults(allWitnesses, payloads)\n const combinedPayloads = [...generatedPayloads, ...payloads]\n resultPayloads.push(...combinedPayloads)\n errors.push(...generatedErrors)\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n\n const [boundWitness] = await this.bindQueryResult({ schema: SentinelReportQuerySchema }, resultPayloads)\n this.history.push(assertEx(boundWitness))\n return [boundWitness, ...resultPayloads]\n }\n\n private async generateResults(witnesses: WitnessInstance[], inPayloads?: Payload[]): Promise<[Payload[], Error[]]> {\n const results = await Promise.allSettled(witnesses?.map((witness) => witness.observe(inPayloads)))\n const payloads = results\n .filter(fulfilled)\n .map((result) => result.value)\n .flat()\n const errors = results\n .filter(rejected)\n .map((result) => result.reason)\n .flat()\n return [payloads, errors]\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { uniq } from '@xylabs/lodash'\nimport { AbstractArchivingModule, asArchivistInstance } from '@xyo-network/archivist'\nimport { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueryBase,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\nimport { isWitnessInstance, WitnessInstance } from '@xyo-network/witness'\n\nexport abstract class AbstractSentinel<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n >\n extends AbstractArchivingModule<TParams, TEventData>\n implements CustomSentinelInstance<TParams, TEventData>\n{\n history: BoundWitness[] = []\n\n override get queries(): string[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {\n return {\n 'network.xyo.query.sentinel.report': '1/1',\n }\n }\n\n addArchivist(address: string[]) {\n this.config.archivists = uniq([...address, ...(this.config.archivists ?? [])])\n }\n\n addWitness(address: string[]) {\n this.config.witnesses = uniq([...address, ...(this.config.witnesses ?? [])])\n }\n\n async archivists() {\n this.logger?.debug(`archivists:config:archivist: ${this.config?.archivists?.length}`)\n const namesOrAddresses = this.config?.archivists\n ? Array.isArray(this.config.archivists)\n ? this.config?.archivists\n : [this.config.archivists]\n : undefined\n this.logger?.debug(`archivist:namesOrAddresses: ${namesOrAddresses?.length}`)\n const result = [\n ...(await this.resolve(namesOrAddresses ? { address: namesOrAddresses } : undefined)),\n ...(await this.resolve(namesOrAddresses ? { name: namesOrAddresses } : undefined)),\n ].map((module) => assertEx(asArchivistInstance(module), 'Tried to resolve a non-archivist as an archivist'))\n\n if (namesOrAddresses && namesOrAddresses.length !== result.length) {\n this.logger?.warn(`Not all archivists found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`)\n }\n\n this.logger?.debug(`archivists:result: ${result?.length}`)\n\n return result\n }\n\n removeArchivist(address: string[]) {\n this.config.archivists = (this.config.archivists ?? []).filter((archivist) => !address.includes(archivist))\n }\n\n removeWitness(address: string[]) {\n this.config.witnesses = (this.config.witnesses ?? []).filter((witness) => !address.includes(witness))\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n await this.emit('reportStart', { inPayloads, module: this })\n const payloads = await this.reportHandler(inPayloads)\n this.logger?.debug(`report:payloads: ${JSON.stringify(payloads, null, 2)}`)\n const outPayloads = payloads.filter(notBoundWitness)\n const boundwitnesses = payloads.filter(isBoundWitness)\n const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address))\n await this.emit('reportEnd', { boundwitness, inPayloads, module: this, outPayloads })\n return payloads\n }\n\n async witnesses() {\n this.logger?.debug(`witnesses:config:witnesses: ${this.config?.witnesses?.length}`)\n const namesOrAddresses = this.config?.witnesses\n ? Array.isArray(this.config.witnesses)\n ? this.config?.witnesses\n : [this.config.witnesses]\n : undefined\n this.logger?.debug(`witnesses:namesOrAddresses: ${namesOrAddresses?.length}`)\n const result = namesOrAddresses\n ? [\n ...(await this.resolve<WitnessInstance>({ address: namesOrAddresses }, { identity: isWitnessInstance })),\n ...(await this.resolve<WitnessInstance>({ name: namesOrAddresses }, { identity: isWitnessInstance })),\n ]\n : await this.resolve<WitnessInstance>(undefined, { identity: isWitnessInstance })\n\n if (namesOrAddresses && namesOrAddresses.length !== result.length) {\n this.logger?.warn(`Not all witnesses found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`)\n }\n result.map((item) => {\n this.logger?.debug(`witnesses:result: ${item.config.schema}`)\n })\n\n return result\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case SentinelReportQuerySchema: {\n resultPayloads.push(...(await this.report(payloads)))\n break\n }\n default: {\n return super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,iBAAyB;AACzB,qBAAoC;AACpC,mBAA4B;AAG5B,IAAAC,yBAOO;;;ACZP,oBAAyB;AACzB,oBAAqB;AACrB,uBAA6D;AAC7D,kCAA4D;AAC5D,gCAA8D;AAG9D,4BAOO;AACP,qBAAmD;AAE5C,IAAe,mBAAf,cAIG,yCAEV;AAAA,EACE,UAA0B,CAAC;AAAA,EAE3B,IAAa,UAAoB;AAC/B,WAAO,CAAC,iDAA2B,GAAG,MAAM,OAAO;AAAA,EACrD;AAAA,EAEA,IAAuB,qBAAkE;AACvF,WAAO;AAAA,MACL,qCAAqC;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,aAAa,SAAmB;AAC9B,SAAK,OAAO,iBAAa,oBAAK,CAAC,GAAG,SAAS,GAAI,KAAK,OAAO,cAAc,CAAC,CAAE,CAAC;AAAA,EAC/E;AAAA,EAEA,WAAW,SAAmB;AAC5B,SAAK,OAAO,gBAAY,oBAAK,CAAC,GAAG,SAAS,GAAI,KAAK,OAAO,aAAa,CAAC,CAAE,CAAC;AAAA,EAC7E;AAAA,EAEA,MAAM,aAAa;AA5CrB;AA6CI,eAAK,WAAL,mBAAa,MAAM,iCAAgC,gBAAK,WAAL,mBAAa,eAAb,mBAAyB,MAAM;AAClF,UAAM,qBAAmB,UAAK,WAAL,mBAAa,cAClC,MAAM,QAAQ,KAAK,OAAO,UAAU,KAClC,UAAK,WAAL,mBAAa,aACb,CAAC,KAAK,OAAO,UAAU,IACzB;AACJ,eAAK,WAAL,mBAAa,MAAM,+BAA+B,qDAAkB,MAAM;AAC1E,UAAM,SAAS;AAAA,MACb,GAAI,MAAM,KAAK,QAAQ,mBAAmB,EAAE,SAAS,iBAAiB,IAAI,MAAS;AAAA,MACnF,GAAI,MAAM,KAAK,QAAQ,mBAAmB,EAAE,MAAM,iBAAiB,IAAI,MAAS;AAAA,IAClF,EAAE,IAAI,CAACC,gBAAW,4BAAS,sCAAoBA,OAAM,GAAG,kDAAkD,CAAC;AAE3G,QAAI,oBAAoB,iBAAiB,WAAW,OAAO,QAAQ;AACjE,iBAAK,WAAL,mBAAa,KAAK,wCAAwC,iBAAiB,MAAM,YAAY,OAAO,MAAM;AAAA,IAC5G;AAEA,eAAK,WAAL,mBAAa,MAAM,sBAAsB,iCAAQ,MAAM;AAEvD,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB,SAAmB;AACjC,SAAK,OAAO,cAAc,KAAK,OAAO,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,SAAS,SAAS,CAAC;AAAA,EAC5G;AAAA,EAEA,cAAc,SAAmB;AAC/B,SAAK,OAAO,aAAa,KAAK,OAAO,aAAa,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,SAAS,OAAO,CAAC;AAAA,EACtG;AAAA,EAEA,MAAM,OAAO,YAA4C;AA1E3D;AA2EI,SAAK,YAAY,QAAQ;AACzB,UAAM,KAAK,KAAK,eAAe,EAAE,YAAY,QAAQ,KAAK,CAAC;AAC3D,UAAM,WAAW,MAAM,KAAK,cAAc,UAAU;AACpD,eAAK,WAAL,mBAAa,MAAM,oBAAoB,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AACxE,UAAM,cAAc,SAAS,OAAO,yCAAe;AACnD,UAAM,iBAAiB,SAAS,OAAO,wCAAc;AACrD,UAAM,eAAe,eAAe,KAAK,CAAC,OAAO,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC;AACpF,UAAM,KAAK,KAAK,aAAa,EAAE,cAAc,YAAY,QAAQ,MAAM,YAAY,CAAC;AACpF,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,YAAY;AAtFpB;AAuFI,eAAK,WAAL,mBAAa,MAAM,gCAA+B,gBAAK,WAAL,mBAAa,cAAb,mBAAwB,MAAM;AAChF,UAAM,qBAAmB,UAAK,WAAL,mBAAa,aAClC,MAAM,QAAQ,KAAK,OAAO,SAAS,KACjC,UAAK,WAAL,mBAAa,YACb,CAAC,KAAK,OAAO,SAAS,IACxB;AACJ,eAAK,WAAL,mBAAa,MAAM,+BAA+B,qDAAkB,MAAM;AAC1E,UAAM,SAAS,mBACX;AAAA,MACE,GAAI,MAAM,KAAK,QAAyB,EAAE,SAAS,iBAAiB,GAAG,EAAE,UAAU,iCAAkB,CAAC;AAAA,MACtG,GAAI,MAAM,KAAK,QAAyB,EAAE,MAAM,iBAAiB,GAAG,EAAE,UAAU,iCAAkB,CAAC;AAAA,IACrG,IACA,MAAM,KAAK,QAAyB,QAAW,EAAE,UAAU,iCAAkB,CAAC;AAElF,QAAI,oBAAoB,iBAAiB,WAAW,OAAO,QAAQ;AACjE,iBAAK,WAAL,mBAAa,KAAK,uCAAuC,iBAAiB,MAAM,YAAY,OAAO,MAAM;AAAA,IAC3G;AACA,WAAO,IAAI,CAAC,SAAS;AAxGzB,UAAAC;AAyGM,OAAAA,MAAA,KAAK,WAAL,gBAAAA,IAAa,MAAM,qBAAqB,KAAK,OAAO,MAAM;AAAA,IAC5D,CAAC;AAED,WAAO;AAAA,EACT;AAAA,EAEA,MAAyB,aACvB,OACA,UACA,aACmC;AACnC,UAAM,UAAU,qDAAyB,WAA8B,OAAO,QAAQ;AACtF,UAAM,eAAe,MAAM,QAAQ,SAAS;AAC5C,gCAAS,KAAK,UAAU,OAAO,UAAU,WAAW,CAAC;AACrD,UAAM,iBAA4B,CAAC;AACnC,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK,iDAA2B;AAC9B,uBAAe,KAAK,GAAI,MAAM,KAAK,OAAO,QAAQ,CAAE;AACpD;AAAA,MACF;AAAA,MACA,SAAS;AACP,eAAO,MAAM,aAAa,OAAO,QAAQ;AAAA,MAC3C;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAGF;;;ADlHO,IAAM,iBAAN,cAGG,iBAAsC;AAAA,EAC9C,OAAgB,gBAAgB,CAAC,2CAAoB;AAAA,EAErD,MAAM,cAAc,WAAsB,CAAC,GAAuB;AAChE,UAAM,KAAK,QAAQ,OAAO;AAC1B,UAAM,SAAkB,CAAC;AACzB,UAAM,eAAe,CAAC,GAAI,MAAM,KAAK,UAAU,CAAE;AACjD,UAAM,iBAA4B,CAAC;AAEnC,QAAI;AACF,YAAM,CAAC,mBAAmB,eAAe,IAAI,MAAM,KAAK,gBAAgB,cAAc,QAAQ;AAC9F,YAAM,mBAAmB,CAAC,GAAG,mBAAmB,GAAG,QAAQ;AAC3D,qBAAe,KAAK,GAAG,gBAAgB;AACvC,aAAO,KAAK,GAAG,eAAe;AAAA,IAChC,SAAS,IAAI;AACX,oCAAY,IAAI,CAAC,UAAU;AACzB,eAAO,KAAK,KAAK;AAAA,MACnB,CAAC;AAAA,IACH;AAEA,UAAM,CAAC,YAAY,IAAI,MAAM,KAAK,gBAAgB,EAAE,QAAQ,iDAA0B,GAAG,cAAc;AACvG,SAAK,QAAQ,SAAK,yBAAS,YAAY,CAAC;AACxC,WAAO,CAAC,cAAc,GAAG,cAAc;AAAA,EACzC;AAAA,EAEA,MAAc,gBAAgB,WAA8B,YAAuD;AACjH,UAAM,UAAU,MAAM,QAAQ,WAAW,uCAAW,IAAI,CAAC,YAAY,QAAQ,QAAQ,UAAU,EAAE;AACjG,UAAM,WAAW,QACd,OAAO,wBAAS,EAChB,IAAI,CAAC,WAAW,OAAO,KAAK,EAC5B,KAAK;AACR,UAAM,SAAS,QACZ,OAAO,uBAAQ,EACf,IAAI,CAAC,WAAW,OAAO,MAAM,EAC7B,KAAK;AACR,WAAO,CAAC,UAAU,MAAM;AAAA,EAC1B;AACF;","names":["import_assert","import_sentinel_model","module","_a"]}
@@ -1,137 +0,0 @@
1
- // src/MemorySentinel.ts
2
- import { assertEx as assertEx2 } from "@xylabs/assert";
3
- import { fulfilled, rejected } from "@xylabs/promise";
4
- import { handleError } from "@xyo-network/error";
5
- import {
6
- SentinelConfigSchema,
7
- SentinelReportQuerySchema as SentinelReportQuerySchema2
8
- } from "@xyo-network/sentinel-model";
9
-
10
- // src/AbstractSentinel.ts
11
- import { assertEx } from "@xylabs/assert";
12
- import { uniq } from "@xylabs/lodash";
13
- import { AbstractArchivingModule, asArchivistInstance } from "@xyo-network/archivist";
14
- import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-builder";
15
- import { isBoundWitness, notBoundWitness } from "@xyo-network/boundwitness-model";
16
- import {
17
- SentinelReportQuerySchema
18
- } from "@xyo-network/sentinel-model";
19
- import { isWitnessInstance } from "@xyo-network/witness";
20
- var AbstractSentinel = class extends AbstractArchivingModule {
21
- history = [];
22
- get queries() {
23
- return [SentinelReportQuerySchema, ...super.queries];
24
- }
25
- get _queryAccountPaths() {
26
- return {
27
- "network.xyo.query.sentinel.report": "1/1"
28
- };
29
- }
30
- addArchivist(address) {
31
- this.config.archivists = uniq([...address, ...this.config.archivists ?? []]);
32
- }
33
- addWitness(address) {
34
- this.config.witnesses = uniq([...address, ...this.config.witnesses ?? []]);
35
- }
36
- async archivists() {
37
- var _a, _b, _c, _d, _e, _f, _g, _h;
38
- (_c = this.logger) == null ? void 0 : _c.debug(`archivists:config:archivist: ${(_b = (_a = this.config) == null ? void 0 : _a.archivists) == null ? void 0 : _b.length}`);
39
- const namesOrAddresses = ((_d = this.config) == null ? void 0 : _d.archivists) ? Array.isArray(this.config.archivists) ? (_e = this.config) == null ? void 0 : _e.archivists : [this.config.archivists] : void 0;
40
- (_f = this.logger) == null ? void 0 : _f.debug(`archivist:namesOrAddresses: ${namesOrAddresses == null ? void 0 : namesOrAddresses.length}`);
41
- const result = [
42
- ...await this.resolve(namesOrAddresses ? { address: namesOrAddresses } : void 0),
43
- ...await this.resolve(namesOrAddresses ? { name: namesOrAddresses } : void 0)
44
- ].map((module) => assertEx(asArchivistInstance(module), "Tried to resolve a non-archivist as an archivist"));
45
- if (namesOrAddresses && namesOrAddresses.length !== result.length) {
46
- (_g = this.logger) == null ? void 0 : _g.warn(`Not all archivists found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`);
47
- }
48
- (_h = this.logger) == null ? void 0 : _h.debug(`archivists:result: ${result == null ? void 0 : result.length}`);
49
- return result;
50
- }
51
- removeArchivist(address) {
52
- this.config.archivists = (this.config.archivists ?? []).filter((archivist) => !address.includes(archivist));
53
- }
54
- removeWitness(address) {
55
- this.config.witnesses = (this.config.witnesses ?? []).filter((witness) => !address.includes(witness));
56
- }
57
- async report(inPayloads) {
58
- var _a;
59
- this._noOverride("report");
60
- await this.emit("reportStart", { inPayloads, module: this });
61
- const payloads = await this.reportHandler(inPayloads);
62
- (_a = this.logger) == null ? void 0 : _a.debug(`report:payloads: ${JSON.stringify(payloads, null, 2)}`);
63
- const outPayloads = payloads.filter(notBoundWitness);
64
- const boundwitnesses = payloads.filter(isBoundWitness);
65
- const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address));
66
- await this.emit("reportEnd", { boundwitness, inPayloads, module: this, outPayloads });
67
- return payloads;
68
- }
69
- async witnesses() {
70
- var _a, _b, _c, _d, _e, _f, _g;
71
- (_c = this.logger) == null ? void 0 : _c.debug(`witnesses:config:witnesses: ${(_b = (_a = this.config) == null ? void 0 : _a.witnesses) == null ? void 0 : _b.length}`);
72
- const namesOrAddresses = ((_d = this.config) == null ? void 0 : _d.witnesses) ? Array.isArray(this.config.witnesses) ? (_e = this.config) == null ? void 0 : _e.witnesses : [this.config.witnesses] : void 0;
73
- (_f = this.logger) == null ? void 0 : _f.debug(`witnesses:namesOrAddresses: ${namesOrAddresses == null ? void 0 : namesOrAddresses.length}`);
74
- const result = namesOrAddresses ? [
75
- ...await this.resolve({ address: namesOrAddresses }, { identity: isWitnessInstance }),
76
- ...await this.resolve({ name: namesOrAddresses }, { identity: isWitnessInstance })
77
- ] : await this.resolve(void 0, { identity: isWitnessInstance });
78
- if (namesOrAddresses && namesOrAddresses.length !== result.length) {
79
- (_g = this.logger) == null ? void 0 : _g.warn(`Not all witnesses found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`);
80
- }
81
- result.map((item) => {
82
- var _a2;
83
- (_a2 = this.logger) == null ? void 0 : _a2.debug(`witnesses:result: ${item.config.schema}`);
84
- });
85
- return result;
86
- }
87
- async queryHandler(query, payloads, queryConfig) {
88
- const wrapper = QueryBoundWitnessWrapper.parseQuery(query, payloads);
89
- const queryPayload = await wrapper.getQuery();
90
- assertEx(this.queryable(query, payloads, queryConfig));
91
- const resultPayloads = [];
92
- switch (queryPayload.schema) {
93
- case SentinelReportQuerySchema: {
94
- resultPayloads.push(...await this.report(payloads));
95
- break;
96
- }
97
- default: {
98
- return super.queryHandler(query, payloads);
99
- }
100
- }
101
- return resultPayloads;
102
- }
103
- };
104
-
105
- // src/MemorySentinel.ts
106
- var MemorySentinel = class extends AbstractSentinel {
107
- static configSchemas = [SentinelConfigSchema];
108
- async reportHandler(payloads = []) {
109
- await this.started("throw");
110
- const errors = [];
111
- const allWitnesses = [...await this.witnesses()];
112
- const resultPayloads = [];
113
- try {
114
- const [generatedPayloads, generatedErrors] = await this.generateResults(allWitnesses, payloads);
115
- const combinedPayloads = [...generatedPayloads, ...payloads];
116
- resultPayloads.push(...combinedPayloads);
117
- errors.push(...generatedErrors);
118
- } catch (ex) {
119
- handleError(ex, (error) => {
120
- errors.push(error);
121
- });
122
- }
123
- const [boundWitness] = await this.bindQueryResult({ schema: SentinelReportQuerySchema2 }, resultPayloads);
124
- this.history.push(assertEx2(boundWitness));
125
- return [boundWitness, ...resultPayloads];
126
- }
127
- async generateResults(witnesses, inPayloads) {
128
- const results = await Promise.allSettled(witnesses == null ? void 0 : witnesses.map((witness) => witness.observe(inPayloads)));
129
- const payloads = results.filter(fulfilled).map((result) => result.value).flat();
130
- const errors = results.filter(rejected).map((result) => result.reason).flat();
131
- return [payloads, errors];
132
- }
133
- };
134
- export {
135
- MemorySentinel
136
- };
137
- //# sourceMappingURL=MemorySentinel.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/MemorySentinel.ts","../../src/AbstractSentinel.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { fulfilled, rejected } from '@xylabs/promise'\nimport { handleError } from '@xyo-network/error'\nimport { AnyConfigSchema } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n SentinelConfig,\n SentinelConfigSchema,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\nimport { WitnessInstance } from '@xyo-network/witness'\n\nimport { AbstractSentinel } from './AbstractSentinel'\n\nexport type MemorySentinelParams<TConfig extends AnyConfigSchema<SentinelConfig> = AnyConfigSchema<SentinelConfig>> = SentinelParams<TConfig>\n\nexport class MemorySentinel<\n TParams extends MemorySentinelParams = MemorySentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override configSchemas = [SentinelConfigSchema]\n\n async reportHandler(payloads: Payload[] = []): Promise<Payload[]> {\n await this.started('throw')\n const errors: Error[] = []\n const allWitnesses = [...(await this.witnesses())]\n const resultPayloads: Payload[] = []\n\n try {\n const [generatedPayloads, generatedErrors] = await this.generateResults(allWitnesses, payloads)\n const combinedPayloads = [...generatedPayloads, ...payloads]\n resultPayloads.push(...combinedPayloads)\n errors.push(...generatedErrors)\n } catch (ex) {\n handleError(ex, (error) => {\n errors.push(error)\n })\n }\n\n const [boundWitness] = await this.bindQueryResult({ schema: SentinelReportQuerySchema }, resultPayloads)\n this.history.push(assertEx(boundWitness))\n return [boundWitness, ...resultPayloads]\n }\n\n private async generateResults(witnesses: WitnessInstance[], inPayloads?: Payload[]): Promise<[Payload[], Error[]]> {\n const results = await Promise.allSettled(witnesses?.map((witness) => witness.observe(inPayloads)))\n const payloads = results\n .filter(fulfilled)\n .map((result) => result.value)\n .flat()\n const errors = results\n .filter(rejected)\n .map((result) => result.reason)\n .flat()\n return [payloads, errors]\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { uniq } from '@xylabs/lodash'\nimport { AbstractArchivingModule, asArchivistInstance } from '@xyo-network/archivist'\nimport { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'\nimport { BoundWitness, isBoundWitness, notBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleConfig, ModuleQueryHandlerResult } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport {\n CustomSentinelInstance,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueryBase,\n SentinelReportQuerySchema,\n} from '@xyo-network/sentinel-model'\nimport { isWitnessInstance, WitnessInstance } from '@xyo-network/witness'\n\nexport abstract class AbstractSentinel<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n >\n extends AbstractArchivingModule<TParams, TEventData>\n implements CustomSentinelInstance<TParams, TEventData>\n{\n history: BoundWitness[] = []\n\n override get queries(): string[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n protected override get _queryAccountPaths(): Record<SentinelQueryBase['schema'], string> {\n return {\n 'network.xyo.query.sentinel.report': '1/1',\n }\n }\n\n addArchivist(address: string[]) {\n this.config.archivists = uniq([...address, ...(this.config.archivists ?? [])])\n }\n\n addWitness(address: string[]) {\n this.config.witnesses = uniq([...address, ...(this.config.witnesses ?? [])])\n }\n\n async archivists() {\n this.logger?.debug(`archivists:config:archivist: ${this.config?.archivists?.length}`)\n const namesOrAddresses = this.config?.archivists\n ? Array.isArray(this.config.archivists)\n ? this.config?.archivists\n : [this.config.archivists]\n : undefined\n this.logger?.debug(`archivist:namesOrAddresses: ${namesOrAddresses?.length}`)\n const result = [\n ...(await this.resolve(namesOrAddresses ? { address: namesOrAddresses } : undefined)),\n ...(await this.resolve(namesOrAddresses ? { name: namesOrAddresses } : undefined)),\n ].map((module) => assertEx(asArchivistInstance(module), 'Tried to resolve a non-archivist as an archivist'))\n\n if (namesOrAddresses && namesOrAddresses.length !== result.length) {\n this.logger?.warn(`Not all archivists found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`)\n }\n\n this.logger?.debug(`archivists:result: ${result?.length}`)\n\n return result\n }\n\n removeArchivist(address: string[]) {\n this.config.archivists = (this.config.archivists ?? []).filter((archivist) => !address.includes(archivist))\n }\n\n removeWitness(address: string[]) {\n this.config.witnesses = (this.config.witnesses ?? []).filter((witness) => !address.includes(witness))\n }\n\n async report(inPayloads?: Payload[]): Promise<Payload[]> {\n this._noOverride('report')\n await this.emit('reportStart', { inPayloads, module: this })\n const payloads = await this.reportHandler(inPayloads)\n this.logger?.debug(`report:payloads: ${JSON.stringify(payloads, null, 2)}`)\n const outPayloads = payloads.filter(notBoundWitness)\n const boundwitnesses = payloads.filter(isBoundWitness)\n const boundwitness = boundwitnesses.find((bw) => bw.addresses.includes(this.address))\n await this.emit('reportEnd', { boundwitness, inPayloads, module: this, outPayloads })\n return payloads\n }\n\n async witnesses() {\n this.logger?.debug(`witnesses:config:witnesses: ${this.config?.witnesses?.length}`)\n const namesOrAddresses = this.config?.witnesses\n ? Array.isArray(this.config.witnesses)\n ? this.config?.witnesses\n : [this.config.witnesses]\n : undefined\n this.logger?.debug(`witnesses:namesOrAddresses: ${namesOrAddresses?.length}`)\n const result = namesOrAddresses\n ? [\n ...(await this.resolve<WitnessInstance>({ address: namesOrAddresses }, { identity: isWitnessInstance })),\n ...(await this.resolve<WitnessInstance>({ name: namesOrAddresses }, { identity: isWitnessInstance })),\n ]\n : await this.resolve<WitnessInstance>(undefined, { identity: isWitnessInstance })\n\n if (namesOrAddresses && namesOrAddresses.length !== result.length) {\n this.logger?.warn(`Not all witnesses found [Requested: ${namesOrAddresses.length}, Found: ${result.length}]`)\n }\n result.map((item) => {\n this.logger?.debug(`witnesses:result: ${item.config.schema}`)\n })\n\n return result\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(\n query: T,\n payloads?: Payload[],\n queryConfig?: TConfig,\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQueryBase>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n assertEx(this.queryable(query, payloads, queryConfig))\n const resultPayloads: Payload[] = []\n switch (queryPayload.schema) {\n case SentinelReportQuerySchema: {\n resultPayloads.push(...(await this.report(payloads)))\n break\n }\n default: {\n return super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],"mappings":"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","names":["assertEx","SentinelReportQuerySchema","_a","SentinelReportQuerySchema","assertEx"]}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/SentinelIntervalAutomationWrapper.ts
21
- var SentinelIntervalAutomationWrapper_exports = {};
22
- __export(SentinelIntervalAutomationWrapper_exports, {
23
- SentinelIntervalAutomationWrapper: () => SentinelIntervalAutomationWrapper
24
- });
25
- module.exports = __toCommonJS(SentinelIntervalAutomationWrapper_exports);
26
- var import_payload_wrapper = require("@xyo-network/payload-wrapper");
27
- var SentinelIntervalAutomationWrapper = class extends import_payload_wrapper.PayloadWrapper {
28
- constructor(payload) {
29
- super(payload);
30
- }
31
- get frequencyMillis() {
32
- const frequency = this.payload().frequency;
33
- if (frequency === void 0)
34
- return Infinity;
35
- switch (this.payload().frequencyUnits ?? "hour") {
36
- case "second":
37
- return frequency * 1e3;
38
- case "minute":
39
- return frequency * 60 * 1e3;
40
- case "hour":
41
- return frequency * 60 * 60 * 1e3;
42
- case "day":
43
- return frequency * 24 * 60 * 60 * 1e3;
44
- }
45
- }
46
- get remaining() {
47
- return this.payload().remaining ?? Infinity;
48
- }
49
- next() {
50
- this.payload().start = this.payload().start + this.frequencyMillis;
51
- this.consumeRemaining();
52
- this.checkEnd();
53
- return this;
54
- }
55
- checkEnd() {
56
- if (this.payload().start > (this.payload().end ?? Infinity)) {
57
- this.payload().start = Infinity;
58
- }
59
- }
60
- consumeRemaining(count = 1) {
61
- const remaining = this.remaining - count;
62
- this.payload().remaining = remaining;
63
- if (remaining <= 0) {
64
- this.payload().start = Infinity;
65
- }
66
- }
67
- };
68
- // Annotate the CommonJS export names for ESM import in node:
69
- 0 && (module.exports = {
70
- SentinelIntervalAutomationWrapper
71
- });
72
- //# sourceMappingURL=SentinelIntervalAutomationWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/SentinelIntervalAutomationWrapper.ts"],"sourcesContent":["import { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { SentinelIntervalAutomationPayload } from './Automation'\n\nexport class SentinelIntervalAutomationWrapper<\n T extends SentinelIntervalAutomationPayload = SentinelIntervalAutomationPayload,\n> extends PayloadWrapper<T> {\n constructor(payload: T) {\n super(payload)\n }\n\n protected get frequencyMillis() {\n const frequency = this.payload().frequency\n if (frequency === undefined) return Infinity\n switch (this.payload().frequencyUnits ?? 'hour') {\n case 'second':\n return frequency * 1000\n case 'minute':\n return frequency * 60 * 1000\n case 'hour':\n return frequency * 60 * 60 * 1000\n case 'day':\n return frequency * 24 * 60 * 60 * 1000\n }\n }\n\n protected get remaining() {\n //if remaining is not defined, we assume Infinity\n return this.payload().remaining ?? Infinity\n }\n\n next() {\n this.payload().start = this.payload().start + this.frequencyMillis\n this.consumeRemaining()\n this.checkEnd()\n return this\n }\n\n protected checkEnd() {\n if (this.payload().start > (this.payload().end ?? Infinity)) {\n this.payload().start = Infinity\n }\n }\n\n protected consumeRemaining(count = 1) {\n const remaining = this.remaining - count\n this.payload().remaining = remaining\n\n if (remaining <= 0) {\n this.payload().start = Infinity\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAA+B;AAIxB,IAAM,oCAAN,cAEG,sCAAkB;AAAA,EAC1B,YAAY,SAAY;AACtB,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,IAAc,kBAAkB;AAC9B,UAAM,YAAY,KAAK,QAAQ,EAAE;AACjC,QAAI,cAAc;AAAW,aAAO;AACpC,YAAQ,KAAK,QAAQ,EAAE,kBAAkB,QAAQ;AAAA,MAC/C,KAAK;AACH,eAAO,YAAY;AAAA,MACrB,KAAK;AACH,eAAO,YAAY,KAAK;AAAA,MAC1B,KAAK;AACH,eAAO,YAAY,KAAK,KAAK;AAAA,MAC/B,KAAK;AACH,eAAO,YAAY,KAAK,KAAK,KAAK;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,IAAc,YAAY;AAExB,WAAO,KAAK,QAAQ,EAAE,aAAa;AAAA,EACrC;AAAA,EAEA,OAAO;AACL,SAAK,QAAQ,EAAE,QAAQ,KAAK,QAAQ,EAAE,QAAQ,KAAK;AACnD,SAAK,iBAAiB;AACtB,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEU,WAAW;AACnB,QAAI,KAAK,QAAQ,EAAE,SAAS,KAAK,QAAQ,EAAE,OAAO,WAAW;AAC3D,WAAK,QAAQ,EAAE,QAAQ;AAAA,IACzB;AAAA,EACF;AAAA,EAEU,iBAAiB,QAAQ,GAAG;AACpC,UAAM,YAAY,KAAK,YAAY;AACnC,SAAK,QAAQ,EAAE,YAAY;AAE3B,QAAI,aAAa,GAAG;AAClB,WAAK,QAAQ,EAAE,QAAQ;AAAA,IACzB;AAAA,EACF;AACF;","names":[]}
@@ -1,47 +0,0 @@
1
- // src/SentinelIntervalAutomationWrapper.ts
2
- import { PayloadWrapper } from "@xyo-network/payload-wrapper";
3
- var SentinelIntervalAutomationWrapper = class extends PayloadWrapper {
4
- constructor(payload) {
5
- super(payload);
6
- }
7
- get frequencyMillis() {
8
- const frequency = this.payload().frequency;
9
- if (frequency === void 0)
10
- return Infinity;
11
- switch (this.payload().frequencyUnits ?? "hour") {
12
- case "second":
13
- return frequency * 1e3;
14
- case "minute":
15
- return frequency * 60 * 1e3;
16
- case "hour":
17
- return frequency * 60 * 60 * 1e3;
18
- case "day":
19
- return frequency * 24 * 60 * 60 * 1e3;
20
- }
21
- }
22
- get remaining() {
23
- return this.payload().remaining ?? Infinity;
24
- }
25
- next() {
26
- this.payload().start = this.payload().start + this.frequencyMillis;
27
- this.consumeRemaining();
28
- this.checkEnd();
29
- return this;
30
- }
31
- checkEnd() {
32
- if (this.payload().start > (this.payload().end ?? Infinity)) {
33
- this.payload().start = Infinity;
34
- }
35
- }
36
- consumeRemaining(count = 1) {
37
- const remaining = this.remaining - count;
38
- this.payload().remaining = remaining;
39
- if (remaining <= 0) {
40
- this.payload().start = Infinity;
41
- }
42
- }
43
- };
44
- export {
45
- SentinelIntervalAutomationWrapper
46
- };
47
- //# sourceMappingURL=SentinelIntervalAutomationWrapper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/SentinelIntervalAutomationWrapper.ts"],"sourcesContent":["import { PayloadWrapper } from '@xyo-network/payload-wrapper'\n\nimport { SentinelIntervalAutomationPayload } from './Automation'\n\nexport class SentinelIntervalAutomationWrapper<\n T extends SentinelIntervalAutomationPayload = SentinelIntervalAutomationPayload,\n> extends PayloadWrapper<T> {\n constructor(payload: T) {\n super(payload)\n }\n\n protected get frequencyMillis() {\n const frequency = this.payload().frequency\n if (frequency === undefined) return Infinity\n switch (this.payload().frequencyUnits ?? 'hour') {\n case 'second':\n return frequency * 1000\n case 'minute':\n return frequency * 60 * 1000\n case 'hour':\n return frequency * 60 * 60 * 1000\n case 'day':\n return frequency * 24 * 60 * 60 * 1000\n }\n }\n\n protected get remaining() {\n //if remaining is not defined, we assume Infinity\n return this.payload().remaining ?? Infinity\n }\n\n next() {\n this.payload().start = this.payload().start + this.frequencyMillis\n this.consumeRemaining()\n this.checkEnd()\n return this\n }\n\n protected checkEnd() {\n if (this.payload().start > (this.payload().end ?? Infinity)) {\n this.payload().start = Infinity\n }\n }\n\n protected consumeRemaining(count = 1) {\n const remaining = this.remaining - count\n this.payload().remaining = remaining\n\n if (remaining <= 0) {\n this.payload().start = Infinity\n }\n }\n}\n"],"mappings":";AAAA,SAAS,sBAAsB;AAIxB,IAAM,oCAAN,cAEG,eAAkB;AAAA,EAC1B,YAAY,SAAY;AACtB,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,IAAc,kBAAkB;AAC9B,UAAM,YAAY,KAAK,QAAQ,EAAE;AACjC,QAAI,cAAc;AAAW,aAAO;AACpC,YAAQ,KAAK,QAAQ,EAAE,kBAAkB,QAAQ;AAAA,MAC/C,KAAK;AACH,eAAO,YAAY;AAAA,MACrB,KAAK;AACH,eAAO,YAAY,KAAK;AAAA,MAC1B,KAAK;AACH,eAAO,YAAY,KAAK,KAAK;AAAA,MAC/B,KAAK;AACH,eAAO,YAAY,KAAK,KAAK,KAAK;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,IAAc,YAAY;AAExB,WAAO,KAAK,QAAQ,EAAE,aAAa;AAAA,EACrC;AAAA,EAEA,OAAO;AACL,SAAK,QAAQ,EAAE,QAAQ,KAAK,QAAQ,EAAE,QAAQ,KAAK;AACnD,SAAK,iBAAiB;AACtB,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEU,WAAW;AACnB,QAAI,KAAK,QAAQ,EAAE,SAAS,KAAK,QAAQ,EAAE,OAAO,WAAW;AAC3D,WAAK,QAAQ,EAAE,QAAQ;AAAA,IACzB;AAAA,EACF;AAAA,EAEU,iBAAiB,QAAQ,GAAG;AACpC,UAAM,YAAY,KAAK,YAAY;AACnC,SAAK,QAAQ,EAAE,YAAY;AAE3B,QAAI,aAAa,GAAG;AAClB,WAAK,QAAQ,EAAE,QAAQ;AAAA,IACzB;AAAA,EACF;AACF;","names":[]}
@@ -1,162 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/SentinelRunner.ts
21
- var SentinelRunner_exports = {};
22
- __export(SentinelRunner_exports, {
23
- SentinelRunner: () => SentinelRunner
24
- });
25
- module.exports = __toCommonJS(SentinelRunner_exports);
26
- var import_assert = require("@xylabs/assert");
27
- var import_payload_wrapper2 = require("@xyo-network/payload-wrapper");
28
-
29
- // src/SentinelIntervalAutomationWrapper.ts
30
- var import_payload_wrapper = require("@xyo-network/payload-wrapper");
31
- var SentinelIntervalAutomationWrapper = class extends import_payload_wrapper.PayloadWrapper {
32
- constructor(payload) {
33
- super(payload);
34
- }
35
- get frequencyMillis() {
36
- const frequency = this.payload().frequency;
37
- if (frequency === void 0)
38
- return Infinity;
39
- switch (this.payload().frequencyUnits ?? "hour") {
40
- case "second":
41
- return frequency * 1e3;
42
- case "minute":
43
- return frequency * 60 * 1e3;
44
- case "hour":
45
- return frequency * 60 * 60 * 1e3;
46
- case "day":
47
- return frequency * 24 * 60 * 60 * 1e3;
48
- }
49
- }
50
- get remaining() {
51
- return this.payload().remaining ?? Infinity;
52
- }
53
- next() {
54
- this.payload().start = this.payload().start + this.frequencyMillis;
55
- this.consumeRemaining();
56
- this.checkEnd();
57
- return this;
58
- }
59
- checkEnd() {
60
- if (this.payload().start > (this.payload().end ?? Infinity)) {
61
- this.payload().start = Infinity;
62
- }
63
- }
64
- consumeRemaining(count = 1) {
65
- const remaining = this.remaining - count;
66
- this.payload().remaining = remaining;
67
- if (remaining <= 0) {
68
- this.payload().start = Infinity;
69
- }
70
- }
71
- };
72
-
73
- // src/SentinelRunner.ts
74
- var SentinelRunner = class {
75
- _automations = {};
76
- onTriggerResult;
77
- sentinel;
78
- timeoutId;
79
- constructor(sentinel, automations, onTriggerResult) {
80
- this.sentinel = sentinel;
81
- this.onTriggerResult = onTriggerResult;
82
- automations == null ? void 0 : automations.forEach((automation) => this.add(automation));
83
- }
84
- get automations() {
85
- return this._automations;
86
- }
87
- get next() {
88
- return Object.values(this._automations).reduce((previous, current) => {
89
- if (current.type === "interval") {
90
- return current.start < ((previous == null ? void 0 : previous.start) ?? Infinity) ? current : previous;
91
- }
92
- }, void 0);
93
- }
94
- async add(automation, restart = true) {
95
- const hash = await import_payload_wrapper2.PayloadWrapper.hashAsync(automation);
96
- this._automations[hash] = automation;
97
- if (restart)
98
- await this.restart();
99
- return hash;
100
- }
101
- find(hash) {
102
- Object.entries(this._automations).find(([key]) => key === hash);
103
- }
104
- async remove(hash, restart = true) {
105
- delete this._automations[hash];
106
- if (restart)
107
- await this.restart();
108
- }
109
- removeAll() {
110
- this.stop();
111
- this._automations = {};
112
- }
113
- async restart() {
114
- this.stop();
115
- await this.start();
116
- }
117
- async start() {
118
- (0, import_assert.assertEx)(this.timeoutId === void 0, "Already started");
119
- const automation = this.next;
120
- if (automation) {
121
- const delay = automation.start - Date.now();
122
- if (delay < 0) {
123
- await this.trigger(automation);
124
- } else {
125
- this.timeoutId = setTimeout(
126
- async () => {
127
- this.timeoutId = void 0;
128
- await this.start();
129
- },
130
- delay > 0 ? delay : 0
131
- );
132
- }
133
- }
134
- }
135
- stop() {
136
- if (this.timeoutId) {
137
- clearTimeout(this.timeoutId);
138
- this.timeoutId = void 0;
139
- }
140
- }
141
- async update(hash, automation, restart = true) {
142
- await this.remove(hash, false);
143
- await this.add(automation, false);
144
- if (restart)
145
- await this.restart();
146
- }
147
- async trigger(automation) {
148
- var _a;
149
- const wrapper = new SentinelIntervalAutomationWrapper(automation);
150
- await this.remove(await wrapper.hashAsync(), false);
151
- wrapper.next();
152
- await this.add(wrapper.payload(), false);
153
- const triggerResult = await this.sentinel.report();
154
- (_a = this.onTriggerResult) == null ? void 0 : _a.call(this, triggerResult);
155
- await this.start();
156
- }
157
- };
158
- // Annotate the CommonJS export names for ESM import in node:
159
- 0 && (module.exports = {
160
- SentinelRunner
161
- });
162
- //# sourceMappingURL=SentinelRunner.js.map