@xyo-network/sentinel 2.67.0 → 2.69.0-rc.1

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 (141) hide show
  1. package/dist/cjs/AbstractSentinel.js +23 -34
  2. package/dist/cjs/AbstractSentinel.js.map +1 -1
  3. package/dist/cjs/MemorySentinel.js +4 -45
  4. package/dist/cjs/MemorySentinel.js.map +1 -1
  5. package/dist/cjs/SentinelRunner.js.map +1 -1
  6. package/dist/cjs/Wrapper.js +3 -3
  7. package/dist/cjs/Wrapper.js.map +1 -1
  8. package/dist/cjs/index.js +1 -3
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/model/Config.js.map +1 -0
  11. package/dist/cjs/{SentinelModel.js → model/EventData.js} +1 -1
  12. package/dist/cjs/model/EventData.js.map +1 -0
  13. package/dist/cjs/model/Events/ReportEnd.js +3 -0
  14. package/dist/cjs/model/Events/ReportEnd.js.map +1 -0
  15. package/dist/cjs/model/Events/ReportStart.js +3 -0
  16. package/dist/cjs/model/Events/ReportStart.js.map +1 -0
  17. package/dist/cjs/model/Events/index.js +6 -0
  18. package/dist/cjs/model/Events/index.js.map +1 -0
  19. package/dist/cjs/model/Instance.js +3 -0
  20. package/dist/cjs/model/Instance.js.map +1 -0
  21. package/dist/cjs/model/Module.js +3 -0
  22. package/dist/cjs/model/Module.js.map +1 -0
  23. package/dist/cjs/model/Params.js +3 -0
  24. package/dist/cjs/model/Params.js.map +1 -0
  25. package/dist/cjs/model/Queries/Report.js.map +1 -0
  26. package/dist/cjs/model/Queries/index.js.map +1 -0
  27. package/dist/cjs/model/Sentinel.js +3 -0
  28. package/dist/cjs/model/Sentinel.js.map +1 -0
  29. package/dist/cjs/model/index.js +12 -0
  30. package/dist/cjs/model/index.js.map +1 -0
  31. package/dist/cjs/typeChecks.js +2 -2
  32. package/dist/cjs/typeChecks.js.map +1 -1
  33. package/dist/esm/AbstractSentinel.js +19 -31
  34. package/dist/esm/AbstractSentinel.js.map +1 -1
  35. package/dist/esm/MemorySentinel.js +4 -39
  36. package/dist/esm/MemorySentinel.js.map +1 -1
  37. package/dist/esm/SentinelRunner.js.map +1 -1
  38. package/dist/esm/Wrapper.js +1 -1
  39. package/dist/esm/Wrapper.js.map +1 -1
  40. package/dist/esm/index.js +1 -3
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/model/Config.js.map +1 -0
  43. package/dist/esm/model/EventData.js +2 -0
  44. package/dist/esm/model/EventData.js.map +1 -0
  45. package/dist/esm/model/Events/ReportEnd.js +2 -0
  46. package/dist/esm/model/Events/ReportEnd.js.map +1 -0
  47. package/dist/esm/model/Events/ReportStart.js +2 -0
  48. package/dist/esm/model/Events/ReportStart.js.map +1 -0
  49. package/dist/esm/model/Events/index.js +3 -0
  50. package/dist/esm/model/Events/index.js.map +1 -0
  51. package/dist/esm/model/Instance.js +2 -0
  52. package/dist/esm/model/Instance.js.map +1 -0
  53. package/dist/esm/model/Module.js +2 -0
  54. package/dist/esm/model/Module.js.map +1 -0
  55. package/dist/esm/model/Params.js +2 -0
  56. package/dist/esm/model/Params.js.map +1 -0
  57. package/dist/esm/model/Queries/Report.js.map +1 -0
  58. package/dist/esm/model/Queries/index.js.map +1 -0
  59. package/dist/esm/model/Sentinel.js +2 -0
  60. package/dist/esm/model/Sentinel.js.map +1 -0
  61. package/dist/esm/model/index.js +9 -0
  62. package/dist/esm/model/index.js.map +1 -0
  63. package/dist/esm/typeChecks.js +1 -1
  64. package/dist/esm/typeChecks.js.map +1 -1
  65. package/dist/types/AbstractSentinel.d.ts +6 -7
  66. package/dist/types/AbstractSentinel.d.ts.map +1 -1
  67. package/dist/types/MemorySentinel.d.ts +4 -7
  68. package/dist/types/MemorySentinel.d.ts.map +1 -1
  69. package/dist/types/SentinelRunner.d.ts +1 -1
  70. package/dist/types/SentinelRunner.d.ts.map +1 -1
  71. package/dist/types/Wrapper.d.ts +1 -1
  72. package/dist/types/Wrapper.d.ts.map +1 -1
  73. package/dist/types/index.d.ts +1 -3
  74. package/dist/types/index.d.ts.map +1 -1
  75. package/dist/types/model/Config.d.ts.map +1 -0
  76. package/dist/types/model/EventData.d.ts +5 -0
  77. package/dist/types/model/EventData.d.ts.map +1 -0
  78. package/dist/types/model/Events/ReportEnd.d.ts +13 -0
  79. package/dist/types/model/Events/ReportEnd.d.ts.map +1 -0
  80. package/dist/types/model/Events/ReportStart.d.ts +10 -0
  81. package/dist/types/model/Events/ReportStart.d.ts.map +1 -0
  82. package/dist/types/model/Events/index.d.ts +3 -0
  83. package/dist/types/model/Events/index.d.ts.map +1 -0
  84. package/dist/types/model/Instance.d.ts +8 -0
  85. package/dist/types/model/Instance.d.ts.map +1 -0
  86. package/dist/types/model/Module.d.ts +6 -0
  87. package/dist/types/model/Module.d.ts.map +1 -0
  88. package/dist/types/model/Params.d.ts +5 -0
  89. package/dist/types/model/Params.d.ts.map +1 -0
  90. package/dist/types/model/Queries/Report.d.ts.map +1 -0
  91. package/dist/types/model/Queries/index.d.ts.map +1 -0
  92. package/dist/types/model/Sentinel.d.ts +6 -0
  93. package/dist/types/model/Sentinel.d.ts.map +1 -0
  94. package/dist/types/model/index.d.ts +9 -0
  95. package/dist/types/model/index.d.ts.map +1 -0
  96. package/dist/types/typeChecks.d.ts +1 -1
  97. package/dist/types/typeChecks.d.ts.map +1 -1
  98. package/package.json +14 -14
  99. package/src/AbstractSentinel.ts +34 -44
  100. package/src/MemorySentinel.ts +9 -53
  101. package/src/SentinelRunner.ts +1 -1
  102. package/src/Wrapper.ts +1 -2
  103. package/src/index.ts +1 -3
  104. package/src/model/EventData.ts +5 -0
  105. package/src/model/Events/ReportEnd.ts +17 -0
  106. package/src/model/Events/ReportStart.ts +14 -0
  107. package/src/model/Events/index.ts +2 -0
  108. package/src/model/Instance.ts +13 -0
  109. package/src/model/Module.ts +11 -0
  110. package/src/model/Params.ts +9 -0
  111. package/src/model/Sentinel.ts +6 -0
  112. package/src/model/index.ts +8 -0
  113. package/src/typeChecks.ts +1 -2
  114. package/dist/cjs/Config.js.map +0 -1
  115. package/dist/cjs/Queries/Report.js.map +0 -1
  116. package/dist/cjs/Queries/index.js.map +0 -1
  117. package/dist/cjs/SentinelModel.js.map +0 -1
  118. package/dist/docs.json +0 -76248
  119. package/dist/esm/Config.js.map +0 -1
  120. package/dist/esm/Queries/Report.js.map +0 -1
  121. package/dist/esm/Queries/index.js.map +0 -1
  122. package/dist/esm/SentinelModel.js +0 -2
  123. package/dist/esm/SentinelModel.js.map +0 -1
  124. package/dist/types/Config.d.ts.map +0 -1
  125. package/dist/types/Queries/Report.d.ts.map +0 -1
  126. package/dist/types/Queries/index.d.ts.map +0 -1
  127. package/dist/types/SentinelModel.d.ts +0 -30
  128. package/dist/types/SentinelModel.d.ts.map +0 -1
  129. package/src/SentinelModel.ts +0 -53
  130. /package/dist/cjs/{Config.js → model/Config.js} +0 -0
  131. /package/dist/cjs/{Queries → model/Queries}/Report.js +0 -0
  132. /package/dist/cjs/{Queries → model/Queries}/index.js +0 -0
  133. /package/dist/esm/{Config.js → model/Config.js} +0 -0
  134. /package/dist/esm/{Queries → model/Queries}/Report.js +0 -0
  135. /package/dist/esm/{Queries → model/Queries}/index.js +0 -0
  136. /package/dist/types/{Config.d.ts → model/Config.d.ts} +0 -0
  137. /package/dist/types/{Queries → model/Queries}/Report.d.ts +0 -0
  138. /package/dist/types/{Queries → model/Queries}/index.d.ts +0 -0
  139. /package/src/{Config.ts → model/Config.ts} +0 -0
  140. /package/src/{Queries → model/Queries}/Report.ts +0 -0
  141. /package/src/{Queries → model/Queries}/index.ts +0 -0
