@xyo-network/sdk 7.4.1 → 8.0.0

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 (353) hide show
  1. package/dist/neutral/api-location-diviner.mjs +1 -1
  2. package/dist/neutral/api-location-diviner.mjs.map +2 -2
  3. package/dist/neutral/archivist-abstract.mjs +34 -28
  4. package/dist/neutral/archivist-abstract.mjs.map +2 -2
  5. package/dist/neutral/archivist-generic.mjs +5 -3
  6. package/dist/neutral/archivist-generic.mjs.map +2 -2
  7. package/dist/neutral/archivist-memory.mjs +6 -5
  8. package/dist/neutral/archivist-memory.mjs.map +2 -2
  9. package/dist/neutral/archivist-model.mjs +14 -7
  10. package/dist/neutral/archivist-model.mjs.map +2 -2
  11. package/dist/neutral/archivist-view.mjs +5 -3
  12. package/dist/neutral/archivist-view.mjs.map +2 -2
  13. package/dist/neutral/archivist-wrapper.mjs +22 -4
  14. package/dist/neutral/archivist-wrapper.mjs.map +2 -2
  15. package/dist/neutral/boundwitness-loader.mjs +13 -7
  16. package/dist/neutral/boundwitness-loader.mjs.map +2 -2
  17. package/dist/neutral/bridge-abstract.mjs +43 -29
  18. package/dist/neutral/bridge-abstract.mjs.map +2 -2
  19. package/dist/neutral/bridge-http.mjs +23 -20
  20. package/dist/neutral/bridge-http.mjs.map +2 -2
  21. package/dist/neutral/bridge-model.mjs +4 -2
  22. package/dist/neutral/bridge-model.mjs.map +2 -2
  23. package/dist/neutral/bridge-wrapper.mjs +22 -5
  24. package/dist/neutral/bridge-wrapper.mjs.map +2 -2
  25. package/dist/neutral/bridge.mjs.map +2 -2
  26. package/dist/neutral/diviner-abstract.mjs +4 -3
  27. package/dist/neutral/diviner-abstract.mjs.map +2 -2
  28. package/dist/neutral/diviner-boundwitness.memory.mjs +4 -5
  29. package/dist/neutral/diviner-boundwitness.memory.mjs.map +2 -2
  30. package/dist/neutral/diviner-boundwitness.mjs +4 -5
  31. package/dist/neutral/diviner-boundwitness.mjs.map +2 -2
  32. package/dist/neutral/diviner-model.mjs +4 -2
  33. package/dist/neutral/diviner-model.mjs.map +2 -2
  34. package/dist/neutral/diviner-payload-generic.mjs +13 -16
  35. package/dist/neutral/diviner-payload-generic.mjs.map +2 -2
  36. package/dist/neutral/diviner-wrapper.mjs +22 -4
  37. package/dist/neutral/diviner-wrapper.mjs.map +2 -2
  38. package/dist/neutral/manifest-wrapper.mjs +4 -2
  39. package/dist/neutral/manifest-wrapper.mjs.map +2 -2
  40. package/dist/neutral/module-abstract.mjs +100 -106
  41. package/dist/neutral/module-abstract.mjs.map +3 -3
  42. package/dist/neutral/module-factory-locator.mjs +4 -2
  43. package/dist/neutral/module-factory-locator.mjs.map +2 -2
  44. package/dist/neutral/module-model.mjs +18 -1
  45. package/dist/neutral/module-model.mjs.map +2 -2
  46. package/dist/neutral/module-resolver.mjs +88 -81
  47. package/dist/neutral/module-resolver.mjs.map +3 -3
  48. package/dist/neutral/module-wrapper.mjs +18 -10
  49. package/dist/neutral/module-wrapper.mjs.map +2 -2
  50. package/dist/neutral/modules/api-location-diviner/LocationDiviner/LocationDivinerApi.d.ts +5 -3
  51. package/dist/neutral/modules/api-location-diviner/LocationDiviner/LocationDivinerApi.d.ts.map +1 -1
  52. package/dist/neutral/modules/api-location-diviner/LocationDiviner/Queries/LocationQueryCreationRequest.d.ts +7 -3
  53. package/dist/neutral/modules/api-location-diviner/LocationDiviner/Queries/LocationQueryCreationRequest.d.ts.map +1 -1
  54. package/dist/neutral/modules/api-location-diviner/RemoteDivinerConfig.d.ts +1 -2
  55. package/dist/neutral/modules/api-location-diviner/RemoteDivinerConfig.d.ts.map +1 -1
  56. package/dist/neutral/modules/archivist-abstract/AbstractArchivist.d.ts.map +1 -1
  57. package/dist/neutral/modules/archivist-abstract/payloadAdmission.d.ts.map +1 -1
  58. package/dist/neutral/modules/archivist-generic/Archivist.d.ts.map +1 -1
  59. package/dist/neutral/modules/archivist-memory/MemoryDriver.d.ts.map +1 -1
  60. package/dist/neutral/modules/archivist-model/lib/getBoundWitness.d.ts.map +1 -1
  61. package/dist/neutral/modules/archivist-model/lib/hydrateBoundWitness.d.ts.map +1 -1
  62. package/dist/neutral/modules/archivist-model/typeChecks.d.ts.map +1 -1
  63. package/dist/neutral/modules/archivist-view/ViewArchivist.d.ts.map +1 -1
  64. package/dist/neutral/modules/archivist-wrapper/ArchivistWrapper.d.ts.map +1 -1
  65. package/dist/neutral/modules/boundwitness-loader/Loader.d.ts.map +1 -1
  66. package/dist/neutral/modules/bridge/index.d.ts +3 -0
  67. package/dist/neutral/modules/bridge/index.d.ts.map +1 -1
  68. package/dist/neutral/modules/bridge/model.d.ts +1 -0
  69. package/dist/neutral/modules/bridge/model.d.ts.map +1 -1
  70. package/dist/neutral/modules/bridge/wrapper.d.ts +1 -0
  71. package/dist/neutral/modules/bridge/wrapper.d.ts.map +1 -1
  72. package/dist/neutral/modules/bridge-abstract/AbstractBridge.d.ts +1 -0
  73. package/dist/neutral/modules/bridge-abstract/AbstractBridge.d.ts.map +1 -1
  74. package/dist/neutral/modules/bridge-abstract/AbstractBridgeModuleResolver.d.ts +2 -0
  75. package/dist/neutral/modules/bridge-abstract/AbstractBridgeModuleResolver.d.ts.map +1 -1
  76. package/dist/neutral/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.d.ts +2 -0
  77. package/dist/neutral/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -1
  78. package/dist/neutral/modules/bridge-abstract/AbstractModuleProxy/ModuleProxyResolver.d.ts +2 -0
  79. package/dist/neutral/modules/bridge-abstract/AbstractModuleProxy/ModuleProxyResolver.d.ts.map +1 -1
  80. package/dist/neutral/modules/bridge-abstract/index.d.ts +4 -0
  81. package/dist/neutral/modules/bridge-abstract/index.d.ts.map +1 -1
  82. package/dist/neutral/modules/bridge-abstract/wrapModuleWithType.d.ts +1 -0
  83. package/dist/neutral/modules/bridge-abstract/wrapModuleWithType.d.ts.map +1 -1
  84. package/dist/neutral/modules/bridge-http/HttpBridge.d.ts +2 -0
  85. package/dist/neutral/modules/bridge-http/HttpBridge.d.ts.map +1 -1
  86. package/dist/neutral/modules/bridge-http/HttpBridgeConfig.d.ts +8 -0
  87. package/dist/neutral/modules/bridge-http/HttpBridgeConfig.d.ts.map +1 -1
  88. package/dist/neutral/modules/bridge-http/HttpBridgeModuleResolver.d.ts +4 -2
  89. package/dist/neutral/modules/bridge-http/HttpBridgeModuleResolver.d.ts.map +1 -1
  90. package/dist/neutral/modules/bridge-http/ModuleProxy/ModuleProxy.d.ts +3 -0
  91. package/dist/neutral/modules/bridge-http/ModuleProxy/ModuleProxy.d.ts.map +1 -1
  92. package/dist/neutral/modules/bridge-http/ModuleProxy/index.d.ts +1 -0
  93. package/dist/neutral/modules/bridge-http/ModuleProxy/index.d.ts.map +1 -1
  94. package/dist/neutral/modules/bridge-http/index.d.ts +2 -0
  95. package/dist/neutral/modules/bridge-http/index.d.ts.map +1 -1
  96. package/dist/neutral/modules/bridge-model/Config.d.ts +10 -0
  97. package/dist/neutral/modules/bridge-model/Config.d.ts.map +1 -1
  98. package/dist/neutral/modules/bridge-model/EventData.d.ts +1 -0
  99. package/dist/neutral/modules/bridge-model/EventData.d.ts.map +1 -1
  100. package/dist/neutral/modules/bridge-model/Events/Exposed.d.ts +2 -0
  101. package/dist/neutral/modules/bridge-model/Events/Exposed.d.ts.map +1 -1
  102. package/dist/neutral/modules/bridge-model/Events/QueryFulfillFinished.d.ts +2 -0
  103. package/dist/neutral/modules/bridge-model/Events/QueryFulfillFinished.d.ts.map +1 -1
  104. package/dist/neutral/modules/bridge-model/Events/QueryFulfillStarted.d.ts +2 -0
  105. package/dist/neutral/modules/bridge-model/Events/QueryFulfillStarted.d.ts.map +1 -1
  106. package/dist/neutral/modules/bridge-model/Events/QuerySendFinished.d.ts +2 -0
  107. package/dist/neutral/modules/bridge-model/Events/QuerySendFinished.d.ts.map +1 -1
  108. package/dist/neutral/modules/bridge-model/Events/QuerySendStarted.d.ts +2 -0
  109. package/dist/neutral/modules/bridge-model/Events/QuerySendStarted.d.ts.map +1 -1
  110. package/dist/neutral/modules/bridge-model/Events/Unexposed.d.ts +2 -0
  111. package/dist/neutral/modules/bridge-model/Events/Unexposed.d.ts.map +1 -1
  112. package/dist/neutral/modules/bridge-model/Instance.d.ts +1 -0
  113. package/dist/neutral/modules/bridge-model/Instance.d.ts.map +1 -1
  114. package/dist/neutral/modules/bridge-model/Module.d.ts +1 -0
  115. package/dist/neutral/modules/bridge-model/Module.d.ts.map +1 -1
  116. package/dist/neutral/modules/bridge-model/Params.d.ts +1 -0
  117. package/dist/neutral/modules/bridge-model/Params.d.ts.map +1 -1
  118. package/dist/neutral/modules/bridge-model/Queries/Connect.d.ts +7 -0
  119. package/dist/neutral/modules/bridge-model/Queries/Connect.d.ts.map +1 -1
  120. package/dist/neutral/modules/bridge-model/Queries/Disconnect.d.ts +7 -0
  121. package/dist/neutral/modules/bridge-model/Queries/Disconnect.d.ts.map +1 -1
  122. package/dist/neutral/modules/bridge-model/Queries/Expose.d.ts +15 -0
  123. package/dist/neutral/modules/bridge-model/Queries/Expose.d.ts.map +1 -1
  124. package/dist/neutral/modules/bridge-model/Queries/Unexpose.d.ts +8 -0
  125. package/dist/neutral/modules/bridge-model/Queries/Unexpose.d.ts.map +1 -1
  126. package/dist/neutral/modules/bridge-model/Queries/index.d.ts +2 -0
  127. package/dist/neutral/modules/bridge-model/Queries/index.d.ts.map +1 -1
  128. package/dist/neutral/modules/bridge-model/QueryFunctions.d.ts +1 -0
  129. package/dist/neutral/modules/bridge-model/QueryFunctions.d.ts.map +1 -1
  130. package/dist/neutral/modules/bridge-model/RawQueryFunctions.d.ts +1 -0
  131. package/dist/neutral/modules/bridge-model/RawQueryFunctions.d.ts.map +1 -1
  132. package/dist/neutral/modules/bridge-model/attachable/AttachableInstance.d.ts +3 -0
  133. package/dist/neutral/modules/bridge-model/attachable/AttachableInstance.d.ts.map +1 -1
  134. package/dist/neutral/modules/bridge-model/attachable/asAttachableInstance.d.ts +1 -0
  135. package/dist/neutral/modules/bridge-model/attachable/asAttachableInstance.d.ts.map +1 -1
  136. package/dist/neutral/modules/bridge-model/attachable/isAttachableInstance.d.ts +2 -0
  137. package/dist/neutral/modules/bridge-model/attachable/isAttachableInstance.d.ts.map +1 -1
  138. package/dist/neutral/modules/bridge-model/index.d.ts +1 -0
  139. package/dist/neutral/modules/bridge-model/index.d.ts.map +1 -1
  140. package/dist/neutral/modules/bridge-model/typeChecks.d.ts +12 -2
  141. package/dist/neutral/modules/bridge-model/typeChecks.d.ts.map +1 -1
  142. package/dist/neutral/modules/bridge-wrapper/BridgeWrapper.d.ts +1 -0
  143. package/dist/neutral/modules/bridge-wrapper/BridgeWrapper.d.ts.map +1 -1
  144. package/dist/neutral/modules/bridge-wrapper/index.d.ts +1 -0
  145. package/dist/neutral/modules/bridge-wrapper/index.d.ts.map +1 -1
  146. package/dist/neutral/modules/diviner-abstract/AbstractDiviner.d.ts.map +1 -1
  147. package/dist/neutral/modules/diviner-boundwitness/MemoryBoundWitnessDiviner.d.ts.map +1 -1
  148. package/dist/neutral/modules/diviner-model/typeChecks.d.ts.map +1 -1
  149. package/dist/neutral/modules/diviner-payload-generic/Diviner.d.ts.map +1 -1
  150. package/dist/neutral/modules/diviner-wrapper/DivinerWrapper.d.ts.map +1 -1
  151. package/dist/neutral/modules/manifest-wrapper/Wrapper.d.ts.map +1 -1
  152. package/dist/neutral/modules/manifest-wrapper/WrapperEx.d.ts.map +1 -1
  153. package/dist/neutral/modules/module-abstract/AbstractModule.d.ts +1 -4
  154. package/dist/neutral/modules/module-abstract/AbstractModule.d.ts.map +1 -1
  155. package/dist/neutral/modules/module-abstract/AbstractModuleInstance.d.ts.map +1 -1
  156. package/dist/neutral/modules/module-abstract/Error.d.ts +1 -4
  157. package/dist/neutral/modules/module-abstract/Error.d.ts.map +1 -1
  158. package/dist/neutral/modules/module-abstract/QueryValidator/ModuleConfigQueryValidator.d.ts.map +1 -1
  159. package/dist/neutral/modules/module-factory-locator/ModuleFactoryLocator.d.ts.map +1 -1
  160. package/dist/neutral/modules/module-factory-locator/standardCreatableFactories.d.ts.map +1 -1
  161. package/dist/neutral/modules/module-model/QueryableModule/IsQueryableModuleFactory.d.ts.map +1 -1
  162. package/dist/neutral/modules/module-resolver/CompositeModuleResolver.d.ts.map +1 -1
  163. package/dist/neutral/modules/module-resolver/ResolveHelper/ResolveHelper.d.ts.map +1 -1
  164. package/dist/neutral/modules/module-resolver/ResolveHelper/resolveAll.d.ts.map +1 -1
  165. package/dist/neutral/modules/module-resolver/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -1
  166. package/dist/neutral/modules/module-resolver/ResolveHelper/resolvePathToAddress.d.ts.map +1 -1
  167. package/dist/neutral/modules/module-resolver/SimpleModuleResolver.d.ts.map +1 -1
  168. package/dist/neutral/modules/module-wrapper/ModuleWrapper.d.ts +7 -1
  169. package/dist/neutral/modules/module-wrapper/ModuleWrapper.d.ts.map +1 -1
  170. package/dist/neutral/modules/modules/index.d.ts +1 -0
  171. package/dist/neutral/modules/modules/index.d.ts.map +1 -1
  172. package/dist/neutral/modules/node-abstract/AbstractNode.d.ts.map +1 -1
  173. package/dist/neutral/modules/node-memory/MemoryNode.d.ts.map +1 -1
  174. package/dist/neutral/modules/node-memory/NodeHelper/attachToExistingNode.d.ts.map +1 -1
  175. package/dist/neutral/modules/node-memory/NodeHelper/flatAttachToExistingNode.d.ts.map +1 -1
  176. package/dist/neutral/modules/node-model/typeChecks.d.ts.map +1 -1
  177. package/dist/neutral/modules/node-view/ViewNode.d.ts.map +1 -1
  178. package/dist/neutral/modules/node-wrapper/NodeWrapper.d.ts.map +1 -1
  179. package/dist/neutral/modules/payloadset-plugin/Resolver.d.ts.map +1 -1
  180. package/dist/neutral/modules/sentinel-abstract/AbstractSentinel.d.ts.map +1 -1
  181. package/dist/neutral/modules/sentinel-memory/MemorySentinel.d.ts.map +1 -1
  182. package/dist/neutral/modules/sentinel-memory/SentinelRunner.d.ts.map +1 -1
  183. package/dist/neutral/modules/sentinel-model/typeChecks.d.ts.map +1 -1
  184. package/dist/neutral/modules/sentinel-wrapper/Wrapper.d.ts.map +1 -1
  185. package/dist/neutral/modules/witness-abstract/AbstractWitness.d.ts.map +1 -1
  186. package/dist/neutral/modules/witness-model/typeChecks.d.ts.map +1 -1
  187. package/dist/neutral/modules/witness-wrapper/WitnessWrapper.d.ts.map +1 -1
  188. package/dist/neutral/modules.mjs.map +2 -2
  189. package/dist/neutral/node-abstract.mjs +22 -10
  190. package/dist/neutral/node-abstract.mjs.map +2 -2
  191. package/dist/neutral/node-memory.mjs +14 -13
  192. package/dist/neutral/node-memory.mjs.map +2 -2
  193. package/dist/neutral/node-model.mjs +2 -1
  194. package/dist/neutral/node-model.mjs.map +2 -2
  195. package/dist/neutral/node-view.mjs +13 -11
  196. package/dist/neutral/node-view.mjs.map +2 -2
  197. package/dist/neutral/node-wrapper.mjs +35 -11
  198. package/dist/neutral/node-wrapper.mjs.map +2 -2
  199. package/dist/neutral/payloadset-plugin.mjs +11 -10
  200. package/dist/neutral/payloadset-plugin.mjs.map +2 -2
  201. package/dist/neutral/sentinel-abstract.mjs +7 -6
  202. package/dist/neutral/sentinel-abstract.mjs.map +2 -2
  203. package/dist/neutral/sentinel-memory.mjs +28 -22
  204. package/dist/neutral/sentinel-memory.mjs.map +2 -2
  205. package/dist/neutral/sentinel-model.mjs +4 -2
  206. package/dist/neutral/sentinel-model.mjs.map +2 -2
  207. package/dist/neutral/sentinel-wrapper.mjs +22 -4
  208. package/dist/neutral/sentinel-wrapper.mjs.map +2 -2
  209. package/dist/neutral/witness-abstract.mjs +4 -3
  210. package/dist/neutral/witness-abstract.mjs.map +2 -2
  211. package/dist/neutral/witness-model.mjs +4 -2
  212. package/dist/neutral/witness-model.mjs.map +2 -2
  213. package/dist/neutral/witness-wrapper.mjs +22 -4
  214. package/dist/neutral/witness-wrapper.mjs.map +2 -2
  215. package/dist/node/modules/api-location-diviner/LocationDiviner/LocationDivinerApi.d.ts +5 -3
  216. package/dist/node/modules/api-location-diviner/LocationDiviner/LocationDivinerApi.d.ts.map +1 -1
  217. package/dist/node/modules/api-location-diviner/LocationDiviner/Queries/LocationQueryCreationRequest.d.ts +7 -3
  218. package/dist/node/modules/api-location-diviner/LocationDiviner/Queries/LocationQueryCreationRequest.d.ts.map +1 -1
  219. package/dist/node/modules/api-location-diviner/RemoteDivinerConfig.d.ts +1 -2
  220. package/dist/node/modules/api-location-diviner/RemoteDivinerConfig.d.ts.map +1 -1
  221. package/dist/node/modules/archivist-abstract/AbstractArchivist.d.ts.map +1 -1
  222. package/dist/node/modules/archivist-abstract/payloadAdmission.d.ts.map +1 -1
  223. package/dist/node/modules/archivist-generic/Archivist.d.ts.map +1 -1
  224. package/dist/node/modules/archivist-memory/MemoryDriver.d.ts.map +1 -1
  225. package/dist/node/modules/archivist-model/lib/getBoundWitness.d.ts.map +1 -1
  226. package/dist/node/modules/archivist-model/lib/hydrateBoundWitness.d.ts.map +1 -1
  227. package/dist/node/modules/archivist-model/typeChecks.d.ts.map +1 -1
  228. package/dist/node/modules/archivist-view/ViewArchivist.d.ts.map +1 -1
  229. package/dist/node/modules/archivist-wrapper/ArchivistWrapper.d.ts.map +1 -1
  230. package/dist/node/modules/boundwitness-loader/Loader.d.ts.map +1 -1
  231. package/dist/node/modules/bridge/index.d.ts +3 -0
  232. package/dist/node/modules/bridge/index.d.ts.map +1 -1
  233. package/dist/node/modules/bridge/model.d.ts +1 -0
  234. package/dist/node/modules/bridge/model.d.ts.map +1 -1
  235. package/dist/node/modules/bridge/wrapper.d.ts +1 -0
  236. package/dist/node/modules/bridge/wrapper.d.ts.map +1 -1
  237. package/dist/node/modules/bridge-abstract/AbstractBridge.d.ts +1 -0
  238. package/dist/node/modules/bridge-abstract/AbstractBridge.d.ts.map +1 -1
  239. package/dist/node/modules/bridge-abstract/AbstractBridgeModuleResolver.d.ts +2 -0
  240. package/dist/node/modules/bridge-abstract/AbstractBridgeModuleResolver.d.ts.map +1 -1
  241. package/dist/node/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.d.ts +2 -0
  242. package/dist/node/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -1
  243. package/dist/node/modules/bridge-abstract/AbstractModuleProxy/ModuleProxyResolver.d.ts +2 -0
  244. package/dist/node/modules/bridge-abstract/AbstractModuleProxy/ModuleProxyResolver.d.ts.map +1 -1
  245. package/dist/node/modules/bridge-abstract/index.d.ts +4 -0
  246. package/dist/node/modules/bridge-abstract/index.d.ts.map +1 -1
  247. package/dist/node/modules/bridge-abstract/wrapModuleWithType.d.ts +1 -0
  248. package/dist/node/modules/bridge-abstract/wrapModuleWithType.d.ts.map +1 -1
  249. package/dist/node/modules/bridge-http/HttpBridge.d.ts +2 -0
  250. package/dist/node/modules/bridge-http/HttpBridge.d.ts.map +1 -1
  251. package/dist/node/modules/bridge-http/HttpBridgeConfig.d.ts +8 -0
  252. package/dist/node/modules/bridge-http/HttpBridgeConfig.d.ts.map +1 -1
  253. package/dist/node/modules/bridge-http/HttpBridgeModuleResolver.d.ts +4 -2
  254. package/dist/node/modules/bridge-http/HttpBridgeModuleResolver.d.ts.map +1 -1
  255. package/dist/node/modules/bridge-http/ModuleProxy/ModuleProxy.d.ts +3 -0
  256. package/dist/node/modules/bridge-http/ModuleProxy/ModuleProxy.d.ts.map +1 -1
  257. package/dist/node/modules/bridge-http/ModuleProxy/index.d.ts +1 -0
  258. package/dist/node/modules/bridge-http/ModuleProxy/index.d.ts.map +1 -1
  259. package/dist/node/modules/bridge-http/index.d.ts +2 -0
  260. package/dist/node/modules/bridge-http/index.d.ts.map +1 -1
  261. package/dist/node/modules/bridge-model/Config.d.ts +10 -0
  262. package/dist/node/modules/bridge-model/Config.d.ts.map +1 -1
  263. package/dist/node/modules/bridge-model/EventData.d.ts +1 -0
  264. package/dist/node/modules/bridge-model/EventData.d.ts.map +1 -1
  265. package/dist/node/modules/bridge-model/Events/Exposed.d.ts +2 -0
  266. package/dist/node/modules/bridge-model/Events/Exposed.d.ts.map +1 -1
  267. package/dist/node/modules/bridge-model/Events/QueryFulfillFinished.d.ts +2 -0
  268. package/dist/node/modules/bridge-model/Events/QueryFulfillFinished.d.ts.map +1 -1
  269. package/dist/node/modules/bridge-model/Events/QueryFulfillStarted.d.ts +2 -0
  270. package/dist/node/modules/bridge-model/Events/QueryFulfillStarted.d.ts.map +1 -1
  271. package/dist/node/modules/bridge-model/Events/QuerySendFinished.d.ts +2 -0
  272. package/dist/node/modules/bridge-model/Events/QuerySendFinished.d.ts.map +1 -1
  273. package/dist/node/modules/bridge-model/Events/QuerySendStarted.d.ts +2 -0
  274. package/dist/node/modules/bridge-model/Events/QuerySendStarted.d.ts.map +1 -1
  275. package/dist/node/modules/bridge-model/Events/Unexposed.d.ts +2 -0
  276. package/dist/node/modules/bridge-model/Events/Unexposed.d.ts.map +1 -1
  277. package/dist/node/modules/bridge-model/Instance.d.ts +1 -0
  278. package/dist/node/modules/bridge-model/Instance.d.ts.map +1 -1
  279. package/dist/node/modules/bridge-model/Module.d.ts +1 -0
  280. package/dist/node/modules/bridge-model/Module.d.ts.map +1 -1
  281. package/dist/node/modules/bridge-model/Params.d.ts +1 -0
  282. package/dist/node/modules/bridge-model/Params.d.ts.map +1 -1
  283. package/dist/node/modules/bridge-model/Queries/Connect.d.ts +7 -0
  284. package/dist/node/modules/bridge-model/Queries/Connect.d.ts.map +1 -1
  285. package/dist/node/modules/bridge-model/Queries/Disconnect.d.ts +7 -0
  286. package/dist/node/modules/bridge-model/Queries/Disconnect.d.ts.map +1 -1
  287. package/dist/node/modules/bridge-model/Queries/Expose.d.ts +15 -0
  288. package/dist/node/modules/bridge-model/Queries/Expose.d.ts.map +1 -1
  289. package/dist/node/modules/bridge-model/Queries/Unexpose.d.ts +8 -0
  290. package/dist/node/modules/bridge-model/Queries/Unexpose.d.ts.map +1 -1
  291. package/dist/node/modules/bridge-model/Queries/index.d.ts +2 -0
  292. package/dist/node/modules/bridge-model/Queries/index.d.ts.map +1 -1
  293. package/dist/node/modules/bridge-model/QueryFunctions.d.ts +1 -0
  294. package/dist/node/modules/bridge-model/QueryFunctions.d.ts.map +1 -1
  295. package/dist/node/modules/bridge-model/RawQueryFunctions.d.ts +1 -0
  296. package/dist/node/modules/bridge-model/RawQueryFunctions.d.ts.map +1 -1
  297. package/dist/node/modules/bridge-model/attachable/AttachableInstance.d.ts +3 -0
  298. package/dist/node/modules/bridge-model/attachable/AttachableInstance.d.ts.map +1 -1
  299. package/dist/node/modules/bridge-model/attachable/asAttachableInstance.d.ts +1 -0
  300. package/dist/node/modules/bridge-model/attachable/asAttachableInstance.d.ts.map +1 -1
  301. package/dist/node/modules/bridge-model/attachable/isAttachableInstance.d.ts +2 -0
  302. package/dist/node/modules/bridge-model/attachable/isAttachableInstance.d.ts.map +1 -1
  303. package/dist/node/modules/bridge-model/index.d.ts +1 -0
  304. package/dist/node/modules/bridge-model/index.d.ts.map +1 -1
  305. package/dist/node/modules/bridge-model/typeChecks.d.ts +12 -2
  306. package/dist/node/modules/bridge-model/typeChecks.d.ts.map +1 -1
  307. package/dist/node/modules/bridge-wrapper/BridgeWrapper.d.ts +1 -0
  308. package/dist/node/modules/bridge-wrapper/BridgeWrapper.d.ts.map +1 -1
  309. package/dist/node/modules/bridge-wrapper/index.d.ts +1 -0
  310. package/dist/node/modules/bridge-wrapper/index.d.ts.map +1 -1
  311. package/dist/node/modules/diviner-abstract/AbstractDiviner.d.ts.map +1 -1
  312. package/dist/node/modules/diviner-boundwitness/MemoryBoundWitnessDiviner.d.ts.map +1 -1
  313. package/dist/node/modules/diviner-model/typeChecks.d.ts.map +1 -1
  314. package/dist/node/modules/diviner-payload-generic/Diviner.d.ts.map +1 -1
  315. package/dist/node/modules/diviner-wrapper/DivinerWrapper.d.ts.map +1 -1
  316. package/dist/node/modules/manifest-wrapper/Wrapper.d.ts.map +1 -1
  317. package/dist/node/modules/manifest-wrapper/WrapperEx.d.ts.map +1 -1
  318. package/dist/node/modules/module-abstract/AbstractModule.d.ts +1 -4
  319. package/dist/node/modules/module-abstract/AbstractModule.d.ts.map +1 -1
  320. package/dist/node/modules/module-abstract/AbstractModuleInstance.d.ts.map +1 -1
  321. package/dist/node/modules/module-abstract/Error.d.ts +1 -4
  322. package/dist/node/modules/module-abstract/Error.d.ts.map +1 -1
  323. package/dist/node/modules/module-abstract/QueryValidator/ModuleConfigQueryValidator.d.ts.map +1 -1
  324. package/dist/node/modules/module-factory-locator/ModuleFactoryLocator.d.ts.map +1 -1
  325. package/dist/node/modules/module-factory-locator/standardCreatableFactories.d.ts.map +1 -1
  326. package/dist/node/modules/module-model/QueryableModule/IsQueryableModuleFactory.d.ts.map +1 -1
  327. package/dist/node/modules/module-resolver/CompositeModuleResolver.d.ts.map +1 -1
  328. package/dist/node/modules/module-resolver/ResolveHelper/ResolveHelper.d.ts.map +1 -1
  329. package/dist/node/modules/module-resolver/ResolveHelper/resolveAll.d.ts.map +1 -1
  330. package/dist/node/modules/module-resolver/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -1
  331. package/dist/node/modules/module-resolver/ResolveHelper/resolvePathToAddress.d.ts.map +1 -1
  332. package/dist/node/modules/module-resolver/SimpleModuleResolver.d.ts.map +1 -1
  333. package/dist/node/modules/module-wrapper/ModuleWrapper.d.ts +7 -1
  334. package/dist/node/modules/module-wrapper/ModuleWrapper.d.ts.map +1 -1
  335. package/dist/node/modules/modules/index.d.ts +1 -0
  336. package/dist/node/modules/modules/index.d.ts.map +1 -1
  337. package/dist/node/modules/node-abstract/AbstractNode.d.ts.map +1 -1
  338. package/dist/node/modules/node-memory/MemoryNode.d.ts.map +1 -1
  339. package/dist/node/modules/node-memory/NodeHelper/attachToExistingNode.d.ts.map +1 -1
  340. package/dist/node/modules/node-memory/NodeHelper/flatAttachToExistingNode.d.ts.map +1 -1
  341. package/dist/node/modules/node-model/typeChecks.d.ts.map +1 -1
  342. package/dist/node/modules/node-view/ViewNode.d.ts.map +1 -1
  343. package/dist/node/modules/node-wrapper/NodeWrapper.d.ts.map +1 -1
  344. package/dist/node/modules/payloadset-plugin/Resolver.d.ts.map +1 -1
  345. package/dist/node/modules/sentinel-abstract/AbstractSentinel.d.ts.map +1 -1
  346. package/dist/node/modules/sentinel-memory/MemorySentinel.d.ts.map +1 -1
  347. package/dist/node/modules/sentinel-memory/SentinelRunner.d.ts.map +1 -1
  348. package/dist/node/modules/sentinel-model/typeChecks.d.ts.map +1 -1
  349. package/dist/node/modules/sentinel-wrapper/Wrapper.d.ts.map +1 -1
  350. package/dist/node/modules/witness-abstract/AbstractWitness.d.ts.map +1 -1
  351. package/dist/node/modules/witness-model/typeChecks.d.ts.map +1 -1
  352. package/dist/node/modules/witness-wrapper/WitnessWrapper.d.ts.map +1 -1
  353. package/package.json +13 -13
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/node-wrapper/NodeWrapper.ts"],
4
- "sourcesContent": ["import type { TypeCheck } from '@ariestools/sdk'\nimport type {\n AccountInstance, NodeManifestPayload, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, NodeManifestPayloadSchema } from '@xyo-network/sdk-protocol'\nimport { Mutex } from 'async-mutex'\n\nimport type {\n AddressPayload,\n AnyConfigSchema,\n InstanceTypeCheck,\n ModuleIdentifier,\n ModuleManifestQuery,\n ModuleQueryResult,\n} from '#module-model'\nimport {\n AddressSchema,\n ModuleManifestQuerySchema,\n} from '#module-model'\nimport { constructableModuleWrapper, ModuleWrapper } from '#module-wrapper'\nimport type {\n ChildCertification,\n ChildCertificationFields,\n NodeAttachedQuery,\n NodeAttachQuery,\n NodeCertifyQuery,\n NodeConfig,\n NodeDetachQuery,\n NodeInstance,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeRegisteredQuery,\n} from '#node-model'\nimport {\n ChildCertificationSchema,\n isNodeInstance,\n isNodeModule,\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeCertifyQuerySchema,\n NodeDetachQuerySchema,\n NodeRegisteredQuerySchema,\n} from '#node-model'\n\nconstructableModuleWrapper()\nexport class NodeWrapper<TWrappedModule extends NodeModule = NodeModule>\n extends ModuleWrapper<TWrappedModule>\n implements NodeInstance<TWrappedModule['params']> {\n static override readonly instanceIdentityCheck: InstanceTypeCheck<NodeInstance> = isNodeInstance\n static override readonly moduleIdentityCheck: TypeCheck<NodeModule<NodeParams<AnyConfigSchema<NodeConfig>>, NodeModuleEventData>> = isNodeModule\n static override readonly requiredQueries: string[] = [NodeAttachQuerySchema, ...ModuleWrapper.requiredQueries]\n\n protected _attached?: XyoAddress[]\n protected _attachedMutex: Mutex = new Mutex()\n\n async attach(id: ModuleIdentifier, external?: boolean): Promise<XyoAddress | undefined> {\n const queryPayload: NodeAttachQuery = {\n external, id, schema: NodeAttachQuerySchema,\n }\n const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n return payloads.pop()?.address\n }\n\n async attachQuery(id: ModuleIdentifier, external?: boolean, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeAttachQuery = {\n external, id, schema: NodeAttachQuerySchema,\n }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async attached(): Promise<XyoAddress[]> {\n return await this._attachedMutex.runExclusive(async () => {\n if (this._attached === undefined) {\n const queryPayload: NodeAttachedQuery = { schema: NodeAttachedQuerySchema }\n const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n this._attached = payloads.map(p => p.address)\n }\n return this._attached\n })\n }\n\n async attachedQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeAttachedQuery = { schema: NodeAttachedQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async certify(id: ModuleIdentifier): Promise<ChildCertificationFields | undefined> {\n const queryPayload: NodeCertifyQuery = { id, schema: NodeCertifyQuerySchema }\n const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<ChildCertification>(ChildCertificationSchema))\n return payloads.pop()\n }\n\n async certifyQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<ChildCertification>> {\n const queryPayload: NodeCertifyQuery = { id, schema: NodeCertifyQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async detach(id: ModuleIdentifier): Promise<XyoAddress | undefined> {\n const queryPayload: NodeDetachQuery = { id, schema: NodeDetachQuerySchema }\n const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n return payloads.pop()?.address\n }\n\n async detachQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeDetachQuery = { id, schema: NodeDetachQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n override async manifest(maxDepth?: number): Promise<NodeManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth ? { maxDepth } : {}) }\n const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n return payloads.pop()!\n }\n\n async registered(): Promise<XyoAddress[]> {\n const queryPayload: NodeRegisteredQuery = { schema: NodeRegisteredQuerySchema }\n const payloads = (await this.sendQuery(queryPayload)).filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n return payloads.map(p => p.address)\n }\n\n async registeredQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeRegisteredQuery = { schema: NodeRegisteredQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { TypeCheck } from '@ariestools/sdk'\nimport type {\n AccountInstance, NodeManifestPayload, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, NodeManifestPayloadSchema } from '@xyo-network/sdk-protocol'\nimport { Mutex } from 'async-mutex'\n\nimport type {\n AddressPayload,\n AnyConfigSchema,\n InstanceTypeCheck,\n ModuleIdentifier,\n ModuleManifestQuery,\n ModuleQueryResult,\n} from '#module-model'\nimport {\n AddressSchema,\n ModuleManifestQuerySchema,\n} from '#module-model'\nimport { constructableModuleWrapper, ModuleWrapper } from '#module-wrapper'\nimport type {\n ChildCertification,\n ChildCertificationFields,\n NodeAttachedQuery,\n NodeAttachQuery,\n NodeCertifyQuery,\n NodeConfig,\n NodeDetachQuery,\n NodeInstance,\n NodeModule,\n NodeModuleEventData,\n NodeParams,\n NodeRegisteredQuery,\n} from '#node-model'\nimport {\n ChildCertificationSchema,\n isNodeInstance,\n isNodeModule,\n NodeAttachedQuerySchema,\n NodeAttachQuerySchema,\n NodeCertifyQuerySchema,\n NodeDetachQuerySchema,\n NodeRegisteredQuerySchema,\n} from '#node-model'\n\n@constructableModuleWrapper()\nexport class NodeWrapper<TWrappedModule extends NodeModule = NodeModule>\n extends ModuleWrapper<TWrappedModule>\n implements NodeInstance<TWrappedModule['params']> {\n static override readonly instanceIdentityCheck: InstanceTypeCheck<NodeInstance> = isNodeInstance\n static override readonly moduleIdentityCheck: TypeCheck<NodeModule<NodeParams<AnyConfigSchema<NodeConfig>>, NodeModuleEventData>> = isNodeModule\n static override readonly requiredQueries: string[] = [NodeAttachQuerySchema, ...ModuleWrapper.requiredQueries]\n\n protected _attached?: XyoAddress[]\n protected _attachedMutex: Mutex = new Mutex()\n\n async attach(id: ModuleIdentifier, external?: boolean): Promise<XyoAddress | undefined> {\n const queryPayload: NodeAttachQuery = {\n external, id, schema: NodeAttachQuerySchema,\n }\n const results = await this.sendQuery(queryPayload)\n const payloads = results.filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n return payloads.pop()?.address\n }\n\n async attachQuery(id: ModuleIdentifier, external?: boolean, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeAttachQuery = {\n external, id, schema: NodeAttachQuerySchema,\n }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async attached(): Promise<XyoAddress[]> {\n return await this._attachedMutex.runExclusive(async () => {\n if (this._attached === undefined) {\n const queryPayload: NodeAttachedQuery = { schema: NodeAttachedQuerySchema }\n const results = await this.sendQuery(queryPayload)\n const payloads = results.filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n this._attached = payloads.map(p => p.address)\n }\n return this._attached\n })\n }\n\n async attachedQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeAttachedQuery = { schema: NodeAttachedQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async certify(id: ModuleIdentifier): Promise<ChildCertificationFields | undefined> {\n const queryPayload: NodeCertifyQuery = { id, schema: NodeCertifyQuerySchema }\n const results = await this.sendQuery(queryPayload)\n const payloads = results.filter(isPayloadOfSchemaType<ChildCertification>(ChildCertificationSchema))\n return payloads.pop()\n }\n\n async certifyQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<ChildCertification>> {\n const queryPayload: NodeCertifyQuery = { id, schema: NodeCertifyQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n async detach(id: ModuleIdentifier): Promise<XyoAddress | undefined> {\n const queryPayload: NodeDetachQuery = { id, schema: NodeDetachQuerySchema }\n const results = await this.sendQuery(queryPayload)\n const payloads = results.filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n return payloads.pop()?.address\n }\n\n async detachQuery(id: ModuleIdentifier, account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeDetachQuery = { id, schema: NodeDetachQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n\n override async manifest(maxDepth?: number): Promise<NodeManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema }\n if (maxDepth !== undefined && maxDepth !== 0 && !Number.isNaN(maxDepth)) {\n queryPayload.maxDepth = maxDepth\n }\n const results = await this.sendQuery(queryPayload)\n const payloads = results.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n return payloads.pop()!\n }\n\n async registered(): Promise<XyoAddress[]> {\n const queryPayload: NodeRegisteredQuery = { schema: NodeRegisteredQuerySchema }\n const results = await this.sendQuery(queryPayload)\n const payloads = results.filter(isPayloadOfSchemaType<AddressPayload>(AddressSchema))\n return payloads.map(p => p.address)\n }\n\n async registeredQuery(account?: AccountInstance): Promise<ModuleQueryResult<AddressPayload>> {\n const queryPayload: NodeRegisteredQuery = { schema: NodeRegisteredQuerySchema }\n return await this.sendQueryRaw(queryPayload, [], account)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -39,11 +39,12 @@ var PayloadSetPluginResolver = class {
39
39
  _params = {};
40
40
  _plugins = {};
41
41
  constructor(plugins) {
42
- for (const plugin of plugins ?? []) forget(this.register(plugin));
42
+ const initialPlugins = plugins ?? [];
43
+ for (const plugin of initialPlugins) forget(this.register(plugin));
43
44
  }
44
45
  async diviner(set) {
45
- const setHash = typeof set === "string" ? set : await PayloadBuilder.dataHash(set);
46
- return await tryAsPayloadSetDivinerPlugin(this._plugins[setHash])?.diviner?.(this._params[setHash]);
46
+ const hashSet = typeof set === "string" ? set : await PayloadBuilder.dataHash(set);
47
+ return await tryAsPayloadSetDivinerPlugin(this._plugins[hashSet])?.diviner?.(this._params[hashSet]);
47
48
  }
48
49
  diviners() {
49
50
  return Object.values(this._plugins).filter(isPayloadSetDivinerPlugin);
@@ -55,21 +56,21 @@ var PayloadSetPluginResolver = class {
55
56
  return Object.values(this._plugins);
56
57
  }
57
58
  async register(plugin, params) {
58
- const setHash = await PayloadBuilder.dataHash(plugin.set);
59
- this._plugins[setHash] = plugin;
60
- this._params[setHash] = params;
59
+ const hashSet = await PayloadBuilder.dataHash(plugin.set);
60
+ this._plugins[hashSet] = plugin;
61
+ this._params[hashSet] = params;
61
62
  return this;
62
63
  }
63
64
  async resolve(set) {
64
- const setHash = typeof set === "string" ? set : set ? await PayloadBuilder.dataHash(set) : void 0;
65
- return isString(setHash) ? this._plugins[setHash] : void 0;
65
+ const hashSet = typeof set === "string" ? set : set ? await PayloadBuilder.dataHash(set) : void 0;
66
+ return isString(hashSet) ? this._plugins[hashSet] : void 0;
66
67
  }
67
68
  sets() {
68
69
  return Object.values(this._plugins).map((value) => value.set);
69
70
  }
70
71
  async witness(set) {
71
- const setHash = typeof set === "string" ? set : await PayloadBuilder.dataHash(set);
72
- return await tryAsPayloadSetWitnessPlugin(this._plugins[setHash])?.witness?.(this._params[setHash]);
72
+ const hashSet = typeof set === "string" ? set : await PayloadBuilder.dataHash(set);
73
+ return await tryAsPayloadSetWitnessPlugin(this._plugins[hashSet])?.witness?.(this._params[hashSet]);
73
74
  }
74
75
  witnesses() {
75
76
  return Object.values(this._plugins).filter(isPayloadSetWitnessPlugin);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/payloadset-plugin/createPlugin.ts", "../../src/modules/payloadset-plugin/Plugin.ts", "../../src/modules/payloadset-plugin/Resolver.ts"],
4
- "sourcesContent": ["import type { PayloadSetPayload } from '@xyo-network/sdk-protocol'\n\nimport type { DivinerModule } from '#diviner-model'\nimport type { WitnessModule } from '#witness-model'\n\nimport type {\n PayloadSetDivinerPlugin, PayloadSetDualPlugin, PayloadSetWitnessPlugin,\n} from './Plugin.ts'\n\nexport const createPayloadSetDualPlugin = <TWitness extends WitnessModule = WitnessModule, TDiviner extends DivinerModule = DivinerModule>(\n set: PayloadSetPayload,\n plugin: Omit<PayloadSetDualPlugin<TWitness, TDiviner>, 'set'>,\n): PayloadSetDualPlugin<TWitness, TDiviner> => {\n return {\n ...plugin,\n set,\n }\n}\n\nexport const createPayloadSetWitnessPlugin = <TModule extends WitnessModule = WitnessModule>(\n set: PayloadSetPayload,\n plugin: Omit<PayloadSetWitnessPlugin<TModule>, 'set'>,\n): PayloadSetWitnessPlugin<TModule> => {\n return {\n ...plugin,\n set,\n }\n}\n\nexport const createPayloadSetDivinerPlugin = <TModule extends DivinerModule = DivinerModule>(\n set: PayloadSetPayload,\n plugin: Omit<PayloadSetDivinerPlugin<TModule>, 'set'>,\n): PayloadSetDivinerPlugin<TModule> => {\n return {\n ...plugin,\n set,\n }\n}\n", "import type { Promisable, Validator } from '@ariestools/sdk'\nimport type {\n PayloadSetPayload, QueryBoundWitness, QueryBoundWitnessWrapper,\n} from '@xyo-network/sdk-protocol'\n\nimport type { DivinerModule } from '#diviner-model'\nimport type { WitnessModule } from '#witness-model'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PayloadSetPluginFunc = () => PayloadSetPlugin<any>\n\nexport interface PayloadSetDivinerField<TDiviner extends DivinerModule = DivinerModule> {\n diviner: (params: TDiviner['params']) => Promisable<TDiviner>\n params?: TDiviner['params']\n}\n\nexport interface PayloadSetWitnessField<TWitness extends WitnessModule = WitnessModule> {\n params?: TWitness['params']\n witness: (params: TWitness['params']) => Promisable<TWitness>\n}\n\nexport interface PayloadSetPluginShared {\n set: PayloadSetPayload\n validate?: (boundwitness: QueryBoundWitness) => Validator<QueryBoundWitness>\n wrap?: (boundwitness: QueryBoundWitness) => QueryBoundWitnessWrapper\n}\n\nexport type PayloadSetWitnessPlugin<TWitness extends WitnessModule = WitnessModule> = PayloadSetPluginShared & PayloadSetWitnessField<TWitness>\n\nexport type PayloadSetDivinerPlugin<TDiviner extends DivinerModule = DivinerModule> = PayloadSetPluginShared & PayloadSetDivinerField<TDiviner>\n\nexport type PayloadSetDualPlugin<\n TWitness extends WitnessModule = WitnessModule,\n TDiviner extends DivinerModule = DivinerModule,\n> = PayloadSetWitnessPlugin<TWitness> & PayloadSetDivinerPlugin<TDiviner>\n\nexport type PayloadSetPlugin<TModule extends WitnessModule | DivinerModule = WitnessModule | DivinerModule>\n = TModule extends WitnessModule ? PayloadSetWitnessPlugin<TModule>\n : TModule extends DivinerModule ? PayloadSetDivinerPlugin<TModule>\n : never\n\nexport const isPayloadSetWitnessPlugin = (plugin: PayloadSetPlugin): plugin is PayloadSetWitnessPlugin => {\n return (plugin as PayloadSetWitnessPlugin)?.witness != undefined\n}\n\nexport const tryAsPayloadSetWitnessPlugin = (payloadSetPlugin: PayloadSetPlugin): PayloadSetWitnessPlugin | undefined => {\n return isPayloadSetWitnessPlugin(payloadSetPlugin) ? payloadSetPlugin : undefined\n}\n\nexport const isPayloadSetDivinerPlugin = (plugin: PayloadSetPlugin): plugin is PayloadSetDivinerPlugin => {\n return (plugin as PayloadSetDivinerPlugin)?.diviner != undefined\n}\n\nexport const tryAsPayloadSetDivinerPlugin = (payloadSetPlugin: PayloadSetPlugin): PayloadSetDivinerPlugin | undefined => {\n return isPayloadSetDivinerPlugin(payloadSetPlugin) ? payloadSetPlugin : undefined\n}\n", "import { forget, isString } from '@ariestools/sdk'\nimport type { PayloadSetPayload } from '@xyo-network/sdk-protocol'\nimport { PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nimport type { DivinerModule, DivinerParams } from '#diviner-model'\nimport type { WitnessModule, WitnessParams } from '#witness-model'\n\nimport type {\n PayloadSetDivinerPlugin,\n PayloadSetPlugin,\n PayloadSetWitnessPlugin,\n} from './Plugin.ts'\nimport {\n isPayloadSetDivinerPlugin,\n isPayloadSetWitnessPlugin,\n tryAsPayloadSetDivinerPlugin,\n tryAsPayloadSetWitnessPlugin,\n} from './Plugin.ts'\n\nexport class PayloadSetPluginResolver {\n protected _params: Record<string, PayloadSetPlugin['params'] | undefined> = {}\n protected _plugins: Record<string, PayloadSetPlugin> = {}\n\n constructor(\n /** @param plugins The initial set of plugins */\n plugins?: PayloadSetPlugin[],\n ) {\n for (const plugin of plugins ?? []) forget(this.register(plugin))\n }\n\n async diviner(set: PayloadSetPayload): Promise<DivinerModule | undefined>\n async diviner(set: string): Promise<DivinerModule | undefined>\n async diviner(set: string | PayloadSetPayload): Promise<DivinerModule | undefined> {\n const setHash = typeof set === 'string' ? set : await PayloadBuilder.dataHash(set)\n return await tryAsPayloadSetDivinerPlugin(this._plugins[setHash])?.diviner?.(this._params[setHash] as DivinerParams)\n }\n\n diviners(): PayloadSetDivinerPlugin[] {\n return Object.values(this._plugins).filter(isPayloadSetDivinerPlugin)\n }\n\n params(): (PayloadSetPlugin['params'] | undefined)[] {\n return Object.values(this._params)\n }\n\n plugins(): PayloadSetPlugin[] {\n return Object.values(this._plugins)\n }\n\n async register<TModule extends WitnessModule | DivinerModule>(plugin: PayloadSetPlugin<TModule>, params?: TModule['params']): Promise<this> {\n const setHash = await PayloadBuilder.dataHash(plugin.set)\n this._plugins[setHash] = plugin\n this._params[setHash] = params\n return this\n }\n\n async resolve(set?: PayloadSetPayload): Promise<PayloadSetPlugin | undefined>\n async resolve(set?: string): Promise<PayloadSetPlugin | undefined>\n async resolve(set?: string | PayloadSetPayload): Promise<PayloadSetPlugin | undefined> {\n const setHash\n = typeof set === 'string'\n ? set\n : set\n ? await PayloadBuilder.dataHash(set)\n : undefined\n return isString(setHash) ? this._plugins[setHash] : undefined\n }\n\n sets(): PayloadSetPayload[] {\n return Object.values(this._plugins).map(value => value.set)\n }\n\n async witness(set: PayloadSetPayload): Promise<WitnessModule | undefined>\n async witness(set: string): Promise<WitnessModule | undefined>\n async witness(set: string | PayloadSetPayload): Promise<WitnessModule | undefined> {\n const setHash = typeof set === 'string' ? set : await PayloadBuilder.dataHash(set)\n return await tryAsPayloadSetWitnessPlugin(this._plugins[setHash])?.witness?.(this._params[setHash] as WitnessParams)\n }\n\n witnesses(): PayloadSetWitnessPlugin[] {\n return Object.values(this._plugins).filter(isPayloadSetWitnessPlugin)\n }\n}\n"],
5
- "mappings": ";AASO,IAAM,6BAA6B,CACxC,KACA,WAC6C;AAC7C,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,gCAAgC,CAC3C,KACA,WACqC;AACrC,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,gCAAgC,CAC3C,KACA,WACqC;AACrC,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;;;ACIO,IAAM,4BAA4B,CAAC,WAAgE;AACxG,SAAQ,QAAoC,WAAW;AACzD;AAEO,IAAM,+BAA+B,CAAC,qBAA4E;AACvH,SAAO,0BAA0B,gBAAgB,IAAI,mBAAmB;AAC1E;AAEO,IAAM,4BAA4B,CAAC,WAAgE;AACxG,SAAQ,QAAoC,WAAW;AACzD;AAEO,IAAM,+BAA+B,CAAC,qBAA4E;AACvH,SAAO,0BAA0B,gBAAgB,IAAI,mBAAmB;AAC1E;;;ACvDA,SAAS,QAAQ,gBAAgB;AAEjC,SAAS,sBAAsB;AAiBxB,IAAM,2BAAN,MAA+B;AAAA,EAC1B,UAAkE,CAAC;AAAA,EACnE,WAA6C,CAAC;AAAA,EAExD,YAEE,SACA;AACA,eAAW,UAAU,WAAW,CAAC,EAAG,QAAO,KAAK,SAAS,MAAM,CAAC;AAAA,EAClE;AAAA,EAIA,MAAM,QAAQ,KAAqE;AACjF,UAAM,UAAU,OAAO,QAAQ,WAAW,MAAM,MAAM,eAAe,SAAS,GAAG;AACjF,WAAO,MAAM,6BAA6B,KAAK,SAAS,OAAO,CAAC,GAAG,UAAU,KAAK,QAAQ,OAAO,CAAkB;AAAA,EACrH;AAAA,EAEA,WAAsC;AACpC,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,yBAAyB;AAAA,EACtE;AAAA,EAEA,SAAqD;AACnD,WAAO,OAAO,OAAO,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,UAA8B;AAC5B,WAAO,OAAO,OAAO,KAAK,QAAQ;AAAA,EACpC;AAAA,EAEA,MAAM,SAAwD,QAAmC,QAA2C;AAC1I,UAAM,UAAU,MAAM,eAAe,SAAS,OAAO,GAAG;AACxD,SAAK,SAAS,OAAO,IAAI;AACzB,SAAK,QAAQ,OAAO,IAAI;AACxB,WAAO;AAAA,EACT;AAAA,EAIA,MAAM,QAAQ,KAAyE;AACrF,UAAM,UACF,OAAO,QAAQ,WACb,MACA,MACE,MAAM,eAAe,SAAS,GAAG,IACjC;AACR,WAAO,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI;AAAA,EACtD;AAAA,EAEA,OAA4B;AAC1B,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,IAAI,WAAS,MAAM,GAAG;AAAA,EAC5D;AAAA,EAIA,MAAM,QAAQ,KAAqE;AACjF,UAAM,UAAU,OAAO,QAAQ,WAAW,MAAM,MAAM,eAAe,SAAS,GAAG;AACjF,WAAO,MAAM,6BAA6B,KAAK,SAAS,OAAO,CAAC,GAAG,UAAU,KAAK,QAAQ,OAAO,CAAkB;AAAA,EACrH;AAAA,EAEA,YAAuC;AACrC,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,yBAAyB;AAAA,EACtE;AACF;",
4
+ "sourcesContent": ["import type { PayloadSetPayload } from '@xyo-network/sdk-protocol'\n\nimport type { DivinerModule } from '#diviner-model'\nimport type { WitnessModule } from '#witness-model'\n\nimport type {\n PayloadSetDivinerPlugin, PayloadSetDualPlugin, PayloadSetWitnessPlugin,\n} from './Plugin.ts'\n\nexport const createPayloadSetDualPlugin = <TWitness extends WitnessModule = WitnessModule, TDiviner extends DivinerModule = DivinerModule>(\n set: PayloadSetPayload,\n plugin: Omit<PayloadSetDualPlugin<TWitness, TDiviner>, 'set'>,\n): PayloadSetDualPlugin<TWitness, TDiviner> => {\n return {\n ...plugin,\n set,\n }\n}\n\nexport const createPayloadSetWitnessPlugin = <TModule extends WitnessModule = WitnessModule>(\n set: PayloadSetPayload,\n plugin: Omit<PayloadSetWitnessPlugin<TModule>, 'set'>,\n): PayloadSetWitnessPlugin<TModule> => {\n return {\n ...plugin,\n set,\n }\n}\n\nexport const createPayloadSetDivinerPlugin = <TModule extends DivinerModule = DivinerModule>(\n set: PayloadSetPayload,\n plugin: Omit<PayloadSetDivinerPlugin<TModule>, 'set'>,\n): PayloadSetDivinerPlugin<TModule> => {\n return {\n ...plugin,\n set,\n }\n}\n", "import type { Promisable, Validator } from '@ariestools/sdk'\nimport type {\n PayloadSetPayload, QueryBoundWitness, QueryBoundWitnessWrapper,\n} from '@xyo-network/sdk-protocol'\n\nimport type { DivinerModule } from '#diviner-model'\nimport type { WitnessModule } from '#witness-model'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PayloadSetPluginFunc = () => PayloadSetPlugin<any>\n\nexport interface PayloadSetDivinerField<TDiviner extends DivinerModule = DivinerModule> {\n diviner: (params: TDiviner['params']) => Promisable<TDiviner>\n params?: TDiviner['params']\n}\n\nexport interface PayloadSetWitnessField<TWitness extends WitnessModule = WitnessModule> {\n params?: TWitness['params']\n witness: (params: TWitness['params']) => Promisable<TWitness>\n}\n\nexport interface PayloadSetPluginShared {\n set: PayloadSetPayload\n validate?: (boundwitness: QueryBoundWitness) => Validator<QueryBoundWitness>\n wrap?: (boundwitness: QueryBoundWitness) => QueryBoundWitnessWrapper\n}\n\nexport type PayloadSetWitnessPlugin<TWitness extends WitnessModule = WitnessModule> = PayloadSetPluginShared & PayloadSetWitnessField<TWitness>\n\nexport type PayloadSetDivinerPlugin<TDiviner extends DivinerModule = DivinerModule> = PayloadSetPluginShared & PayloadSetDivinerField<TDiviner>\n\nexport type PayloadSetDualPlugin<\n TWitness extends WitnessModule = WitnessModule,\n TDiviner extends DivinerModule = DivinerModule,\n> = PayloadSetWitnessPlugin<TWitness> & PayloadSetDivinerPlugin<TDiviner>\n\nexport type PayloadSetPlugin<TModule extends WitnessModule | DivinerModule = WitnessModule | DivinerModule>\n = TModule extends WitnessModule ? PayloadSetWitnessPlugin<TModule>\n : TModule extends DivinerModule ? PayloadSetDivinerPlugin<TModule>\n : never\n\nexport const isPayloadSetWitnessPlugin = (plugin: PayloadSetPlugin): plugin is PayloadSetWitnessPlugin => {\n return (plugin as PayloadSetWitnessPlugin)?.witness != undefined\n}\n\nexport const tryAsPayloadSetWitnessPlugin = (payloadSetPlugin: PayloadSetPlugin): PayloadSetWitnessPlugin | undefined => {\n return isPayloadSetWitnessPlugin(payloadSetPlugin) ? payloadSetPlugin : undefined\n}\n\nexport const isPayloadSetDivinerPlugin = (plugin: PayloadSetPlugin): plugin is PayloadSetDivinerPlugin => {\n return (plugin as PayloadSetDivinerPlugin)?.diviner != undefined\n}\n\nexport const tryAsPayloadSetDivinerPlugin = (payloadSetPlugin: PayloadSetPlugin): PayloadSetDivinerPlugin | undefined => {\n return isPayloadSetDivinerPlugin(payloadSetPlugin) ? payloadSetPlugin : undefined\n}\n", "import { forget, isString } from '@ariestools/sdk'\nimport type { PayloadSetPayload } from '@xyo-network/sdk-protocol'\nimport { PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nimport type { DivinerModule, DivinerParams } from '#diviner-model'\nimport type { WitnessModule, WitnessParams } from '#witness-model'\n\nimport type {\n PayloadSetDivinerPlugin,\n PayloadSetPlugin,\n PayloadSetWitnessPlugin,\n} from './Plugin.ts'\nimport {\n isPayloadSetDivinerPlugin,\n isPayloadSetWitnessPlugin,\n tryAsPayloadSetDivinerPlugin,\n tryAsPayloadSetWitnessPlugin,\n} from './Plugin.ts'\n\nexport class PayloadSetPluginResolver {\n protected _params: Record<string, PayloadSetPlugin['params'] | undefined> = {}\n protected _plugins: Record<string, PayloadSetPlugin> = {}\n\n constructor(\n /** @param plugins The initial set of plugins */\n plugins?: PayloadSetPlugin[],\n ) {\n const initialPlugins = plugins ?? []\n for (const plugin of initialPlugins) forget(this.register(plugin))\n }\n\n async diviner(set: PayloadSetPayload): Promise<DivinerModule | undefined>\n async diviner(set: string): Promise<DivinerModule | undefined>\n async diviner(set: string | PayloadSetPayload): Promise<DivinerModule | undefined> {\n const hashSet = typeof set === 'string' ? set : await PayloadBuilder.dataHash(set)\n return await tryAsPayloadSetDivinerPlugin(this._plugins[hashSet])?.diviner?.(this._params[hashSet] as DivinerParams)\n }\n\n diviners(): PayloadSetDivinerPlugin[] {\n return Object.values(this._plugins).filter(isPayloadSetDivinerPlugin)\n }\n\n params(): (PayloadSetPlugin['params'] | undefined)[] {\n return Object.values(this._params)\n }\n\n plugins(): PayloadSetPlugin[] {\n return Object.values(this._plugins)\n }\n\n async register<TModule extends WitnessModule | DivinerModule>(plugin: PayloadSetPlugin<TModule>, params?: TModule['params']): Promise<this> {\n const hashSet = await PayloadBuilder.dataHash(plugin.set)\n this._plugins[hashSet] = plugin\n this._params[hashSet] = params\n return this\n }\n\n async resolve(set?: PayloadSetPayload): Promise<PayloadSetPlugin | undefined>\n async resolve(set?: string): Promise<PayloadSetPlugin | undefined>\n async resolve(set?: string | PayloadSetPayload): Promise<PayloadSetPlugin | undefined> {\n const hashSet\n = typeof set === 'string'\n ? set\n : set\n ? await PayloadBuilder.dataHash(set)\n : undefined\n return isString(hashSet) ? this._plugins[hashSet] : undefined\n }\n\n sets(): PayloadSetPayload[] {\n return Object.values(this._plugins).map(value => value.set)\n }\n\n async witness(set: PayloadSetPayload): Promise<WitnessModule | undefined>\n async witness(set: string): Promise<WitnessModule | undefined>\n async witness(set: string | PayloadSetPayload): Promise<WitnessModule | undefined> {\n const hashSet = typeof set === 'string' ? set : await PayloadBuilder.dataHash(set)\n return await tryAsPayloadSetWitnessPlugin(this._plugins[hashSet])?.witness?.(this._params[hashSet] as WitnessParams)\n }\n\n witnesses(): PayloadSetWitnessPlugin[] {\n return Object.values(this._plugins).filter(isPayloadSetWitnessPlugin)\n }\n}\n"],
5
+ "mappings": ";AASO,IAAM,6BAA6B,CACxC,KACA,WAC6C;AAC7C,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,gCAAgC,CAC3C,KACA,WACqC;AACrC,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;AAEO,IAAM,gCAAgC,CAC3C,KACA,WACqC;AACrC,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,EACF;AACF;;;ACIO,IAAM,4BAA4B,CAAC,WAAgE;AACxG,SAAQ,QAAoC,WAAW;AACzD;AAEO,IAAM,+BAA+B,CAAC,qBAA4E;AACvH,SAAO,0BAA0B,gBAAgB,IAAI,mBAAmB;AAC1E;AAEO,IAAM,4BAA4B,CAAC,WAAgE;AACxG,SAAQ,QAAoC,WAAW;AACzD;AAEO,IAAM,+BAA+B,CAAC,qBAA4E;AACvH,SAAO,0BAA0B,gBAAgB,IAAI,mBAAmB;AAC1E;;;ACvDA,SAAS,QAAQ,gBAAgB;AAEjC,SAAS,sBAAsB;AAiBxB,IAAM,2BAAN,MAA+B;AAAA,EAC1B,UAAkE,CAAC;AAAA,EACnE,WAA6C,CAAC;AAAA,EAExD,YAEE,SACA;AACA,UAAM,iBAAiB,WAAW,CAAC;AACnC,eAAW,UAAU,eAAgB,QAAO,KAAK,SAAS,MAAM,CAAC;AAAA,EACnE;AAAA,EAIA,MAAM,QAAQ,KAAqE;AACjF,UAAM,UAAU,OAAO,QAAQ,WAAW,MAAM,MAAM,eAAe,SAAS,GAAG;AACjF,WAAO,MAAM,6BAA6B,KAAK,SAAS,OAAO,CAAC,GAAG,UAAU,KAAK,QAAQ,OAAO,CAAkB;AAAA,EACrH;AAAA,EAEA,WAAsC;AACpC,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,yBAAyB;AAAA,EACtE;AAAA,EAEA,SAAqD;AACnD,WAAO,OAAO,OAAO,KAAK,OAAO;AAAA,EACnC;AAAA,EAEA,UAA8B;AAC5B,WAAO,OAAO,OAAO,KAAK,QAAQ;AAAA,EACpC;AAAA,EAEA,MAAM,SAAwD,QAAmC,QAA2C;AAC1I,UAAM,UAAU,MAAM,eAAe,SAAS,OAAO,GAAG;AACxD,SAAK,SAAS,OAAO,IAAI;AACzB,SAAK,QAAQ,OAAO,IAAI;AACxB,WAAO;AAAA,EACT;AAAA,EAIA,MAAM,QAAQ,KAAyE;AACrF,UAAM,UACF,OAAO,QAAQ,WACb,MACA,MACE,MAAM,eAAe,SAAS,GAAG,IACjC;AACR,WAAO,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,IAAI;AAAA,EACtD;AAAA,EAEA,OAA4B;AAC1B,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,IAAI,WAAS,MAAM,GAAG;AAAA,EAC5D;AAAA,EAIA,MAAM,QAAQ,KAAqE;AACjF,UAAM,UAAU,OAAO,QAAQ,WAAW,MAAM,MAAM,eAAe,SAAS,GAAG;AACjF,WAAO,MAAM,6BAA6B,KAAK,SAAS,OAAO,CAAC,GAAG,UAAU,KAAK,QAAQ,OAAO,CAAkB;AAAA,EACrH;AAAA,EAEA,YAAuC;AACrC,WAAO,OAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,yBAAyB;AAAA,EACtE;AACF;",
6
6
  "names": []
7
7
  }
@@ -17,7 +17,7 @@ var AbstractSentinel = class extends AbstractModuleInstance {
17
17
  history = [];
18
18
  _jobPromise;
19
19
  get jobPromise() {
20
- this._jobPromise = this._jobPromise ?? this.generateJob();
20
+ this._jobPromise ??= this.generateJob();
21
21
  return this._jobPromise;
22
22
  }
23
23
  get queries() {
@@ -34,7 +34,7 @@ var AbstractSentinel = class extends AbstractModuleInstance {
34
34
  this.isSupportedQuery(SentinelReportQuerySchema, "report");
35
35
  return await this.spanAsync("report", async () => {
36
36
  const reportPromise = (async () => {
37
- if (this.reentrancy?.scope === "global" && this.reentrancy?.action === "skip" && this.globalReentrancyMutex?.isLocked()) {
37
+ if (this.reentrancy?.scope === "global" && this.reentrancy?.action === "skip" && this.globalReentrancyMutex?.isLocked() === true) {
38
38
  console.warn(`Skipping report for ${this.id} due to global reentrancy lock`);
39
39
  return [];
40
40
  }
@@ -42,7 +42,9 @@ var AbstractSentinel = class extends AbstractModuleInstance {
42
42
  await this.globalReentrancyMutex?.acquire();
43
43
  await this.emit("reportStart", { inPayloads, mod: this });
44
44
  const payloads = await this.reportHandler(inPayloads);
45
- const result = (await new BoundWitnessBuilder().payloads(payloads).signer(this.account).build()).flat();
45
+ const boundWitnessBuilder = new BoundWitnessBuilder();
46
+ const built = await boundWitnessBuilder.payloads(payloads).signer(this.account).build();
47
+ const result = built.flat();
46
48
  if (this.config.archiving) {
47
49
  forget(this.storeToArchivists(result), { name: `AbstractSentinel.report.storeArchivist [${this.id}]` });
48
50
  }
@@ -54,10 +56,9 @@ var AbstractSentinel = class extends AbstractModuleInstance {
54
56
  })();
55
57
  if (this.synchronous) {
56
58
  return await reportPromise;
57
- } else {
58
- forget(reportPromise, { name: `AbstractSentinel.report [${this.id}]` });
59
- return [];
60
59
  }
60
+ forget(reportPromise, { name: `AbstractSentinel.report [${this.id}]` });
61
+ return [];
61
62
  }, { timeBudgetLimit: 200 });
62
63
  }
63
64
  async reportQuery(payloads, account) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/sentinel-abstract/AbstractSentinel.ts"],
4
- "sourcesContent": ["import { assertEx, forget } from '@ariestools/sdk'\nimport type {\n AccountInstance, BoundWitness, Payload, QueryBoundWitness, Schema,\n} from '@xyo-network/sdk-protocol'\nimport {\n BoundWitnessBuilder, isBoundWitness, PayloadBuilder, QueryBoundWitnessWrapper,\n} from '@xyo-network/sdk-protocol'\n\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult,\n} from '#module-model'\nimport type {\n AttachableSentinelInstance,\n CustomSentinelInstance,\n ResolvedTask,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\n} from '#sentinel-model'\nimport {\n SentinelConfigSchema,\n SentinelReportQuerySchema,\n} from '#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>, AttachableSentinelInstance<TParams, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n history: BoundWitness[] = []\n private _jobPromise?: Promise<SentinelJob>\n\n get jobPromise(): Promise<SentinelJob> {\n this._jobPromise = this._jobPromise ?? this.generateJob()\n return this._jobPromise\n }\n\n override get queries(): Schema[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n get synchronous(): boolean {\n return this.config.synchronous ?? true\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 this.isSupportedQuery(SentinelReportQuerySchema, 'report')\n return await this.spanAsync('report', async () => {\n const reportPromise = (async () => {\n if (this.reentrancy?.scope === 'global' && this.reentrancy?.action === 'skip' && this.globalReentrancyMutex?.isLocked()) {\n console.warn(`Skipping report for ${this.id} due to global reentrancy lock`)\n return []\n }\n try {\n await this.globalReentrancyMutex?.acquire()\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), { name: `AbstractSentinel.report.storeArchivist [${this.id}]` })\n }\n\n await this.emitReportEnd(inPayloads, result)\n return result\n } finally {\n this.globalReentrancyMutex?.release()\n }\n }\n )()\n if (this.synchronous) {\n return await reportPromise\n } else {\n forget(reportPromise, { name: `AbstractSentinel.report [${this.id}]` })\n return []\n }\n }, { timeBudgetLimit: 200 })\n }\n\n async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n this._noOverride('reportQuery')\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\n }\n\n protected async emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]): Promise<void> {\n const boundwitnesses = payloads?.filter(isBoundWitness) ?? []\n const outPayloads = payloads?.filter(payload => !isBoundWitness(payload)) ?? []\n const boundwitness = boundwitnesses.find(bw => bw.addresses.includes(this.address))\n await this.emit('reportEnd', {\n boundwitness, inPayloads, mod: this, outPayloads,\n })\n }\n\n protected async generateJob(): Promise<SentinelJob> {\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.some(prevTask => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.some(\n prevTask => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n return false\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 = 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 PayloadBuilder.omitPrivateStorageMeta(resultPayloads)\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { assertEx, forget } from '@ariestools/sdk'\nimport type {\n AccountInstance, BoundWitness, Payload, QueryBoundWitness, Schema,\n} from '@xyo-network/sdk-protocol'\nimport {\n BoundWitnessBuilder, isBoundWitness, PayloadBuilder, QueryBoundWitnessWrapper,\n} from '@xyo-network/sdk-protocol'\n\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n ModuleConfig, ModuleQueryHandlerResult, ModuleQueryResult,\n} from '#module-model'\nimport type {\n AttachableSentinelInstance,\n CustomSentinelInstance,\n ResolvedTask,\n SentinelInstance,\n SentinelJob,\n SentinelModuleEventData,\n SentinelParams,\n SentinelQueries,\n SentinelReportQuery,\n} from '#sentinel-model'\nimport {\n SentinelConfigSchema,\n SentinelReportQuerySchema,\n} from '#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>, AttachableSentinelInstance<TParams, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n history: BoundWitness[] = []\n private _jobPromise?: Promise<SentinelJob>\n\n get jobPromise(): Promise<SentinelJob> {\n this._jobPromise ??= this.generateJob()\n return this._jobPromise\n }\n\n override get queries(): Schema[] {\n return [SentinelReportQuerySchema, ...super.queries]\n }\n\n get synchronous(): boolean {\n return this.config.synchronous ?? true\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 this.isSupportedQuery(SentinelReportQuerySchema, 'report')\n return await this.spanAsync('report', async () => {\n const reportPromise = (async () => {\n if (this.reentrancy?.scope === 'global' && this.reentrancy?.action === 'skip' && this.globalReentrancyMutex?.isLocked() === true) {\n console.warn(`Skipping report for ${this.id} due to global reentrancy lock`)\n return []\n }\n try {\n await this.globalReentrancyMutex?.acquire()\n await this.emit('reportStart', { inPayloads, mod: this })\n const payloads = await this.reportHandler(inPayloads)\n\n // create boundwitness\n const boundWitnessBuilder = new BoundWitnessBuilder()\n const built = await boundWitnessBuilder.payloads(payloads).signer(this.account).build()\n const result = built.flat()\n\n if (this.config.archiving) {\n forget(this.storeToArchivists(result), { name: `AbstractSentinel.report.storeArchivist [${this.id}]` })\n }\n\n await this.emitReportEnd(inPayloads, result)\n return result\n } finally {\n this.globalReentrancyMutex?.release()\n }\n }\n )()\n if (this.synchronous) {\n return await reportPromise\n }\n forget(reportPromise, { name: `AbstractSentinel.report [${this.id}]` })\n return []\n }, { timeBudgetLimit: 200 })\n }\n\n async reportQuery(payloads?: Payload[], account?: AccountInstance): Promise<ModuleQueryResult> {\n this._noOverride('reportQuery')\n const queryPayload: SentinelReportQuery = { schema: SentinelReportQuerySchema }\n return await this.sendQueryRaw(queryPayload, payloads, account)\n }\n\n protected async emitReportEnd(inPayloads?: Payload[], payloads?: Payload[]): Promise<void> {\n const boundwitnesses = payloads?.filter(isBoundWitness) ?? []\n const outPayloads = payloads?.filter(payload => !isBoundWitness(payload)) ?? []\n const boundwitness = boundwitnesses.find(bw => bw.addresses.includes(this.address))\n await this.emit('reportEnd', {\n boundwitness, inPayloads, mod: this, outPayloads,\n })\n }\n\n protected async generateJob(): Promise<SentinelJob> {\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.some(prevTask => prevTask.mod.address === input || prevTask.mod.modName === input)\n }\n if (Array.isArray(input)) {\n return previousTasks.some(\n prevTask => input.includes(prevTask.mod.address) || input.includes(prevTask.mod.modName ?? prevTask.mod.address),\n )\n }\n return false\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 = 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 PayloadBuilder.omitPrivateStorageMeta(resultPayloads)\n }\n\n abstract reportHandler(payloads?: Payload[]): Promise<Payload[]>\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -27,7 +27,7 @@ var SentinelIntervalAutomationWrapper = class extends PayloadWrapper {
27
27
  }
28
28
  get frequencyMillis() {
29
29
  const frequency = this.payload.frequency;
30
- if (frequency === void 0) return Number.POSITIVE_INFINITY;
30
+ if (frequency === void 0) return Infinity;
31
31
  const frequencyUnits = this.payload.frequencyUnits;
32
32
  switch (frequencyUnits ?? "hour") {
33
33
  case "millis": {
@@ -46,12 +46,12 @@ var SentinelIntervalAutomationWrapper = class extends PayloadWrapper {
46
46
  return frequency * 24 * 60 * 60 * 1e3;
47
47
  }
48
48
  default: {
49
- return Number.POSITIVE_INFINITY;
49
+ return Infinity;
50
50
  }
51
51
  }
52
52
  }
53
53
  get remaining() {
54
- return this.payload.remaining ?? Number.POSITIVE_INFINITY;
54
+ return this.payload.remaining ?? Infinity;
55
55
  }
56
56
  next() {
57
57
  const now = Date.now();
@@ -64,15 +64,15 @@ var SentinelIntervalAutomationWrapper = class extends PayloadWrapper {
64
64
  return this;
65
65
  }
66
66
  checkEnd() {
67
- if ((this.payload.start ?? 0) > (this.payload.end ?? Number.POSITIVE_INFINITY)) {
68
- this.setStart(Number.POSITIVE_INFINITY);
67
+ if ((this.payload.start ?? 0) > (this.payload.end ?? Infinity)) {
68
+ this.setStart(Infinity);
69
69
  }
70
70
  }
71
71
  consumeRemaining(count = 1) {
72
72
  if (this.payload.remaining === void 0) return;
73
73
  const remaining = Math.max(this.remaining - count, 0);
74
74
  this.setRemaining(remaining);
75
- if (remaining <= 0) this.setStart(Number.POSITIVE_INFINITY);
75
+ if (remaining <= 0) this.setStart(Infinity);
76
76
  }
77
77
  /**
78
78
  * Sets the remaining of the wrapped automation
@@ -106,12 +106,16 @@ var SentinelRunner = class extends Base {
106
106
  return this._automations;
107
107
  }
108
108
  get next() {
109
- return Object.values(this._automations).reduce((previous, current) => {
110
- if (isSentinelIntervalAutomation(current) && isSentinelIntervalAutomation(previous)) {
111
- return (current.start ?? Number.POSITIVE_INFINITY) < (previous?.start ?? Number.POSITIVE_INFINITY) ? current : previous;
109
+ const automations = Object.values(this._automations);
110
+ let result;
111
+ for (const automation of automations) {
112
+ if (isSentinelIntervalAutomation(automation) && isSentinelIntervalAutomation(result)) {
113
+ result = (automation.start ?? Infinity) < (result?.start ?? Infinity) ? automation : result;
114
+ } else {
115
+ result = automation;
112
116
  }
113
- return current;
114
- }, void 0);
117
+ }
118
+ return result;
115
119
  }
116
120
  async add(automation, restart = true) {
117
121
  const hash = await PayloadBuilder.dataHash(automation);
@@ -144,7 +148,7 @@ var SentinelRunner = class extends Base {
144
148
  const now = Date.now();
145
149
  const start = Math.max(automation.start ?? now, now);
146
150
  const delay = Math.max(start - now, 0);
147
- if (delay < Number.POSITIVE_INFINITY) {
151
+ if (delay < Infinity) {
148
152
  this.timeoutId = setTimeout(async () => {
149
153
  this.timeoutId = void 0;
150
154
  return await spanRootAsync("start.setTimeout", async () => {
@@ -160,15 +164,16 @@ var SentinelRunner = class extends Base {
160
164
  }, { tracer: this.tracer });
161
165
  }, delay);
162
166
  }
163
- } else if (isDefined(automation) && automation.type === "interval" && automation.start !== Number.POSITIVE_INFINITY) {
167
+ } else if (isDefined(automation) && automation.type === "interval" && automation.start !== Infinity) {
164
168
  this.logger?.warn(`Unschedulable interval automation; runner stopped [${JSON.stringify(automation)}]`);
165
169
  }
166
170
  }
167
171
  stop() {
168
- if (isDefined(this.timeoutId)) {
169
- clearTimeout(this.timeoutId);
170
- this.timeoutId = void 0;
172
+ if (!isDefined(this.timeoutId)) {
173
+ return;
171
174
  }
175
+ clearTimeout(this.timeoutId);
176
+ this.timeoutId = void 0;
172
177
  }
173
178
  async update(hash, automation, restart = true) {
174
179
  this.remove(hash, false);
@@ -227,11 +232,11 @@ var MemorySentinel = class extends AbstractSentinel {
227
232
  }
228
233
  async inputAddresses(input) {
229
234
  if (Array.isArray(input)) {
230
- return (await Promise.all(input.map(async (inputItem) => await this.inputAddresses(inputItem)))).flat();
231
- } else {
232
- const resolved = await this.resolve(input);
233
- return resolved ? [resolved.address] : [];
235
+ const allAddresses = await Promise.all(input.map(async (inputItem) => await this.inputAddresses(inputItem)));
236
+ return allAddresses.flat();
234
237
  }
238
+ const resolved = await this.resolve(input);
239
+ return resolved ? [resolved.address] : [];
235
240
  }
236
241
  processPreviousResults(payloads, inputs) {
237
242
  return inputs.flatMap((input) => payloads[input] ?? []);
@@ -300,9 +305,10 @@ var MemorySentinel = class extends AbstractSentinel {
300
305
  })
301
306
  );
302
307
  const finalResult = {};
303
- for (const result of results.filter(fulfilled)) {
308
+ const fulfilledResults = results.filter(fulfilled);
309
+ for (const result of fulfilledResults) {
304
310
  const [address, payloads] = result.value;
305
- finalResult[address] = finalResult[address] ?? [];
311
+ finalResult[address] ??= [];
306
312
  finalResult[address].push(...payloads);
307
313
  }
308
314
  if (this.throwErrors) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/sentinel-memory/MemorySentinel.ts", "../../src/modules/sentinel-memory/SentinelRunner.ts", "../../src/modules/sentinel-memory/SentinelIntervalAutomationWrapper.ts"],
4
- "sourcesContent": ["import { fulfilled, rejected } from '@ariestools/sdk'\nimport type {\n Payload, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport { asDivinerInstance } from '#diviner-model'\nimport { type AnyConfigSchema, type ModuleIdentifier } from '#module-model'\nimport { AbstractSentinel } from '#sentinel-abstract'\nimport type {\n ResolvedTask,\n SentinelConfig,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n} from '#sentinel-model'\nimport {\n asSentinelInstance,\n SentinelConfigSchema,\n} from '#sentinel-model'\nimport { asWitnessInstance } from '#witness-model'\n\nimport { SentinelRunner } from './SentinelRunner.ts'\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 readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n\n private runner?: SentinelRunner\n\n async reportHandler(inPayloads: Payload[] = []): Promise<Payload[]> {\n await this.startedAsync('throw')\n this.logger?.debug(`reportHandler:in: ${JSON.stringify(inPayloads)}`)\n const job = await this.jobPromise\n\n let index = 0\n let previousResults: Record<XyoAddress, Payload[]> = {}\n while (index < job.tasks.length) {\n const generatedPayloads = await this.runJob(job.tasks[index], previousResults, inPayloads)\n previousResults = generatedPayloads\n index++\n }\n const result = Object.values(previousResults).flat()\n this.logger?.debug(`reportHandler:out: ${JSON.stringify(result)}`)\n return result\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n if ((this.config.automations?.length ?? 0) > 0) {\n this.runner = new SentinelRunner({\n sentinel: this, automations: this.config.automations, traceProvider: this.params.traceProvider,\n })\n this.runner.start()\n }\n }\n\n override async stopHandler(): Promise<void> {\n if (this.runner) {\n this.runner.stop()\n this.runner = undefined\n }\n await super.stopHandler()\n }\n\n private async inputAddresses(input: ModuleIdentifier | ModuleIdentifier[]): Promise<XyoAddress[]> {\n if (Array.isArray(input)) {\n return (await Promise.all(input.map(async inputItem => await this.inputAddresses(inputItem)))).flat()\n } else {\n const resolved = await this.resolve(input)\n return resolved ? [resolved.address] : []\n }\n }\n\n private processPreviousResults(payloads: Record<string, Payload[]>, inputs: string[]) {\n return inputs.flatMap(input => payloads[input] ?? [])\n }\n\n private async runJob(\n tasks: ResolvedTask[],\n previousResults: Record<XyoAddress, Payload[]>,\n inPayloads?: Payload[],\n ): Promise<Record<XyoAddress, Payload[]>> {\n await this.emit('jobStart', { inPayloads, mod: this })\n this.logger?.debug(`runJob:tasks: ${JSON.stringify(tasks.length)}`)\n this.logger?.debug(`runJob:previous: ${JSON.stringify(previousResults)}`)\n this.logger?.debug(`runJob:in: ${JSON.stringify(inPayloads)}`)\n const results: PromiseSettledResult<[XyoAddress, Payload[]]>[] = await Promise.allSettled(\n tasks?.map(async (task) => {\n const input = task.input ?? false\n const inPayloadsFound\n = input === true\n ? inPayloads\n : input === false\n ? []\n : this.processPreviousResults(previousResults, await this.inputAddresses(input))\n const witness = asWitnessInstance(task.mod)\n if (witness) {\n await this.emit('taskStart', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this,\n })\n const observed = await witness.observe(inPayloadsFound)\n this.logger?.debug(`observed [${witness.id}]: ${JSON.stringify(observed)}`)\n await this.emit('taskEnd', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this, outPayloads: observed,\n })\n return [witness.address, observed]\n }\n const diviner = asDivinerInstance(task.mod)\n if (diviner) {\n await this.emit('taskStart', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this,\n })\n const divined = await diviner.divine(inPayloadsFound)\n this.logger?.debug(`divined [${diviner.id}]: ${JSON.stringify(divined)}`)\n await this.emit('taskEnd', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this, outPayloads: divined,\n })\n return [diviner.address, divined]\n }\n const sentinel = asSentinelInstance(task.mod)\n if (sentinel) {\n await this.emit('taskStart', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this,\n })\n const reported = await sentinel.report(inPayloadsFound)\n this.logger?.debug(`reported [${sentinel.id}]: ${JSON.stringify(reported)}`)\n await this.emit('taskEnd', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this, outPayloads: reported,\n })\n return [sentinel.address, reported]\n }\n throw new Error('Unsupported module type')\n }),\n )\n const finalResult: Record<XyoAddress, Payload[]> = {}\n for (const result of results.filter(fulfilled)) {\n const [address, payloads] = result.value\n finalResult[address] = finalResult[address] ?? []\n finalResult[address].push(...payloads)\n }\n if (this.throwErrors) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const errors = results.filter(rejected).map(result => result.reason)\n if (errors.length > 0) {\n throw new Error('At least one module failed')\n }\n }\n this.logger?.debug(`generateResults:out: ${JSON.stringify(finalResult)}`)\n await this.emit('jobEnd', {\n finalResult, inPayloads, mod: this,\n })\n return finalResult\n }\n}\n", "import type { BaseParams, BrandedHash } from '@ariestools/sdk'\nimport {\n assertEx, Base, forget,\n isDefined, spanRootAsync,\n} from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk-protocol'\nimport { PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nimport type {\n SentinelAutomationPayload,\n SentinelInstance,\n SentinelIntervalAutomationPayload,\n} from '#sentinel-model'\nimport { isSentinelIntervalAutomation } from '#sentinel-model'\n\nimport { SentinelIntervalAutomationWrapper } from './SentinelIntervalAutomationWrapper.ts'\n\nexport type OnSentinelRunnerTriggerResult = (result: Payload[]) => void\n\nexport interface SentinelRunnerParams extends BaseParams {\n automations?: SentinelAutomationPayload[]\n onTriggerResult?: OnSentinelRunnerTriggerResult\n sentinel: SentinelInstance\n}\n\nexport class SentinelRunner extends Base {\n protected _automations: Record<string, SentinelAutomationPayload> = {}\n protected onTriggerResult: OnSentinelRunnerTriggerResult | undefined\n protected sentinel: SentinelInstance\n protected timeoutId?: ReturnType<typeof setTimeout> | string | number\n\n constructor(params: SentinelRunnerParams) {\n super(params)\n this.sentinel = params.sentinel\n this.onTriggerResult = params.onTriggerResult\n\n if (params.automations) for (const automation of params.automations) forget(this.add(automation))\n }\n\n get automations(): Record<string, SentinelAutomationPayload> {\n return this._automations\n }\n\n private get next() {\n return Object.values(this._automations).reduce<SentinelAutomationPayload | undefined>((previous, current) => {\n if (isSentinelIntervalAutomation(current) && isSentinelIntervalAutomation(previous)) {\n return (current.start ?? Number.POSITIVE_INFINITY) < (previous?.start ?? Number.POSITIVE_INFINITY) ? current : previous\n }\n return current\n }, undefined)\n }\n\n async add(automation: SentinelAutomationPayload, restart = true): Promise<BrandedHash> {\n const hash = await PayloadBuilder.dataHash(automation)\n this._automations[hash] = automation\n if (restart) this.restart()\n return hash\n }\n\n find(hash: string): [string, SentinelAutomationPayload] | undefined {\n return Object.entries(this._automations).find(([key]) => key === hash)\n }\n\n remove(hash: string, restart = true): void {\n delete this._automations[hash]\n if (restart) this.restart()\n }\n\n removeAll(): void {\n this.stop()\n this._automations = {}\n }\n\n restart(): void {\n this.stop()\n this.start()\n }\n\n start(): void {\n this.startHandler()\n }\n\n startHandler(): void {\n assertEx(this.timeoutId === undefined, () => 'Already started')\n const automation = this.next\n if (isSentinelIntervalAutomation(automation)) {\n const now = Date.now()\n const start = Math.max(automation.start ?? now, now)\n const delay = Math.max(start - now, 0)\n if (delay < Number.POSITIVE_INFINITY) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n this.timeoutId = undefined\n return await spanRootAsync('start.setTimeout', async () => {\n try {\n // Run the automation\n await this.trigger(automation)\n this.stop()\n } catch (ex) {\n this.logger?.error('Error running automation', { error: ex })\n this.stop()\n } finally {\n // No matter what start the next automation\n this.start()\n }\n }, { tracer: this.tracer })\n }, delay)\n }\n } else if (isDefined(automation) && automation.type === 'interval' && automation.start !== Number.POSITIVE_INFINITY) {\n // A start of POSITIVE_INFINITY means the automation has intentionally completed\n // (remaining exhausted or past end). Anything else failing validation here would\n // otherwise silently stop the runner, so surface it.\n this.logger?.warn(`Unschedulable interval automation; runner stopped [${JSON.stringify(automation)}]`)\n }\n }\n\n stop(): void {\n if (isDefined(this.timeoutId)) {\n clearTimeout(this.timeoutId)\n this.timeoutId = undefined\n }\n }\n\n async update(hash: string, automation: SentinelAutomationPayload, restart = true): Promise<void> {\n this.remove(hash, false)\n await this.add(automation, false)\n if (restart) this.restart()\n }\n\n private async trigger(automation: SentinelIntervalAutomationPayload) {\n return await spanRootAsync('trigger', async () => {\n const wrapper = new SentinelIntervalAutomationWrapper(automation)\n this.remove(await wrapper.dataHash(), false)\n wrapper.next()\n await this.add(wrapper.payload, false)\n const triggerResult = await this.sentinel.report()\n this.onTriggerResult?.(triggerResult)\n }, { tracer: this.tracer })\n }\n}\n", "import { PayloadWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { SentinelIntervalAutomationPayload } from '#sentinel-model'\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(): number {\n const frequency = this.payload.frequency\n if (frequency === undefined) return Number.POSITIVE_INFINITY\n const frequencyUnits = this.payload.frequencyUnits\n switch (frequencyUnits ?? 'hour') {\n case 'millis': {\n return frequency\n }\n case 'second': {\n return frequency * 1000\n }\n case 'minute': {\n return frequency * 60 * 1000\n }\n case 'hour': {\n return frequency * 60 * 60 * 1000\n }\n case 'day': {\n return frequency * 24 * 60 * 60 * 1000\n }\n default: {\n return Number.POSITIVE_INFINITY\n }\n }\n }\n\n protected get remaining(): number {\n return this.payload.remaining ?? Number.POSITIVE_INFINITY\n }\n\n next(): this {\n const now = Date.now()\n const previousStart = this.payload?.start ?? now\n const start = Math.max(previousStart, now)\n const nextStart = start + this.frequencyMillis\n this.setStart(nextStart)\n this.consumeRemaining()\n this.checkEnd()\n return this\n }\n\n protected checkEnd(): void {\n if ((this.payload.start ?? 0) > (this.payload.end ?? Number.POSITIVE_INFINITY)) {\n this.setStart(Number.POSITIVE_INFINITY)\n }\n }\n\n protected consumeRemaining(count = 1): void {\n // Infinite reruns are represented by an absent remaining field. Leave the field\n // absent since a non-finite value is not a valid payload field value and would\n // cause the automation to fail schema validation on subsequent scheduling.\n if (this.payload.remaining === undefined) return\n const remaining = Math.max(this.remaining - count, 0)\n this.setRemaining(remaining)\n if (remaining <= 0) this.setStart(Number.POSITIVE_INFINITY)\n }\n\n /**\n * Sets the remaining of the wrapped automation\n * @param remaining The remaining time in milliseconds\n */\n protected setRemaining(remaining: number): void {\n this.payload.remaining = remaining\n }\n\n /**\n * Sets the start of the wrapped automation\n * @param start The start time in milliseconds\n */\n protected setStart(start: number): void {\n this.payload.start = start\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { fulfilled, rejected } from '@ariestools/sdk'\nimport type {\n Payload, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport { asDivinerInstance } from '#diviner-model'\nimport { type AnyConfigSchema, type ModuleIdentifier } from '#module-model'\nimport { AbstractSentinel } from '#sentinel-abstract'\nimport type {\n ResolvedTask,\n SentinelConfig,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n} from '#sentinel-model'\nimport {\n asSentinelInstance,\n SentinelConfigSchema,\n} from '#sentinel-model'\nimport { asWitnessInstance } from '#witness-model'\n\nimport { SentinelRunner } from './SentinelRunner.ts'\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 readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n\n private runner?: SentinelRunner\n\n async reportHandler(inPayloads: Payload[] = []): Promise<Payload[]> {\n await this.startedAsync('throw')\n this.logger?.debug(`reportHandler:in: ${JSON.stringify(inPayloads)}`)\n const job = await this.jobPromise\n\n let index = 0\n let previousResults: Record<XyoAddress, Payload[]> = {}\n while (index < job.tasks.length) {\n const generatedPayloads = await this.runJob(job.tasks[index], previousResults, inPayloads)\n previousResults = generatedPayloads\n index++\n }\n const result = Object.values(previousResults).flat()\n this.logger?.debug(`reportHandler:out: ${JSON.stringify(result)}`)\n return result\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n if ((this.config.automations?.length ?? 0) > 0) {\n this.runner = new SentinelRunner({\n sentinel: this, automations: this.config.automations, traceProvider: this.params.traceProvider,\n })\n this.runner.start()\n }\n }\n\n override async stopHandler(): Promise<void> {\n if (this.runner) {\n this.runner.stop()\n this.runner = undefined\n }\n await super.stopHandler()\n }\n\n private async inputAddresses(input: ModuleIdentifier | ModuleIdentifier[]): Promise<XyoAddress[]> {\n if (Array.isArray(input)) {\n const allAddresses = await Promise.all(input.map(async inputItem => await this.inputAddresses(inputItem)))\n return allAddresses.flat()\n }\n const resolved = await this.resolve(input)\n return resolved ? [resolved.address] : []\n }\n\n private processPreviousResults(payloads: Record<string, Payload[]>, inputs: string[]) {\n return inputs.flatMap(input => payloads[input] ?? [])\n }\n\n private async runJob(\n tasks: ResolvedTask[],\n previousResults: Record<XyoAddress, Payload[]>,\n inPayloads?: Payload[],\n ): Promise<Record<XyoAddress, Payload[]>> {\n await this.emit('jobStart', { inPayloads, mod: this })\n this.logger?.debug(`runJob:tasks: ${JSON.stringify(tasks.length)}`)\n this.logger?.debug(`runJob:previous: ${JSON.stringify(previousResults)}`)\n this.logger?.debug(`runJob:in: ${JSON.stringify(inPayloads)}`)\n const results: PromiseSettledResult<[XyoAddress, Payload[]]>[] = await Promise.allSettled(\n tasks?.map(async (task) => {\n const input = task.input ?? false\n const inPayloadsFound\n = input === true\n ? inPayloads\n : input === false\n ? []\n : this.processPreviousResults(previousResults, await this.inputAddresses(input))\n const witness = asWitnessInstance(task.mod)\n if (witness) {\n await this.emit('taskStart', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this,\n })\n const observed = await witness.observe(inPayloadsFound)\n this.logger?.debug(`observed [${witness.id}]: ${JSON.stringify(observed)}`)\n await this.emit('taskEnd', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this, outPayloads: observed,\n })\n return [witness.address, observed]\n }\n const diviner = asDivinerInstance(task.mod)\n if (diviner) {\n await this.emit('taskStart', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this,\n })\n const divined = await diviner.divine(inPayloadsFound)\n this.logger?.debug(`divined [${diviner.id}]: ${JSON.stringify(divined)}`)\n await this.emit('taskEnd', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this, outPayloads: divined,\n })\n return [diviner.address, divined]\n }\n const sentinel = asSentinelInstance(task.mod)\n if (sentinel) {\n await this.emit('taskStart', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this,\n })\n const reported = await sentinel.report(inPayloadsFound)\n this.logger?.debug(`reported [${sentinel.id}]: ${JSON.stringify(reported)}`)\n await this.emit('taskEnd', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this, outPayloads: reported,\n })\n return [sentinel.address, reported]\n }\n throw new Error('Unsupported module type')\n }),\n )\n const finalResult: Record<XyoAddress, Payload[]> = {}\n const fulfilledResults = results.filter(fulfilled)\n for (const result of fulfilledResults) {\n const [address, payloads] = result.value\n finalResult[address] ??= []\n finalResult[address].push(...payloads)\n }\n if (this.throwErrors) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const errors = results.filter(rejected).map(result => result.reason)\n if (errors.length > 0) {\n throw new Error('At least one module failed')\n }\n }\n this.logger?.debug(`generateResults:out: ${JSON.stringify(finalResult)}`)\n await this.emit('jobEnd', {\n finalResult, inPayloads, mod: this,\n })\n return finalResult\n }\n}\n", "import type { BaseParams, BrandedHash } from '@ariestools/sdk'\nimport {\n assertEx, Base, forget,\n isDefined, spanRootAsync,\n} from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk-protocol'\nimport { PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nimport type {\n SentinelAutomationPayload,\n SentinelInstance,\n SentinelIntervalAutomationPayload,\n} from '#sentinel-model'\nimport { isSentinelIntervalAutomation } from '#sentinel-model'\n\nimport { SentinelIntervalAutomationWrapper } from './SentinelIntervalAutomationWrapper.ts'\n\nexport type OnSentinelRunnerTriggerResult = (result: Payload[]) => void\n\nexport interface SentinelRunnerParams extends BaseParams {\n automations?: SentinelAutomationPayload[]\n onTriggerResult?: OnSentinelRunnerTriggerResult\n sentinel: SentinelInstance\n}\n\nexport class SentinelRunner extends Base {\n protected _automations: Record<string, SentinelAutomationPayload> = {}\n protected onTriggerResult: OnSentinelRunnerTriggerResult | undefined\n protected sentinel: SentinelInstance\n protected timeoutId?: ReturnType<typeof setTimeout> | string | number\n\n constructor(params: SentinelRunnerParams) {\n super(params)\n this.sentinel = params.sentinel\n this.onTriggerResult = params.onTriggerResult\n\n if (params.automations) for (const automation of params.automations) forget(this.add(automation))\n }\n\n get automations(): Record<string, SentinelAutomationPayload> {\n return this._automations\n }\n\n private get next() {\n const automations = Object.values(this._automations)\n let result: SentinelAutomationPayload | undefined\n for (const automation of automations) {\n if (isSentinelIntervalAutomation(automation) && isSentinelIntervalAutomation(result)) {\n result = (automation.start ?? Infinity) < (result?.start ?? Infinity) ? automation : result\n } else {\n result = automation\n }\n }\n return result\n }\n\n async add(automation: SentinelAutomationPayload, restart = true): Promise<BrandedHash> {\n const hash = await PayloadBuilder.dataHash(automation)\n this._automations[hash] = automation\n if (restart) this.restart()\n return hash\n }\n\n find(hash: string): [string, SentinelAutomationPayload] | undefined {\n return Object.entries(this._automations).find(([key]) => key === hash)\n }\n\n remove(hash: string, restart = true): void {\n delete this._automations[hash]\n if (restart) this.restart()\n }\n\n removeAll(): void {\n this.stop()\n this._automations = {}\n }\n\n restart(): void {\n this.stop()\n this.start()\n }\n\n start(): void {\n this.startHandler()\n }\n\n startHandler(): void {\n assertEx(this.timeoutId === undefined, () => 'Already started')\n const automation = this.next\n if (isSentinelIntervalAutomation(automation)) {\n const now = Date.now()\n const start = Math.max(automation.start ?? now, now)\n const delay = Math.max(start - now, 0)\n if (delay < Infinity) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n this.timeoutId = undefined\n return await spanRootAsync('start.setTimeout', async () => {\n try {\n // Run the automation\n await this.trigger(automation)\n this.stop()\n } catch (ex) {\n this.logger?.error('Error running automation', { error: ex })\n this.stop()\n } finally {\n // No matter what start the next automation\n this.start()\n }\n }, { tracer: this.tracer })\n }, delay)\n }\n } else if (isDefined(automation) && automation.type === 'interval' && automation.start !== Infinity) {\n // A start of POSITIVE_INFINITY means the automation has intentionally completed\n // (remaining exhausted or past end). Anything else failing validation here would\n // otherwise silently stop the runner, so surface it.\n this.logger?.warn(`Unschedulable interval automation; runner stopped [${JSON.stringify(automation)}]`)\n }\n }\n\n stop(): void {\n if (!isDefined(this.timeoutId)) {\n return\n }\n\n clearTimeout(this.timeoutId)\n this.timeoutId = undefined\n }\n\n async update(hash: string, automation: SentinelAutomationPayload, restart = true): Promise<void> {\n this.remove(hash, false)\n await this.add(automation, false)\n if (restart) this.restart()\n }\n\n private async trigger(automation: SentinelIntervalAutomationPayload) {\n return await spanRootAsync('trigger', async () => {\n const wrapper = new SentinelIntervalAutomationWrapper(automation)\n this.remove(await wrapper.dataHash(), false)\n wrapper.next()\n await this.add(wrapper.payload, false)\n const triggerResult = await this.sentinel.report()\n this.onTriggerResult?.(triggerResult)\n }, { tracer: this.tracer })\n }\n}\n", "import { PayloadWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { SentinelIntervalAutomationPayload } from '#sentinel-model'\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(): number {\n const frequency = this.payload.frequency\n if (frequency === undefined) return Infinity\n const frequencyUnits = this.payload.frequencyUnits\n switch (frequencyUnits ?? 'hour') {\n case 'millis': {\n return frequency\n }\n case 'second': {\n return frequency * 1000\n }\n case 'minute': {\n return frequency * 60 * 1000\n }\n case 'hour': {\n return frequency * 60 * 60 * 1000\n }\n case 'day': {\n return frequency * 24 * 60 * 60 * 1000\n }\n default: {\n return Infinity\n }\n }\n }\n\n protected get remaining(): number {\n return this.payload.remaining ?? Infinity\n }\n\n next(): this {\n const now = Date.now()\n const previousStart = this.payload?.start ?? now\n const start = Math.max(previousStart, now)\n const nextStart = start + this.frequencyMillis\n this.setStart(nextStart)\n this.consumeRemaining()\n this.checkEnd()\n return this\n }\n\n protected checkEnd(): void {\n if ((this.payload.start ?? 0) > (this.payload.end ?? Infinity)) {\n this.setStart(Infinity)\n }\n }\n\n protected consumeRemaining(count = 1): void {\n // Infinite reruns are represented by an absent remaining field. Leave the field\n // absent since a non-finite value is not a valid payload field value and would\n // cause the automation to fail schema validation on subsequent scheduling.\n if (this.payload.remaining === undefined) return\n const remaining = Math.max(this.remaining - count, 0)\n this.setRemaining(remaining)\n if (remaining <= 0) this.setStart(Infinity)\n }\n\n /**\n * Sets the remaining of the wrapped automation\n * @param remaining The remaining time in milliseconds\n */\n protected setRemaining(remaining: number): void {\n this.payload.remaining = remaining\n }\n\n /**\n * Sets the start of the wrapped automation\n * @param start The start time in milliseconds\n */\n protected setStart(start: number): void {\n this.payload.start = start\n }\n}\n"],
5
+ "mappings": ";AAAA,SAAS,WAAW,gBAAgB;AAKpC,SAAS,yBAAyB;AAElC,SAAS,wBAAwB;AAQjC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,yBAAyB;;;AClBlC;AAAA,EACE;AAAA,EAAU;AAAA,EAAM;AAAA,EAChB;AAAA,EAAW;AAAA,OACN;AAEP,SAAS,sBAAsB;AAO/B,SAAS,oCAAoC;;;ACb7C,SAAS,sBAAsB;AAIxB,IAAM,oCAAN,cAEG,eAAkB;AAAA,EAC1B,YAAY,SAAY;AACtB,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,IAAc,kBAA0B;AACtC,UAAM,YAAY,KAAK,QAAQ;AAC/B,QAAI,cAAc,OAAW,QAAO;AACpC,UAAM,iBAAiB,KAAK,QAAQ;AACpC,YAAQ,kBAAkB,QAAQ;AAAA,MAChC,KAAK,UAAU;AACb,eAAO;AAAA,MACT;AAAA,MACA,KAAK,UAAU;AACb,eAAO,YAAY;AAAA,MACrB;AAAA,MACA,KAAK,UAAU;AACb,eAAO,YAAY,KAAK;AAAA,MAC1B;AAAA,MACA,KAAK,QAAQ;AACX,eAAO,YAAY,KAAK,KAAK;AAAA,MAC/B;AAAA,MACA,KAAK,OAAO;AACV,eAAO,YAAY,KAAK,KAAK,KAAK;AAAA,MACpC;AAAA,MACA,SAAS;AACP,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAc,YAAoB;AAChC,WAAO,KAAK,QAAQ,aAAa;AAAA,EACnC;AAAA,EAEA,OAAa;AACX,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,gBAAgB,KAAK,SAAS,SAAS;AAC7C,UAAM,QAAQ,KAAK,IAAI,eAAe,GAAG;AACzC,UAAM,YAAY,QAAQ,KAAK;AAC/B,SAAK,SAAS,SAAS;AACvB,SAAK,iBAAiB;AACtB,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEU,WAAiB;AACzB,SAAK,KAAK,QAAQ,SAAS,MAAM,KAAK,QAAQ,OAAO,WAAW;AAC9D,WAAK,SAAS,QAAQ;AAAA,IACxB;AAAA,EACF;AAAA,EAEU,iBAAiB,QAAQ,GAAS;AAI1C,QAAI,KAAK,QAAQ,cAAc,OAAW;AAC1C,UAAM,YAAY,KAAK,IAAI,KAAK,YAAY,OAAO,CAAC;AACpD,SAAK,aAAa,SAAS;AAC3B,QAAI,aAAa,EAAG,MAAK,SAAS,QAAQ;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,aAAa,WAAyB;AAC9C,SAAK,QAAQ,YAAY;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,SAAS,OAAqB;AACtC,SAAK,QAAQ,QAAQ;AAAA,EACvB;AACF;;;AD1DO,IAAM,iBAAN,cAA6B,KAAK;AAAA,EAC7B,eAA0D,CAAC;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EAEV,YAAY,QAA8B;AACxC,UAAM,MAAM;AACZ,SAAK,WAAW,OAAO;AACvB,SAAK,kBAAkB,OAAO;AAE9B,QAAI,OAAO,YAAa,YAAW,cAAc,OAAO,YAAa,QAAO,KAAK,IAAI,UAAU,CAAC;AAAA,EAClG;AAAA,EAEA,IAAI,cAAyD;AAC3D,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,OAAO;AACjB,UAAM,cAAc,OAAO,OAAO,KAAK,YAAY;AACnD,QAAI;AACJ,eAAW,cAAc,aAAa;AACpC,UAAI,6BAA6B,UAAU,KAAK,6BAA6B,MAAM,GAAG;AACpF,kBAAU,WAAW,SAAS,aAAa,QAAQ,SAAS,YAAY,aAAa;AAAA,MACvF,OAAO;AACL,iBAAS;AAAA,MACX;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,YAAuC,UAAU,MAA4B;AACrF,UAAM,OAAO,MAAM,eAAe,SAAS,UAAU;AACrD,SAAK,aAAa,IAAI,IAAI;AAC1B,QAAI,QAAS,MAAK,QAAQ;AAC1B,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,MAA+D;AAClE,WAAO,OAAO,QAAQ,KAAK,YAAY,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,QAAQ,IAAI;AAAA,EACvE;AAAA,EAEA,OAAO,MAAc,UAAU,MAAY;AACzC,WAAO,KAAK,aAAa,IAAI;AAC7B,QAAI,QAAS,MAAK,QAAQ;AAAA,EAC5B;AAAA,EAEA,YAAkB;AAChB,SAAK,KAAK;AACV,SAAK,eAAe,CAAC;AAAA,EACvB;AAAA,EAEA,UAAgB;AACd,SAAK,KAAK;AACV,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,QAAc;AACZ,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,eAAqB;AACnB,aAAS,KAAK,cAAc,QAAW,MAAM,iBAAiB;AAC9D,UAAM,aAAa,KAAK;AACxB,QAAI,6BAA6B,UAAU,GAAG;AAC5C,YAAM,MAAM,KAAK,IAAI;AACrB,YAAM,QAAQ,KAAK,IAAI,WAAW,SAAS,KAAK,GAAG;AACnD,YAAM,QAAQ,KAAK,IAAI,QAAQ,KAAK,CAAC;AACrC,UAAI,QAAQ,UAAU;AAEpB,aAAK,YAAY,WAAW,YAAY;AACtC,eAAK,YAAY;AACjB,iBAAO,MAAM,cAAc,oBAAoB,YAAY;AACzD,gBAAI;AAEF,oBAAM,KAAK,QAAQ,UAAU;AAC7B,mBAAK,KAAK;AAAA,YACZ,SAAS,IAAI;AACX,mBAAK,QAAQ,MAAM,4BAA4B,EAAE,OAAO,GAAG,CAAC;AAC5D,mBAAK,KAAK;AAAA,YACZ,UAAE;AAEA,mBAAK,MAAM;AAAA,YACb;AAAA,UACF,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,QAC5B,GAAG,KAAK;AAAA,MACV;AAAA,IACF,WAAW,UAAU,UAAU,KAAK,WAAW,SAAS,cAAc,WAAW,UAAU,UAAU;AAInG,WAAK,QAAQ,KAAK,sDAAsD,KAAK,UAAU,UAAU,CAAC,GAAG;AAAA,IACvG;AAAA,EACF;AAAA,EAEA,OAAa;AACX,QAAI,CAAC,UAAU,KAAK,SAAS,GAAG;AAC9B;AAAA,IACF;AAEA,iBAAa,KAAK,SAAS;AAC3B,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,MAAM,OAAO,MAAc,YAAuC,UAAU,MAAqB;AAC/F,SAAK,OAAO,MAAM,KAAK;AACvB,UAAM,KAAK,IAAI,YAAY,KAAK;AAChC,QAAI,QAAS,MAAK,QAAQ;AAAA,EAC5B;AAAA,EAEA,MAAc,QAAQ,YAA+C;AACnE,WAAO,MAAM,cAAc,WAAW,YAAY;AAChD,YAAM,UAAU,IAAI,kCAAkC,UAAU;AAChE,WAAK,OAAO,MAAM,QAAQ,SAAS,GAAG,KAAK;AAC3C,cAAQ,KAAK;AACb,YAAM,KAAK,IAAI,QAAQ,SAAS,KAAK;AACrC,YAAM,gBAAgB,MAAM,KAAK,SAAS,OAAO;AACjD,WAAK,kBAAkB,aAAa;AAAA,IACtC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,EAC5B;AACF;;;ADxHO,IAAM,iBAAN,cAGG,iBAAsC;AAAA,EAC9C,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,oBAAoB;AAAA,EAChG,OAAyB,sBAA8B;AAAA,EAE/C;AAAA,EAER,MAAM,cAAc,aAAwB,CAAC,GAAuB;AAClE,UAAM,KAAK,aAAa,OAAO;AAC/B,SAAK,QAAQ,MAAM,qBAAqB,KAAK,UAAU,UAAU,CAAC,EAAE;AACpE,UAAM,MAAM,MAAM,KAAK;AAEvB,QAAI,QAAQ;AACZ,QAAI,kBAAiD,CAAC;AACtD,WAAO,QAAQ,IAAI,MAAM,QAAQ;AAC/B,YAAM,oBAAoB,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,GAAG,iBAAiB,UAAU;AACzF,wBAAkB;AAClB;AAAA,IACF;AACA,UAAM,SAAS,OAAO,OAAO,eAAe,EAAE,KAAK;AACnD,SAAK,QAAQ,MAAM,sBAAsB,KAAK,UAAU,MAAM,CAAC,EAAE;AACjE,WAAO;AAAA,EACT;AAAA,EAEA,MAAe,eAA8B;AAC3C,UAAM,MAAM,aAAa;AACzB,SAAK,KAAK,OAAO,aAAa,UAAU,KAAK,GAAG;AAC9C,WAAK,SAAS,IAAI,eAAe;AAAA,QAC/B,UAAU;AAAA,QAAM,aAAa,KAAK,OAAO;AAAA,QAAa,eAAe,KAAK,OAAO;AAAA,MACnF,CAAC;AACD,WAAK,OAAO,MAAM;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,MAAe,cAA6B;AAC1C,QAAI,KAAK,QAAQ;AACf,WAAK,OAAO,KAAK;AACjB,WAAK,SAAS;AAAA,IAChB;AACA,UAAM,MAAM,YAAY;AAAA,EAC1B;AAAA,EAEA,MAAc,eAAe,OAAqE;AAChG,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,YAAM,eAAe,MAAM,QAAQ,IAAI,MAAM,IAAI,OAAM,cAAa,MAAM,KAAK,eAAe,SAAS,CAAC,CAAC;AACzG,aAAO,aAAa,KAAK;AAAA,IAC3B;AACA,UAAM,WAAW,MAAM,KAAK,QAAQ,KAAK;AACzC,WAAO,WAAW,CAAC,SAAS,OAAO,IAAI,CAAC;AAAA,EAC1C;AAAA,EAEQ,uBAAuB,UAAqC,QAAkB;AACpF,WAAO,OAAO,QAAQ,WAAS,SAAS,KAAK,KAAK,CAAC,CAAC;AAAA,EACtD;AAAA,EAEA,MAAc,OACZ,OACA,iBACA,YACwC;AACxC,UAAM,KAAK,KAAK,YAAY,EAAE,YAAY,KAAK,KAAK,CAAC;AACrD,SAAK,QAAQ,MAAM,iBAAiB,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE;AAClE,SAAK,QAAQ,MAAM,oBAAoB,KAAK,UAAU,eAAe,CAAC,EAAE;AACxE,SAAK,QAAQ,MAAM,cAAc,KAAK,UAAU,UAAU,CAAC,EAAE;AAC7D,UAAM,UAA2D,MAAM,QAAQ;AAAA,MAC7E,OAAO,IAAI,OAAO,SAAS;AACzB,cAAM,QAAQ,KAAK,SAAS;AAC5B,cAAM,kBACF,UAAU,OACR,aACA,UAAU,QACR,CAAC,IACD,KAAK,uBAAuB,iBAAiB,MAAM,KAAK,eAAe,KAAK,CAAC;AACrF,cAAM,UAAU,kBAAkB,KAAK,GAAG;AAC1C,YAAI,SAAS;AACX,gBAAM,KAAK,KAAK,aAAa;AAAA,YAC3B,SAAS,QAAQ;AAAA,YAAS,YAAY;AAAA,YAAiB,KAAK;AAAA,UAC9D,CAAC;AACD,gBAAM,WAAW,MAAM,QAAQ,QAAQ,eAAe;AACtD,eAAK,QAAQ,MAAM,aAAa,QAAQ,EAAE,MAAM,KAAK,UAAU,QAAQ,CAAC,EAAE;AAC1E,gBAAM,KAAK,KAAK,WAAW;AAAA,YACzB,SAAS,QAAQ;AAAA,YAAS,YAAY;AAAA,YAAiB,KAAK;AAAA,YAAM,aAAa;AAAA,UACjF,CAAC;AACD,iBAAO,CAAC,QAAQ,SAAS,QAAQ;AAAA,QACnC;AACA,cAAM,UAAU,kBAAkB,KAAK,GAAG;AAC1C,YAAI,SAAS;AACX,gBAAM,KAAK,KAAK,aAAa;AAAA,YAC3B,SAAS,QAAQ;AAAA,YAAS,YAAY;AAAA,YAAiB,KAAK;AAAA,UAC9D,CAAC;AACD,gBAAM,UAAU,MAAM,QAAQ,OAAO,eAAe;AACpD,eAAK,QAAQ,MAAM,YAAY,QAAQ,EAAE,MAAM,KAAK,UAAU,OAAO,CAAC,EAAE;AACxE,gBAAM,KAAK,KAAK,WAAW;AAAA,YACzB,SAAS,QAAQ;AAAA,YAAS,YAAY;AAAA,YAAiB,KAAK;AAAA,YAAM,aAAa;AAAA,UACjF,CAAC;AACD,iBAAO,CAAC,QAAQ,SAAS,OAAO;AAAA,QAClC;AACA,cAAM,WAAW,mBAAmB,KAAK,GAAG;AAC5C,YAAI,UAAU;AACZ,gBAAM,KAAK,KAAK,aAAa;AAAA,YAC3B,SAAS,SAAS;AAAA,YAAS,YAAY;AAAA,YAAiB,KAAK;AAAA,UAC/D,CAAC;AACD,gBAAM,WAAW,MAAM,SAAS,OAAO,eAAe;AACtD,eAAK,QAAQ,MAAM,aAAa,SAAS,EAAE,MAAM,KAAK,UAAU,QAAQ,CAAC,EAAE;AAC3E,gBAAM,KAAK,KAAK,WAAW;AAAA,YACzB,SAAS,SAAS;AAAA,YAAS,YAAY;AAAA,YAAiB,KAAK;AAAA,YAAM,aAAa;AAAA,UAClF,CAAC;AACD,iBAAO,CAAC,SAAS,SAAS,QAAQ;AAAA,QACpC;AACA,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C,CAAC;AAAA,IACH;AACA,UAAM,cAA6C,CAAC;AACpD,UAAM,mBAAmB,QAAQ,OAAO,SAAS;AACjD,eAAW,UAAU,kBAAkB;AACrC,YAAM,CAAC,SAAS,QAAQ,IAAI,OAAO;AACnC,kBAAY,OAAO,MAAM,CAAC;AAC1B,kBAAY,OAAO,EAAE,KAAK,GAAG,QAAQ;AAAA,IACvC;AACA,QAAI,KAAK,aAAa;AAEpB,YAAM,SAAS,QAAQ,OAAO,QAAQ,EAAE,IAAI,YAAU,OAAO,MAAM;AACnE,UAAI,OAAO,SAAS,GAAG;AACrB,cAAM,IAAI,MAAM,4BAA4B;AAAA,MAC9C;AAAA,IACF;AACA,SAAK,QAAQ,MAAM,wBAAwB,KAAK,UAAU,WAAW,CAAC,EAAE;AACxE,UAAM,KAAK,KAAK,UAAU;AAAA,MACxB;AAAA,MAAa;AAAA,MAAY,KAAK;AAAA,IAChC,CAAC;AACD,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }
@@ -33,8 +33,10 @@ var asSentinelReportQuery = zodAsFactory(SentinelReportQueryZod, "asSentinelRepo
33
33
  var toSentinelReportQuery = zodToFactory(SentinelReportQueryZod, "toSentinelReportQuery");
34
34
 
35
35
  // src/modules/sentinel-model/typeChecks.ts
36
- var isSentinelInstance = new IsInstanceFactory().create({ report: "function" }, [isModuleInstance]);
37
- var isSentinelModule = new IsQueryableModuleFactory().create([SentinelReportQuerySchema]);
36
+ var isInstanceFactory = new IsInstanceFactory();
37
+ var isSentinelInstance = isInstanceFactory.create({ report: "function" }, [isModuleInstance]);
38
+ var isQueryableModuleFactory = new IsQueryableModuleFactory();
39
+ var isSentinelModule = isQueryableModuleFactory.create([SentinelReportQuerySchema]);
38
40
  var asSentinelModule = AsObjectFactory.create(isSentinelModule);
39
41
  var asSentinelInstance = AsObjectFactory.create(isSentinelInstance);
40
42
  var withSentinelModule = WithFactory.create(isSentinelModule);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/sentinel-model/attachable/asAttachableInstance.ts", "../../src/modules/sentinel-model/attachable/isAttachableInstance.ts", "../../src/modules/sentinel-model/typeChecks.ts", "../../src/modules/sentinel-model/Queries/Report.ts", "../../src/modules/sentinel-model/attachable/AttachableInstance.ts", "../../src/modules/sentinel-model/Automation.ts", "../../src/modules/sentinel-model/Config.ts"],
4
- "sourcesContent": ["import { AsObjectFactory } from '@ariestools/sdk'\n\nimport { isAttachableSentinelInstance } from './isAttachableInstance.ts'\n\nexport const asAttachableSentinelInstance = AsObjectFactory.create(isAttachableSentinelInstance)\n", "import type { ObjectTypeShape, TypeCheck } from '@ariestools/sdk'\nimport { IsObjectFactory } from '@ariestools/sdk'\n\nimport { isAttachableModuleInstance } from '#module-model'\n\nimport { isSentinelInstance } from '../typeChecks.ts'\nimport type { AttachableSentinelInstance } from './AttachableInstance.ts'\n\nexport const requiredAttachableSentinelInstanceFunctions: ObjectTypeShape = {}\n\n// we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsObjectFactory<AttachableSentinelInstance>()\n\nexport const isAttachableSentinelInstance: TypeCheck<AttachableSentinelInstance> = factory.create(requiredAttachableSentinelInstanceFunctions, [\n isSentinelInstance,\n isAttachableModuleInstance,\n])\n", "import { AsObjectFactory } from '@ariestools/sdk'\n\nimport {\n IsInstanceFactory, isModuleInstance, IsQueryableModuleFactory, WithFactory,\n} from '#module-model'\n\nimport type { SentinelInstance } from './Instance.ts'\nimport type { SentinelModule } from './Module.ts'\nimport { SentinelReportQuerySchema } from './Queries/index.ts'\n\nexport const isSentinelInstance = new IsInstanceFactory<SentinelInstance>().create({ report: 'function' }, [isModuleInstance])\nexport const isSentinelModule = new IsQueryableModuleFactory<SentinelModule>().create([SentinelReportQuerySchema])\n\nexport const asSentinelModule = AsObjectFactory.create(isSentinelModule)\nexport const asSentinelInstance = AsObjectFactory.create(isSentinelInstance)\n\n/** @deprecated use narrowing instead [ if(is) ] */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const withSentinelModule = WithFactory.create(isSentinelModule)\n/** @deprecated use narrowing instead [ if(is) ] */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const withSentinelInstance = WithFactory.create(isSentinelInstance)\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport {\n asSchema, PayloadZodOfSchema, QueryFieldsZod,\n} from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nexport const SentinelReportQuerySchema: 'network.xyo.query.sentinel.report' & {\n readonly __schema: true\n} = asSchema('network.xyo.query.sentinel.report', true)\nexport type SentinelReportQuerySchema = typeof SentinelReportQuerySchema\n\nexport const SentinelReportQueryZod: z.ZodMiniObject<\n & { schema: z.ZodMiniLiteral<SentinelReportQuerySchema> }\n & (typeof QueryFieldsZod)['shape'],\n z.core.$strip\n> = z.extend(PayloadZodOfSchema(SentinelReportQuerySchema), { ...QueryFieldsZod.shape })\n\nexport type SentinelReportQuery = z.infer<typeof SentinelReportQueryZod>\n\nexport const isSentinelReportQuery: ReturnType<typeof zodIsFactory<SentinelReportQuery>> = zodIsFactory(SentinelReportQueryZod)\nexport const asSentinelReportQuery: ReturnType<typeof zodAsFactory<SentinelReportQuery>> = zodAsFactory(SentinelReportQueryZod, 'asSentinelReportQuery')\nexport const toSentinelReportQuery: ReturnType<typeof zodToFactory<SentinelReportQuery>> = zodToFactory(SentinelReportQueryZod, 'toSentinelReportQuery')\n", "import type { TypeCheck } from '@ariestools/sdk'\nimport { IsObjectFactory } from '@ariestools/sdk'\n\nimport type { AttachableModuleInstance } from '#module-model'\n\nimport type { SentinelModuleEventData } from '../EventData.ts'\nimport type { SentinelInstance } from '../Instance.ts'\nimport type { SentinelModule } from '../Module.ts'\nimport type { SentinelParams } from '../Params.ts'\n\nexport interface AttachableSentinelInstance<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData = SentinelModuleEventData,\n> extends SentinelModule<TParams, TEventData>,\n AttachableModuleInstance<TParams, TEventData>,\n SentinelInstance<TParams, TEventData> {}\n\nexport type AttachableSentinelInstanceTypeCheck<T extends AttachableSentinelInstance = AttachableSentinelInstance> = TypeCheck<T>\n\nexport class IsAttachableSentinelInstanceFactory<T extends AttachableSentinelInstance = AttachableSentinelInstance> extends IsObjectFactory<T> {}\n", "import type { EventName } from '@ariestools/sdk'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk-protocol'\nimport { asSchema, PayloadZodOfSchema } from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { ModuleIdentifier } from '#module-model'\n\nexport const SentinelAutomationSchema: 'network.xyo.automation' & {\n readonly __schema: true\n} = asSchema('network.xyo.automation', true)\nexport type SentinelAutomationSchema = typeof SentinelAutomationSchema\n\nexport const SentinelIntervalAutomationSchema: 'network.xyo.automation.interval' & {\n readonly __schema: true\n} = asSchema('network.xyo.automation.interval', true)\nexport type SentinelIntervalAutomationSchema = typeof SentinelIntervalAutomationSchema\n\nexport const SentinelModuleEventAutomationSchema: 'network.xyo.automation.event.module' & {\n readonly __schema: true\n} = asSchema('network.xyo.automation.event.module', true)\nexport type SentinelModuleEventAutomationSchema = typeof SentinelModuleEventAutomationSchema\n\nexport type SentinelBaseAutomationPayload<T extends Payload> = Payload<\n {\n type?: 'interval' | 'event'\n } & T\n>\n\n/** Settings for an Interval Automation */\nexport const SentinelIntervalAutomationZod: z.ZodMiniObject<{\n end: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n frequency: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n frequencyUnits: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniLiteral<'second'>, z.ZodMiniLiteral<'minute'>, z.ZodMiniLiteral<'hour'>, z.ZodMiniLiteral<'day'>, z.ZodMiniLiteral<'millis'>]>>\n remaining: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n schema: z.ZodMiniLiteral<SentinelIntervalAutomationSchema>\n start: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n type: z.ZodMiniLiteral<'interval'>\n}, z.core.$strip> = z.extend(PayloadZodOfSchema(SentinelIntervalAutomationSchema), {\n /** Epoch after which any reoccurrence stops */\n end: z.optional(z.number()),\n /** Time between triggers [non-repeating if undefined] */\n frequency: z.optional(z.number()),\n /** Units for frequency field [hour if undefined] */\n frequencyUnits: z.optional(z.union([z.literal('second'), z.literal('minute'), z.literal('hour'), z.literal('day'), z.literal('millis')])),\n /** Remaining triggers [infinite if undefined] */\n remaining: z.optional(z.number()),\n /** Epoch of the next trigger */\n start: z.optional(z.number()),\n /** The type of automation */\n type: z.literal('interval'),\n})\n\nexport type SentinelIntervalAutomationPayload = z.infer<typeof SentinelIntervalAutomationZod>\n\nexport const isSentinelIntervalAutomation: ReturnType<typeof zodIsFactory<SentinelIntervalAutomationPayload>> = zodIsFactory(SentinelIntervalAutomationZod)\nexport const asSentinelIntervalAutomation: ReturnType<typeof zodAsFactory<SentinelIntervalAutomationPayload>> = zodAsFactory(SentinelIntervalAutomationZod, 'asSentinelIntervalAutomation')\nexport const toSentinelIntervalAutomation: ReturnType<typeof zodToFactory<SentinelIntervalAutomationPayload>> = zodToFactory(SentinelIntervalAutomationZod, 'toSentinelIntervalAutomation')\n\n/** Settings for an Module Event Automation */\nexport const SentinelModuleEventAutomationZod: z.ZodMiniObject<{\n eventName: z.ZodMiniCustom<EventName, EventName>\n schema: z.ZodMiniLiteral<SentinelModuleEventAutomationSchema>\n source: z.ZodMiniCustom<ModuleIdentifier, ModuleIdentifier>\n type: z.ZodMiniLiteral<'event'>\n}, z.core.$strip> = z.extend(PayloadZodOfSchema(SentinelModuleEventAutomationSchema), {\n eventName: z.custom<EventName>(),\n source: z.custom<ModuleIdentifier>(),\n type: z.literal('event'),\n})\n\nexport type SentinelModuleEventAutomationPayload = z.infer<typeof SentinelModuleEventAutomationZod>\n\nexport const isSentinelModuleEventAutomation: ReturnType<typeof zodIsFactory<SentinelModuleEventAutomationPayload>> = zodIsFactory(SentinelModuleEventAutomationZod)\nexport const asSentinelModuleEventAutomation: ReturnType<typeof zodAsFactory<SentinelModuleEventAutomationPayload>> = zodAsFactory(SentinelModuleEventAutomationZod, 'asSentinelModuleEventAutomation')\nexport const toSentinelModuleEventAutomation: ReturnType<typeof zodToFactory<SentinelModuleEventAutomationPayload>> = zodToFactory(SentinelModuleEventAutomationZod, 'toSentinelModuleEventAutomation')\n\n/** Settings for an Automation */\nexport type SentinelAutomationPayload = Payload<\n SentinelIntervalAutomationPayload | SentinelModuleEventAutomationPayload,\n SentinelAutomationSchema | SentinelIntervalAutomationSchema | SentinelModuleEventAutomationSchema\n>\n", "import type { WithAdditional } from '@ariestools/sdk'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport {\n asSchema, type Payload, type Schema,\n} from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { ModuleConfig } from '#module-model'\nimport { ModuleConfigZod } from '#module-model'\n\nimport type { SentinelAutomationPayload } from './Automation.ts'\nimport type { Task } from './Task.ts'\n\nexport const SentinelConfigSchema: 'network.xyo.sentinel.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.sentinel.config', true)\nexport type SentinelConfigSchema = typeof SentinelConfigSchema\n\nexport const SentinelConfigZod: z.ZodMiniObject<\n & Omit<(typeof ModuleConfigZod)['shape'], 'schema'>\n & { schema: z.ZodMiniLiteral<SentinelConfigSchema> }\n & {\n automations: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniCustom<SentinelAutomationPayload, SentinelAutomationPayload>>>\n synchronous: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>\n tasks: z.ZodMiniArray<z.ZodMiniCustom<Task, Task>>\n throwErrors: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>\n },\n z.core.$strip\n> = z.extend(ModuleConfigZod, {\n schema: z.literal(SentinelConfigSchema),\n automations: z.optional(z.array(z.custom<SentinelAutomationPayload>())),\n synchronous: z.optional(z.boolean()),\n tasks: z.array(z.custom<Task>()),\n throwErrors: z.optional(z.boolean()),\n})\n\nexport type SentinelConfigBase = z.infer<typeof SentinelConfigZod>\n\nexport const isSentinelConfig: ReturnType<typeof zodIsFactory<SentinelConfigBase>> = zodIsFactory(SentinelConfigZod)\nexport const asSentinelConfig: ReturnType<typeof zodAsFactory<SentinelConfigBase>> = zodAsFactory(SentinelConfigZod, 'asSentinelConfig')\nexport const toSentinelConfig: ReturnType<typeof zodToFactory<SentinelConfigBase>> = zodToFactory(SentinelConfigZod, 'toSentinelConfig')\n\nexport type SentinelConfig<TConfig extends Payload | void = void, TSchema extends Schema | void = void> = ModuleConfig<\n WithAdditional<\n {\n automations?: SentinelAutomationPayload[]\n schema: TConfig extends Payload ? TConfig['schema'] : SentinelConfigSchema\n synchronous?: boolean\n tasks: Task[]\n throwErrors?: boolean\n },\n TConfig\n >,\n TSchema\n>\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { AsObjectFactory } from '@ariestools/sdk'\n\nimport { isAttachableSentinelInstance } from './isAttachableInstance.ts'\n\nexport const asAttachableSentinelInstance = AsObjectFactory.create(isAttachableSentinelInstance)\n", "import type { ObjectTypeShape, TypeCheck } from '@ariestools/sdk'\nimport { IsObjectFactory } from '@ariestools/sdk'\n\nimport { isAttachableModuleInstance } from '#module-model'\n\nimport { isSentinelInstance } from '../typeChecks.ts'\nimport type { AttachableSentinelInstance } from './AttachableInstance.ts'\n\nexport const requiredAttachableSentinelInstanceFunctions: ObjectTypeShape = {}\n\n// we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsObjectFactory<AttachableSentinelInstance>()\n\nexport const isAttachableSentinelInstance: TypeCheck<AttachableSentinelInstance> = factory.create(requiredAttachableSentinelInstanceFunctions, [\n isSentinelInstance,\n isAttachableModuleInstance,\n])\n", "import { AsObjectFactory } from '@ariestools/sdk'\n\nimport {\n IsInstanceFactory, isModuleInstance, IsQueryableModuleFactory, WithFactory,\n} from '#module-model'\n\nimport type { SentinelInstance } from './Instance.ts'\nimport type { SentinelModule } from './Module.ts'\nimport { SentinelReportQuerySchema } from './Queries/index.ts'\n\nconst isInstanceFactory = new IsInstanceFactory<SentinelInstance>()\nexport const isSentinelInstance = isInstanceFactory.create({ report: 'function' }, [isModuleInstance])\nconst isQueryableModuleFactory = new IsQueryableModuleFactory<SentinelModule>()\nexport const isSentinelModule = isQueryableModuleFactory.create([SentinelReportQuerySchema])\n\nexport const asSentinelModule = AsObjectFactory.create(isSentinelModule)\nexport const asSentinelInstance = AsObjectFactory.create(isSentinelInstance)\n\n/** @deprecated use narrowing instead [ if(is) ] */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const withSentinelModule = WithFactory.create(isSentinelModule)\n/** @deprecated use narrowing instead [ if(is) ] */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport const withSentinelInstance = WithFactory.create(isSentinelInstance)\n", "import {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport {\n asSchema, PayloadZodOfSchema, QueryFieldsZod,\n} from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nexport const SentinelReportQuerySchema: 'network.xyo.query.sentinel.report' & {\n readonly __schema: true\n} = asSchema('network.xyo.query.sentinel.report', true)\nexport type SentinelReportQuerySchema = typeof SentinelReportQuerySchema\n\nexport const SentinelReportQueryZod: z.ZodMiniObject<\n & { schema: z.ZodMiniLiteral<SentinelReportQuerySchema> }\n & (typeof QueryFieldsZod)['shape'],\n z.core.$strip\n> = z.extend(PayloadZodOfSchema(SentinelReportQuerySchema), { ...QueryFieldsZod.shape })\n\nexport type SentinelReportQuery = z.infer<typeof SentinelReportQueryZod>\n\nexport const isSentinelReportQuery: ReturnType<typeof zodIsFactory<SentinelReportQuery>> = zodIsFactory(SentinelReportQueryZod)\nexport const asSentinelReportQuery: ReturnType<typeof zodAsFactory<SentinelReportQuery>> = zodAsFactory(SentinelReportQueryZod, 'asSentinelReportQuery')\nexport const toSentinelReportQuery: ReturnType<typeof zodToFactory<SentinelReportQuery>> = zodToFactory(SentinelReportQueryZod, 'toSentinelReportQuery')\n", "import type { TypeCheck } from '@ariestools/sdk'\nimport { IsObjectFactory } from '@ariestools/sdk'\n\nimport type { AttachableModuleInstance } from '#module-model'\n\nimport type { SentinelModuleEventData } from '../EventData.ts'\nimport type { SentinelInstance } from '../Instance.ts'\nimport type { SentinelModule } from '../Module.ts'\nimport type { SentinelParams } from '../Params.ts'\n\nexport interface AttachableSentinelInstance<\n TParams extends SentinelParams = SentinelParams,\n TEventData extends SentinelModuleEventData = SentinelModuleEventData,\n> extends SentinelModule<TParams, TEventData>,\n AttachableModuleInstance<TParams, TEventData>,\n SentinelInstance<TParams, TEventData> {}\n\nexport type AttachableSentinelInstanceTypeCheck<T extends AttachableSentinelInstance = AttachableSentinelInstance> = TypeCheck<T>\n\nexport class IsAttachableSentinelInstanceFactory<T extends AttachableSentinelInstance = AttachableSentinelInstance> extends IsObjectFactory<T> {}\n", "import type { EventName } from '@ariestools/sdk'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk-protocol'\nimport { asSchema, PayloadZodOfSchema } from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { ModuleIdentifier } from '#module-model'\n\nexport const SentinelAutomationSchema: 'network.xyo.automation' & {\n readonly __schema: true\n} = asSchema('network.xyo.automation', true)\nexport type SentinelAutomationSchema = typeof SentinelAutomationSchema\n\nexport const SentinelIntervalAutomationSchema: 'network.xyo.automation.interval' & {\n readonly __schema: true\n} = asSchema('network.xyo.automation.interval', true)\nexport type SentinelIntervalAutomationSchema = typeof SentinelIntervalAutomationSchema\n\nexport const SentinelModuleEventAutomationSchema: 'network.xyo.automation.event.module' & {\n readonly __schema: true\n} = asSchema('network.xyo.automation.event.module', true)\nexport type SentinelModuleEventAutomationSchema = typeof SentinelModuleEventAutomationSchema\n\nexport type SentinelBaseAutomationPayload<T extends Payload> = Payload<\n {\n type?: 'interval' | 'event'\n } & T\n>\n\n/** Settings for an Interval Automation */\nexport const SentinelIntervalAutomationZod: z.ZodMiniObject<{\n end: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n frequency: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n frequencyUnits: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniLiteral<'second'>, z.ZodMiniLiteral<'minute'>, z.ZodMiniLiteral<'hour'>, z.ZodMiniLiteral<'day'>, z.ZodMiniLiteral<'millis'>]>>\n remaining: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n schema: z.ZodMiniLiteral<SentinelIntervalAutomationSchema>\n start: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n type: z.ZodMiniLiteral<'interval'>\n}, z.core.$strip> = z.extend(PayloadZodOfSchema(SentinelIntervalAutomationSchema), {\n /** Epoch after which any reoccurrence stops */\n end: z.optional(z.number()),\n /** Time between triggers [non-repeating if undefined] */\n frequency: z.optional(z.number()),\n /** Units for frequency field [hour if undefined] */\n frequencyUnits: z.optional(z.union([z.literal('second'), z.literal('minute'), z.literal('hour'), z.literal('day'), z.literal('millis')])),\n /** Remaining triggers [infinite if undefined] */\n remaining: z.optional(z.number()),\n /** Epoch of the next trigger */\n start: z.optional(z.number()),\n /** The type of automation */\n type: z.literal('interval'),\n})\n\nexport type SentinelIntervalAutomationPayload = z.infer<typeof SentinelIntervalAutomationZod>\n\nexport const isSentinelIntervalAutomation: ReturnType<typeof zodIsFactory<SentinelIntervalAutomationPayload>> = zodIsFactory(SentinelIntervalAutomationZod)\nexport const asSentinelIntervalAutomation: ReturnType<typeof zodAsFactory<SentinelIntervalAutomationPayload>> = zodAsFactory(SentinelIntervalAutomationZod, 'asSentinelIntervalAutomation')\nexport const toSentinelIntervalAutomation: ReturnType<typeof zodToFactory<SentinelIntervalAutomationPayload>> = zodToFactory(SentinelIntervalAutomationZod, 'toSentinelIntervalAutomation')\n\n/** Settings for an Module Event Automation */\nexport const SentinelModuleEventAutomationZod: z.ZodMiniObject<{\n eventName: z.ZodMiniCustom<EventName, EventName>\n schema: z.ZodMiniLiteral<SentinelModuleEventAutomationSchema>\n source: z.ZodMiniCustom<ModuleIdentifier, ModuleIdentifier>\n type: z.ZodMiniLiteral<'event'>\n}, z.core.$strip> = z.extend(PayloadZodOfSchema(SentinelModuleEventAutomationSchema), {\n eventName: z.custom<EventName>(),\n source: z.custom<ModuleIdentifier>(),\n type: z.literal('event'),\n})\n\nexport type SentinelModuleEventAutomationPayload = z.infer<typeof SentinelModuleEventAutomationZod>\n\nexport const isSentinelModuleEventAutomation: ReturnType<typeof zodIsFactory<SentinelModuleEventAutomationPayload>> = zodIsFactory(SentinelModuleEventAutomationZod)\nexport const asSentinelModuleEventAutomation: ReturnType<typeof zodAsFactory<SentinelModuleEventAutomationPayload>> = zodAsFactory(SentinelModuleEventAutomationZod, 'asSentinelModuleEventAutomation')\nexport const toSentinelModuleEventAutomation: ReturnType<typeof zodToFactory<SentinelModuleEventAutomationPayload>> = zodToFactory(SentinelModuleEventAutomationZod, 'toSentinelModuleEventAutomation')\n\n/** Settings for an Automation */\nexport type SentinelAutomationPayload = Payload<\n SentinelIntervalAutomationPayload | SentinelModuleEventAutomationPayload,\n SentinelAutomationSchema | SentinelIntervalAutomationSchema | SentinelModuleEventAutomationSchema\n>\n", "import type { WithAdditional } from '@ariestools/sdk'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport {\n asSchema, type Payload, type Schema,\n} from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { ModuleConfig } from '#module-model'\nimport { ModuleConfigZod } from '#module-model'\n\nimport type { SentinelAutomationPayload } from './Automation.ts'\nimport type { Task } from './Task.ts'\n\nexport const SentinelConfigSchema: 'network.xyo.sentinel.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.sentinel.config', true)\nexport type SentinelConfigSchema = typeof SentinelConfigSchema\n\nexport const SentinelConfigZod: z.ZodMiniObject<\n & Omit<(typeof ModuleConfigZod)['shape'], 'schema'>\n & { schema: z.ZodMiniLiteral<SentinelConfigSchema> }\n & {\n automations: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniCustom<SentinelAutomationPayload, SentinelAutomationPayload>>>\n synchronous: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>\n tasks: z.ZodMiniArray<z.ZodMiniCustom<Task, Task>>\n throwErrors: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>\n },\n z.core.$strip\n> = z.extend(ModuleConfigZod, {\n schema: z.literal(SentinelConfigSchema),\n automations: z.optional(z.array(z.custom<SentinelAutomationPayload>())),\n synchronous: z.optional(z.boolean()),\n tasks: z.array(z.custom<Task>()),\n throwErrors: z.optional(z.boolean()),\n})\n\nexport type SentinelConfigBase = z.infer<typeof SentinelConfigZod>\n\nexport const isSentinelConfig: ReturnType<typeof zodIsFactory<SentinelConfigBase>> = zodIsFactory(SentinelConfigZod)\nexport const asSentinelConfig: ReturnType<typeof zodAsFactory<SentinelConfigBase>> = zodAsFactory(SentinelConfigZod, 'asSentinelConfig')\nexport const toSentinelConfig: ReturnType<typeof zodToFactory<SentinelConfigBase>> = zodToFactory(SentinelConfigZod, 'toSentinelConfig')\n\nexport type SentinelConfig<TConfig extends Payload | void = void, TSchema extends Schema | void = void> = ModuleConfig<\n WithAdditional<\n {\n automations?: SentinelAutomationPayload[]\n schema: TConfig extends Payload ? TConfig['schema'] : SentinelConfigSchema\n synchronous?: boolean\n tasks: Task[]\n throwErrors?: boolean\n },\n TConfig\n >,\n TSchema\n>\n"],
5
+ "mappings": "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",
6
6
  "names": ["AsObjectFactory", "AsObjectFactory", "IsObjectFactory", "zodAsFactory", "zodIsFactory", "zodToFactory", "asSchema", "PayloadZodOfSchema", "z", "zodAsFactory", "zodIsFactory", "zodToFactory", "asSchema", "z"]
7
7
  }