@@ -1,34 +1,26 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { fulfilled, rejected } from '@xylabs/promise'
3
- import { Account } from '@xyo-network/account'
4
- import { QueryBoundWitness, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-builder'
5
- import { handleError, handleErrorAsync } from '@xyo-network/error'
6
- import { AnyConfigSchema, ModuleConfig, ModuleErrorBuilder, ModuleQueryResult } from '@xyo-network/module'
7
- import { ModuleError, Payload } from '@xyo-network/payload-model'
3
+ import { handleError } from '@xyo-network/error'
4
+ import { AnyConfigSchema } from '@xyo-network/module'
5
+ import { Payload } from '@xyo-network/payload-model'
8
6
  import { WitnessInstance } from '@xyo-network/witness'
9
7
 
10
8
  import { AbstractSentinel } from './AbstractSentinel'
11
- import { SentinelConfig, SentinelConfigSchema } from './Config'
12
- import { SentinelQuery, SentinelReportQuerySchema } from './Queries'
13
- import { SentinelModule, SentinelModuleEventData, SentinelParams } from './SentinelModel'
9
+ import { SentinelConfig, SentinelConfigSchema, SentinelInstance, SentinelModuleEventData, SentinelParams, SentinelReportQuerySchema } from './model'
14
10
 
15
11
  export type MemorySentinelParams<TConfig extends AnyConfigSchema<SentinelConfig> = AnyConfigSchema<SentinelConfig>> = SentinelParams<
16
12
  AnyConfigSchema<TConfig>
17
13
  >
18
14
 
19
15
  export class MemorySentinel<
20
- TParams extends MemorySentinelParams = MemorySentinelParams,
21
- TEventData extends SentinelModuleEventData = SentinelModuleEventData,
22
- >
23
- extends AbstractSentinel<TParams, TEventData>
24
- implements SentinelModule<TParams, TEventData>
25
- {
16
+ TParams extends MemorySentinelParams = MemorySentinelParams,
17
+ TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,
18
+ > extends AbstractSentinel<TParams, TEventData> {
26
19
  static override configSchemas = [SentinelConfigSchema]
27
20
 
28
- async report(payloads: Payload[] = []): Promise<Payload[]> {
21
+ async reportHandler(payloads: Payload[] = []): Promise<Payload[]> {
29
22
  await this.started('throw')
30
23
  const errors: Error[] = []
31
- await this.emit('reportStart', { inPayloads: payloads, module: this as SentinelModule })
32
24
  const allWitnesses = [...(await this.getWitnesses())]
33
25
  const resultPayloads: Payload[] = []
34
26
 
@@ -43,47 +35,11 @@ export class MemorySentinel<
43
35
  })
44
36
  }
45
37
 
46
- const [[boundWitness]] = await this.bindQueryResult({ schema: SentinelReportQuerySchema }, resultPayloads)
38
+ const [boundWitness] = await this.bindQueryResult({ schema: SentinelReportQuerySchema }, resultPayloads)
47
39
  this.history.push(assertEx(boundWitness))
48
- await this.emit('reportEnd', { boundWitness, errors, inPayloads: payloads, module: this as SentinelModule, outPayloads: resultPayloads })
49
40
  return [boundWitness, ...resultPayloads]
50
41
  }
51
42
 
52
- protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness, TConfig extends ModuleConfig = ModuleConfig>(
53
- query: T,
54
- payloads?: Payload[],
55
- queryConfig?: TConfig,
56
- ): Promise<ModuleQueryResult> {
57
- const wrapper = QueryBoundWitnessWrapper.parseQuery<SentinelQuery>(query, payloads)
58
- const queryPayload = await wrapper.getQuery()
59
- assertEx(this.queryable(query, payloads, queryConfig))
60
- const queryAccount = Account.randomSync()
61
- const resultPayloads: Payload[] = []
62
- const errorPayloads: ModuleError[] = []
63
- try {
64
- switch (queryPayload.schema) {
65
- case SentinelReportQuerySchema: {
66
- resultPayloads.push(...(await this.report(payloads)))
67
- break
68
- }
69
- default:
70
- return super.queryHandler(query, payloads)
71
- }
72
- } catch (ex) {
73
- await handleErrorAsync(ex, async (error) => {
74
- errorPayloads.push(
75
- new ModuleErrorBuilder()
76
- .sources([await wrapper.hashAsync()])
77
- .name(this.config.name ?? '<Unknown>')
78
- .query(query.schema)
79
- .message(error.message)
80
- .build(),
81
- )
82
- })
83
- }
84
- return (await this.bindQueryResult(queryPayload, resultPayloads, [queryAccount], errorPayloads))[0]
85
- }
86
-
87
43
  private async generateResults(witnesses: WitnessInstance[]): Promise<[Payload[], Error[]]> {
88
44
  const results = await Promise.allSettled(witnesses?.map((witness) => witness.observe()))
89
45
  const payloads = results
@@ -3,8 +3,8 @@ import { Payload } from '@xyo-network/payload-model'
3
3
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
4
4
 
5
5
  import { SentinelAutomationPayload, SentinelIntervalAutomationPayload } from './Automation'
6
+ import { SentinelInstance } from './model'
6
7
  import { SentinelIntervalAutomationWrapper } from './SentinelIntervalAutomationWrapper'
7
- import { SentinelInstance } from './SentinelModel'
8
8
 
9
9
  export type OnSentinelRunnerTriggerResult = (result: Payload[]) => void
10
10
 
package/src/Wrapper.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import { constructableModuleWrapper, ModuleWrapper } from '@xyo-network/module'
2
2
  import { Payload } from '@xyo-network/payload-model'
3
3
 
4
- import { SentinelReportQuery, SentinelReportQuerySchema } from './Queries'
5
- import { SentinelInstance, SentinelModule } from './SentinelModel'
4
+ import { SentinelInstance, SentinelModule, SentinelReportQuery, SentinelReportQuerySchema } from './model'
6
5
  import { isSentinelInstance, isSentinelModule } from './typeChecks'
7
6
 
8
7
  constructableModuleWrapper()
package/src/index.ts CHANGED
@@ -1,10 +1,8 @@
1
1
  export * from './AbstractSentinel'
2
2
  export * from './Automation'
3
- export * from './Config'
4
3
  export * from './MemorySentinel'
5
- export * from './Queries'
4
+ export * from './model'
6
5
  export * from './SentinelIntervalAutomationWrapper'
7
- export * from './SentinelModel'
8
6
  export * from './SentinelRunner'
9
7
  export * from './typeChecks'
10
8
  export * from './Wrapper'
@@ -0,0 +1,5 @@
1
+ import { Module, ModuleEventData } from '@xyo-network/module-model'
2
+
3
+ import { ReportEndEventData, ReportStartEventData } from './Events'
4
+
5
+ export interface SentinelModuleEventData<T extends Module = Module> extends ReportEndEventData<T>, ReportStartEventData<T>, ModuleEventData<T> {}
@@ -0,0 +1,17 @@
1
+ import { BoundWitness } from '@xyo-network/boundwitness-model'
2
+ import { EventData } from '@xyo-network/module'
3
+ import { Module, ModuleEventArgs } from '@xyo-network/module-model'
4
+ import { Payload } from '@xyo-network/payload-model'
5
+
6
+ export type ReportEndEventArgs<T extends Module = Module> = ModuleEventArgs<
7
+ T,
8
+ {
9
+ boundwitness?: BoundWitness
10
+ inPayloads?: Payload[]
11
+ outPayloads?: Payload[]
12
+ }
13
+ >
14
+
15
+ export interface ReportEndEventData<T extends Module = Module> extends EventData {
16
+ reportEnd: ReportEndEventArgs<T>
17
+ }
@@ -0,0 +1,14 @@
1
+ import { EventData } from '@xyo-network/module'
2
+ import { Module, ModuleEventArgs } from '@xyo-network/module-model'
3
+ import { Payload } from '@xyo-network/payload-model'
4
+
5
+ export type ReportStartEventArgs<T extends Module = Module> = ModuleEventArgs<
6
+ T,
7
+ {
8
+ inPayloads?: Payload[]
9
+ }
10
+ >
11
+
12
+ export interface ReportStartEventData<T extends Module = Module> extends EventData {
13
+ reportStart: ReportStartEventArgs<T>
14
+ }
@@ -0,0 +1,2 @@
1
+ export * from './ReportEnd'
2
+ export * from './ReportStart'
@@ -0,0 +1,13 @@
1
+ import { ModuleInstance } from '@xyo-network/module-model'
2
+
3
+ import { SentinelModuleEventData } from './EventData'
4
+ import { CustomSentinelModule, SentinelModule } from './Module'
5
+ import { SentinelParams } from './Params'
6
+ import { Sentinel } from './Sentinel'
7
+
8
+ export type SentinelInstance<TParams extends SentinelParams = SentinelParams> = SentinelModule<TParams> & Sentinel & ModuleInstance
9
+
10
+ export type CustomSentinelInstance<
11
+ TParams extends SentinelParams = SentinelParams,
12
+ TEvents extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,
13
+ > = CustomSentinelModule<TParams, TEvents> & Sentinel & ModuleInstance<TParams, TEvents>
@@ -0,0 +1,11 @@
1
+ import { Module } from '@xyo-network/module-model'
2
+
3
+ import { SentinelModuleEventData } from './EventData'
4
+ import { SentinelParams } from './Params'
5
+
6
+ export type SentinelModule<TParams extends SentinelParams = SentinelParams> = Module<TParams, SentinelModuleEventData<SentinelModule>>
7
+
8
+ export type CustomSentinelModule<
9
+ TParams extends SentinelParams = SentinelParams,
10
+ TEvents extends SentinelModuleEventData<SentinelModule<TParams>> = SentinelModuleEventData<SentinelModule<TParams>>,
11
+ > = Module<TParams, TEvents>
@@ -0,0 +1,9 @@
1
+ import { AnyObject } from '@xyo-network/core'
2
+ import { AnyConfigSchema, ModuleParams } from '@xyo-network/module-model'
3
+
4
+ import { SentinelConfig } from './Config'
5
+
6
+ export type SentinelParams<
7
+ TConfig extends AnyConfigSchema<SentinelConfig> = AnyConfigSchema<SentinelConfig>,
8
+ TAdditionalParams extends AnyObject | undefined = undefined,
9
+ > = ModuleParams<TConfig, TAdditionalParams>
@@ -0,0 +1,6 @@
1
+ import { Payload } from '@xyo-network/payload-model'
2
+ import { Promisable } from '@xyo-network/promise'
3
+
4
+ export interface Sentinel {
5
+ report: (payloads?: Payload[]) => Promisable<Payload[]>
6
+ }
@@ -0,0 +1,8 @@
1
+ export * from './Config'
2
+ export * from './EventData'
3
+ export * from './Events'
4
+ export * from './Instance'
5
+ export * from './Module'
6
+ export * from './Params'
7
+ export * from './Queries'
8
+ export * from './Sentinel'
package/src/typeChecks.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  import { IsInstanceFactory, IsModuleFactory, isModuleInstance, WithFactory } from '@xyo-network/module-model'
2
2
  import { AsObjectFactory } from '@xyo-network/object-identity'
3
3
 
4
- import { SentinelReportQuerySchema } from './Queries'
5
- import { SentinelInstance, SentinelModule } from './SentinelModel'
4
+ import { SentinelInstance, SentinelModule, SentinelReportQuerySchema } from './model'
6
5
 
7
6
  export const isSentinelInstance = new IsInstanceFactory<SentinelInstance>().create({ report: 'function' }, [isModuleInstance])
8
7
  export const isSentinelModule = new IsModuleFactory<SentinelModule>().create([SentinelReportQuerySchema])
@@ -1 +0,0 @@
1
- {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":";;;AAKa,QAAA,oBAAoB,GAAyB,6BAA6B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Report.js","sourceRoot":"","sources":["../../../src/Queries/Report.ts"],"names":[],"mappings":";;;AAGa,QAAA,yBAAyB,GAA8B,mCAAmC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Queries/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SentinelModel.js","sourceRoot":"","sources":["../../src/SentinelModel.ts"],"names":[],"mappings":""}