@xyo-network/module-model 2.93.3 → 2.93.5

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 (275) hide show
  1. package/dist/browser/CreatableModule/CreatableModule.d.cts +7 -7
  2. package/dist/browser/CreatableModule/CreatableModule.d.cts.map +1 -1
  3. package/dist/browser/CreatableModule/CreatableModule.d.mts +7 -7
  4. package/dist/browser/CreatableModule/CreatableModule.d.mts.map +1 -1
  5. package/dist/browser/CreatableModule/CreatableModule.d.ts +7 -7
  6. package/dist/browser/CreatableModule/CreatableModule.d.ts.map +1 -1
  7. package/dist/browser/CreatableModule/LabeledCreatableModuleFactory.d.cts +5 -3
  8. package/dist/browser/CreatableModule/LabeledCreatableModuleFactory.d.cts.map +1 -1
  9. package/dist/browser/CreatableModule/LabeledCreatableModuleFactory.d.mts +5 -3
  10. package/dist/browser/CreatableModule/LabeledCreatableModuleFactory.d.mts.map +1 -1
  11. package/dist/browser/CreatableModule/LabeledCreatableModuleFactory.d.ts +5 -3
  12. package/dist/browser/CreatableModule/LabeledCreatableModuleFactory.d.ts.map +1 -1
  13. package/dist/browser/CreatableModule/ModuleFactory.d.cts +5 -5
  14. package/dist/browser/CreatableModule/ModuleFactory.d.cts.map +1 -1
  15. package/dist/browser/CreatableModule/ModuleFactory.d.mts +5 -5
  16. package/dist/browser/CreatableModule/ModuleFactory.d.mts.map +1 -1
  17. package/dist/browser/CreatableModule/ModuleFactory.d.ts +5 -5
  18. package/dist/browser/CreatableModule/ModuleFactory.d.ts.map +1 -1
  19. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.cts +2 -2
  20. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.cts.map +1 -1
  21. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.mts +2 -2
  22. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.mts.map +1 -1
  23. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.ts +2 -2
  24. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.ts.map +1 -1
  25. package/dist/browser/ModuleIdentifierTransformer.d.cts +7 -0
  26. package/dist/browser/ModuleIdentifierTransformer.d.cts.map +1 -0
  27. package/dist/browser/ModuleIdentifierTransformer.d.mts +7 -0
  28. package/dist/browser/ModuleIdentifierTransformer.d.mts.map +1 -0
  29. package/dist/browser/ModuleIdentifierTransformer.d.ts +7 -0
  30. package/dist/browser/ModuleIdentifierTransformer.d.ts.map +1 -0
  31. package/dist/browser/ModuleParams.d.cts +3 -0
  32. package/dist/browser/ModuleParams.d.cts.map +1 -1
  33. package/dist/browser/ModuleParams.d.mts +3 -0
  34. package/dist/browser/ModuleParams.d.mts.map +1 -1
  35. package/dist/browser/ModuleParams.d.ts +3 -0
  36. package/dist/browser/ModuleParams.d.ts.map +1 -1
  37. package/dist/browser/index.cjs +46 -17
  38. package/dist/browser/index.cjs.map +1 -1
  39. package/dist/browser/index.d.cts +1 -0
  40. package/dist/browser/index.d.cts.map +1 -1
  41. package/dist/browser/index.d.mts +1 -0
  42. package/dist/browser/index.d.mts.map +1 -1
  43. package/dist/browser/index.d.ts +1 -0
  44. package/dist/browser/index.d.ts.map +1 -1
  45. package/dist/browser/index.js +45 -16
  46. package/dist/browser/index.js.map +1 -1
  47. package/dist/browser/instance/Instance.d.cts +1 -3
  48. package/dist/browser/instance/Instance.d.cts.map +1 -1
  49. package/dist/browser/instance/Instance.d.mts +1 -3
  50. package/dist/browser/instance/Instance.d.mts.map +1 -1
  51. package/dist/browser/instance/Instance.d.ts +1 -3
  52. package/dist/browser/instance/Instance.d.ts.map +1 -1
  53. package/dist/browser/instance/ModuleFilter.d.cts +6 -0
  54. package/dist/browser/instance/ModuleFilter.d.cts.map +1 -1
  55. package/dist/browser/instance/ModuleFilter.d.mts +6 -0
  56. package/dist/browser/instance/ModuleFilter.d.mts.map +1 -1
  57. package/dist/browser/instance/ModuleFilter.d.ts +6 -0
  58. package/dist/browser/instance/ModuleFilter.d.ts.map +1 -1
  59. package/dist/browser/instance/ModuleResolver.d.cts +10 -1
  60. package/dist/browser/instance/ModuleResolver.d.cts.map +1 -1
  61. package/dist/browser/instance/ModuleResolver.d.mts +10 -1
  62. package/dist/browser/instance/ModuleResolver.d.mts.map +1 -1
  63. package/dist/browser/instance/ModuleResolver.d.ts +10 -1
  64. package/dist/browser/instance/ModuleResolver.d.ts.map +1 -1
  65. package/dist/browser/instance/asModuleInstance.d.cts +6 -0
  66. package/dist/browser/instance/asModuleInstance.d.cts.map +1 -1
  67. package/dist/browser/instance/asModuleInstance.d.mts +6 -0
  68. package/dist/browser/instance/asModuleInstance.d.mts.map +1 -1
  69. package/dist/browser/instance/asModuleInstance.d.ts +6 -0
  70. package/dist/browser/instance/asModuleInstance.d.ts.map +1 -1
  71. package/dist/browser/instance/attachable/AttachableInstance.d.cts +13 -0
  72. package/dist/browser/instance/attachable/AttachableInstance.d.cts.map +1 -0
  73. package/dist/browser/instance/attachable/AttachableInstance.d.mts +13 -0
  74. package/dist/browser/instance/attachable/AttachableInstance.d.mts.map +1 -0
  75. package/dist/browser/instance/attachable/AttachableInstance.d.ts +13 -0
  76. package/dist/browser/instance/attachable/AttachableInstance.d.ts.map +1 -0
  77. package/dist/browser/instance/attachable/asAttachableInstance.d.cts +35 -0
  78. package/dist/browser/instance/attachable/asAttachableInstance.d.cts.map +1 -0
  79. package/dist/browser/instance/attachable/asAttachableInstance.d.mts +35 -0
  80. package/dist/browser/instance/attachable/asAttachableInstance.d.mts.map +1 -0
  81. package/dist/browser/instance/attachable/asAttachableInstance.d.ts +35 -0
  82. package/dist/browser/instance/attachable/asAttachableInstance.d.ts.map +1 -0
  83. package/dist/browser/instance/attachable/index.d.cts +4 -0
  84. package/dist/browser/instance/attachable/index.d.cts.map +1 -0
  85. package/dist/browser/instance/attachable/index.d.mts +4 -0
  86. package/dist/browser/instance/attachable/index.d.mts.map +1 -0
  87. package/dist/browser/instance/attachable/index.d.ts +4 -0
  88. package/dist/browser/instance/attachable/index.d.ts.map +1 -0
  89. package/dist/browser/instance/attachable/isAttachableInstance.d.cts +5 -0
  90. package/dist/browser/instance/attachable/isAttachableInstance.d.cts.map +1 -0
  91. package/dist/browser/instance/attachable/isAttachableInstance.d.mts +5 -0
  92. package/dist/browser/instance/attachable/isAttachableInstance.d.mts.map +1 -0
  93. package/dist/browser/instance/attachable/isAttachableInstance.d.ts +5 -0
  94. package/dist/browser/instance/attachable/isAttachableInstance.d.ts.map +1 -0
  95. package/dist/browser/instance/index.d.cts +1 -0
  96. package/dist/browser/instance/index.d.cts.map +1 -1
  97. package/dist/browser/instance/index.d.mts +1 -0
  98. package/dist/browser/instance/index.d.mts.map +1 -1
  99. package/dist/browser/instance/index.d.ts +1 -0
  100. package/dist/browser/instance/index.d.ts.map +1 -1
  101. package/dist/browser/lib/duplicateModules.d.cts +2 -0
  102. package/dist/browser/lib/duplicateModules.d.cts.map +1 -1
  103. package/dist/browser/lib/duplicateModules.d.mts +2 -0
  104. package/dist/browser/lib/duplicateModules.d.mts.map +1 -1
  105. package/dist/browser/lib/duplicateModules.d.ts +2 -0
  106. package/dist/browser/lib/duplicateModules.d.ts.map +1 -1
  107. package/dist/browser/module/asModule.d.cts +6 -0
  108. package/dist/browser/module/asModule.d.cts.map +1 -1
  109. package/dist/browser/module/asModule.d.mts +6 -0
  110. package/dist/browser/module/asModule.d.mts.map +1 -1
  111. package/dist/browser/module/asModule.d.ts +6 -0
  112. package/dist/browser/module/asModule.d.ts.map +1 -1
  113. package/dist/browser/module/asModuleObject.d.cts +6 -0
  114. package/dist/browser/module/asModuleObject.d.cts.map +1 -1
  115. package/dist/browser/module/asModuleObject.d.mts +6 -0
  116. package/dist/browser/module/asModuleObject.d.mts.map +1 -1
  117. package/dist/browser/module/asModuleObject.d.ts +6 -0
  118. package/dist/browser/module/asModuleObject.d.ts.map +1 -1
  119. package/dist/browser/module/isModuleObject.d.cts +2 -0
  120. package/dist/browser/module/isModuleObject.d.cts.map +1 -1
  121. package/dist/browser/module/isModuleObject.d.mts +2 -0
  122. package/dist/browser/module/isModuleObject.d.mts.map +1 -1
  123. package/dist/browser/module/isModuleObject.d.ts +2 -0
  124. package/dist/browser/module/isModuleObject.d.ts.map +1 -1
  125. package/dist/browser/withModule.d.cts +4 -0
  126. package/dist/browser/withModule.d.cts.map +1 -1
  127. package/dist/browser/withModule.d.mts +4 -0
  128. package/dist/browser/withModule.d.mts.map +1 -1
  129. package/dist/browser/withModule.d.ts +4 -0
  130. package/dist/browser/withModule.d.ts.map +1 -1
  131. package/dist/node/CreatableModule/CreatableModule.d.cts +7 -7
  132. package/dist/node/CreatableModule/CreatableModule.d.cts.map +1 -1
  133. package/dist/node/CreatableModule/CreatableModule.d.mts +7 -7
  134. package/dist/node/CreatableModule/CreatableModule.d.mts.map +1 -1
  135. package/dist/node/CreatableModule/CreatableModule.d.ts +7 -7
  136. package/dist/node/CreatableModule/CreatableModule.d.ts.map +1 -1
  137. package/dist/node/CreatableModule/LabeledCreatableModuleFactory.d.cts +5 -3
  138. package/dist/node/CreatableModule/LabeledCreatableModuleFactory.d.cts.map +1 -1
  139. package/dist/node/CreatableModule/LabeledCreatableModuleFactory.d.mts +5 -3
  140. package/dist/node/CreatableModule/LabeledCreatableModuleFactory.d.mts.map +1 -1
  141. package/dist/node/CreatableModule/LabeledCreatableModuleFactory.d.ts +5 -3
  142. package/dist/node/CreatableModule/LabeledCreatableModuleFactory.d.ts.map +1 -1
  143. package/dist/node/CreatableModule/ModuleFactory.d.cts +5 -5
  144. package/dist/node/CreatableModule/ModuleFactory.d.cts.map +1 -1
  145. package/dist/node/CreatableModule/ModuleFactory.d.mts +5 -5
  146. package/dist/node/CreatableModule/ModuleFactory.d.mts.map +1 -1
  147. package/dist/node/CreatableModule/ModuleFactory.d.ts +5 -5
  148. package/dist/node/CreatableModule/ModuleFactory.d.ts.map +1 -1
  149. package/dist/node/CreatableModule/ModuleFactoryLocator.d.cts +2 -2
  150. package/dist/node/CreatableModule/ModuleFactoryLocator.d.cts.map +1 -1
  151. package/dist/node/CreatableModule/ModuleFactoryLocator.d.mts +2 -2
  152. package/dist/node/CreatableModule/ModuleFactoryLocator.d.mts.map +1 -1
  153. package/dist/node/CreatableModule/ModuleFactoryLocator.d.ts +2 -2
  154. package/dist/node/CreatableModule/ModuleFactoryLocator.d.ts.map +1 -1
  155. package/dist/node/ModuleIdentifierTransformer.d.cts +7 -0
  156. package/dist/node/ModuleIdentifierTransformer.d.cts.map +1 -0
  157. package/dist/node/ModuleIdentifierTransformer.d.mts +7 -0
  158. package/dist/node/ModuleIdentifierTransformer.d.mts.map +1 -0
  159. package/dist/node/ModuleIdentifierTransformer.d.ts +7 -0
  160. package/dist/node/ModuleIdentifierTransformer.d.ts.map +1 -0
  161. package/dist/node/ModuleParams.d.cts +3 -0
  162. package/dist/node/ModuleParams.d.cts.map +1 -1
  163. package/dist/node/ModuleParams.d.mts +3 -0
  164. package/dist/node/ModuleParams.d.mts.map +1 -1
  165. package/dist/node/ModuleParams.d.ts +3 -0
  166. package/dist/node/ModuleParams.d.ts.map +1 -1
  167. package/dist/node/index.cjs +49 -17
  168. package/dist/node/index.cjs.map +1 -1
  169. package/dist/node/index.d.cts +1 -0
  170. package/dist/node/index.d.cts.map +1 -1
  171. package/dist/node/index.d.mts +1 -0
  172. package/dist/node/index.d.mts.map +1 -1
  173. package/dist/node/index.d.ts +1 -0
  174. package/dist/node/index.d.ts.map +1 -1
  175. package/dist/node/index.js +44 -16
  176. package/dist/node/index.js.map +1 -1
  177. package/dist/node/instance/Instance.d.cts +1 -3
  178. package/dist/node/instance/Instance.d.cts.map +1 -1
  179. package/dist/node/instance/Instance.d.mts +1 -3
  180. package/dist/node/instance/Instance.d.mts.map +1 -1
  181. package/dist/node/instance/Instance.d.ts +1 -3
  182. package/dist/node/instance/Instance.d.ts.map +1 -1
  183. package/dist/node/instance/ModuleFilter.d.cts +6 -0
  184. package/dist/node/instance/ModuleFilter.d.cts.map +1 -1
  185. package/dist/node/instance/ModuleFilter.d.mts +6 -0
  186. package/dist/node/instance/ModuleFilter.d.mts.map +1 -1
  187. package/dist/node/instance/ModuleFilter.d.ts +6 -0
  188. package/dist/node/instance/ModuleFilter.d.ts.map +1 -1
  189. package/dist/node/instance/ModuleResolver.d.cts +10 -1
  190. package/dist/node/instance/ModuleResolver.d.cts.map +1 -1
  191. package/dist/node/instance/ModuleResolver.d.mts +10 -1
  192. package/dist/node/instance/ModuleResolver.d.mts.map +1 -1
  193. package/dist/node/instance/ModuleResolver.d.ts +10 -1
  194. package/dist/node/instance/ModuleResolver.d.ts.map +1 -1
  195. package/dist/node/instance/asModuleInstance.d.cts +6 -0
  196. package/dist/node/instance/asModuleInstance.d.cts.map +1 -1
  197. package/dist/node/instance/asModuleInstance.d.mts +6 -0
  198. package/dist/node/instance/asModuleInstance.d.mts.map +1 -1
  199. package/dist/node/instance/asModuleInstance.d.ts +6 -0
  200. package/dist/node/instance/asModuleInstance.d.ts.map +1 -1
  201. package/dist/node/instance/attachable/AttachableInstance.d.cts +13 -0
  202. package/dist/node/instance/attachable/AttachableInstance.d.cts.map +1 -0
  203. package/dist/node/instance/attachable/AttachableInstance.d.mts +13 -0
  204. package/dist/node/instance/attachable/AttachableInstance.d.mts.map +1 -0
  205. package/dist/node/instance/attachable/AttachableInstance.d.ts +13 -0
  206. package/dist/node/instance/attachable/AttachableInstance.d.ts.map +1 -0
  207. package/dist/node/instance/attachable/asAttachableInstance.d.cts +35 -0
  208. package/dist/node/instance/attachable/asAttachableInstance.d.cts.map +1 -0
  209. package/dist/node/instance/attachable/asAttachableInstance.d.mts +35 -0
  210. package/dist/node/instance/attachable/asAttachableInstance.d.mts.map +1 -0
  211. package/dist/node/instance/attachable/asAttachableInstance.d.ts +35 -0
  212. package/dist/node/instance/attachable/asAttachableInstance.d.ts.map +1 -0
  213. package/dist/node/instance/attachable/index.d.cts +4 -0
  214. package/dist/node/instance/attachable/index.d.cts.map +1 -0
  215. package/dist/node/instance/attachable/index.d.mts +4 -0
  216. package/dist/node/instance/attachable/index.d.mts.map +1 -0
  217. package/dist/node/instance/attachable/index.d.ts +4 -0
  218. package/dist/node/instance/attachable/index.d.ts.map +1 -0
  219. package/dist/node/instance/attachable/isAttachableInstance.d.cts +5 -0
  220. package/dist/node/instance/attachable/isAttachableInstance.d.cts.map +1 -0
  221. package/dist/node/instance/attachable/isAttachableInstance.d.mts +5 -0
  222. package/dist/node/instance/attachable/isAttachableInstance.d.mts.map +1 -0
  223. package/dist/node/instance/attachable/isAttachableInstance.d.ts +5 -0
  224. package/dist/node/instance/attachable/isAttachableInstance.d.ts.map +1 -0
  225. package/dist/node/instance/index.d.cts +1 -0
  226. package/dist/node/instance/index.d.cts.map +1 -1
  227. package/dist/node/instance/index.d.mts +1 -0
  228. package/dist/node/instance/index.d.mts.map +1 -1
  229. package/dist/node/instance/index.d.ts +1 -0
  230. package/dist/node/instance/index.d.ts.map +1 -1
  231. package/dist/node/lib/duplicateModules.d.cts +2 -0
  232. package/dist/node/lib/duplicateModules.d.cts.map +1 -1
  233. package/dist/node/lib/duplicateModules.d.mts +2 -0
  234. package/dist/node/lib/duplicateModules.d.mts.map +1 -1
  235. package/dist/node/lib/duplicateModules.d.ts +2 -0
  236. package/dist/node/lib/duplicateModules.d.ts.map +1 -1
  237. package/dist/node/module/asModule.d.cts +6 -0
  238. package/dist/node/module/asModule.d.cts.map +1 -1
  239. package/dist/node/module/asModule.d.mts +6 -0
  240. package/dist/node/module/asModule.d.mts.map +1 -1
  241. package/dist/node/module/asModule.d.ts +6 -0
  242. package/dist/node/module/asModule.d.ts.map +1 -1
  243. package/dist/node/module/asModuleObject.d.cts +6 -0
  244. package/dist/node/module/asModuleObject.d.cts.map +1 -1
  245. package/dist/node/module/asModuleObject.d.mts +6 -0
  246. package/dist/node/module/asModuleObject.d.mts.map +1 -1
  247. package/dist/node/module/asModuleObject.d.ts +6 -0
  248. package/dist/node/module/asModuleObject.d.ts.map +1 -1
  249. package/dist/node/module/isModuleObject.d.cts +2 -0
  250. package/dist/node/module/isModuleObject.d.cts.map +1 -1
  251. package/dist/node/module/isModuleObject.d.mts +2 -0
  252. package/dist/node/module/isModuleObject.d.mts.map +1 -1
  253. package/dist/node/module/isModuleObject.d.ts +2 -0
  254. package/dist/node/module/isModuleObject.d.ts.map +1 -1
  255. package/dist/node/withModule.d.cts +4 -0
  256. package/dist/node/withModule.d.cts.map +1 -1
  257. package/dist/node/withModule.d.mts +4 -0
  258. package/dist/node/withModule.d.mts.map +1 -1
  259. package/dist/node/withModule.d.ts +4 -0
  260. package/dist/node/withModule.d.ts.map +1 -1
  261. package/package.json +7 -7
  262. package/src/CreatableModule/CreatableModule.ts +10 -7
  263. package/src/CreatableModule/LabeledCreatableModuleFactory.ts +3 -2
  264. package/src/CreatableModule/ModuleFactory.ts +5 -5
  265. package/src/CreatableModule/ModuleFactoryLocator.ts +2 -2
  266. package/src/ModuleIdentifierTransformer.ts +9 -0
  267. package/src/ModuleParams.ts +3 -0
  268. package/src/index.ts +1 -0
  269. package/src/instance/Instance.ts +1 -8
  270. package/src/instance/ModuleResolver.ts +10 -1
  271. package/src/instance/attachable/AttachableInstance.ts +20 -0
  272. package/src/instance/attachable/asAttachableInstance.ts +5 -0
  273. package/src/instance/attachable/index.ts +3 -0
  274. package/src/instance/attachable/isAttachableInstance.ts +16 -0
  275. package/src/instance/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Config/Config.ts","../../src/CreatableModule/CreatableModule.ts","../../src/CreatableModule/CreatableModuleRegistry.ts","../../src/CreatableModule/LabeledCreatableModuleFactory.ts","../../src/CreatableModule/ModuleFactory.ts","../../src/CreatableModule/ModuleFactoryLocator.ts","../../src/Labels/Labels.ts","../../src/instance/asModuleInstance.ts","../../src/instance/isModuleInstance.ts","../../src/module/asModule.ts","../../src/Queries/Describe/Payload.ts","../../src/Queries/Describe/Query.ts","../../src/Queries/Discover.ts","../../src/Queries/Manifest.ts","../../src/Queries/ModuleAddress/Payload.ts","../../src/Queries/ModuleAddress/Query.ts","../../src/Queries/State.ts","../../src/Queries/Subscribe.ts","../../src/module/asModuleObject.ts","../../src/module/isModuleObject.ts","../../src/module/IsModuleFactory.ts","../../src/module/isModule.ts","../../src/instance/Instance.ts","../../src/instance/ObjectFilter.ts","../../src/instance/ModuleFilter.ts","../../src/instance/ObjectResolver.ts","../../src/instance/ModuleResolver.ts","../../src/lib/duplicateModules.ts","../../src/lib/serializable.ts","../../src/ModuleIdentifier.ts","../../src/Payload/ModuleState.ts","../../src/withModule.ts"],"sourcesContent":["export * from './cache'\nexport * from './Config'\nexport * from './CreatableModule'\nexport * from './EventsModels'\nexport * from './instance'\nexport * from './Labels'\nexport * from './lib'\nexport * from './module'\nexport * from './ModuleDescription'\nexport * from './ModuleIdentifier'\nexport * from './ModuleParams'\nexport * from './ModuleQueryHandlerResult'\nexport * from './ModuleQueryResult'\nexport * from './Payload'\nexport * from './Queries'\nexport * from './withModule'\n","import { EmptyObject, WithAdditional } from '@xylabs/object'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { ArchivingModuleConfig } from './Archiving'\nimport { ModuleConfigFields } from './Fields'\n\nexport type ModuleConfigSchema = 'network.xyo.module.config'\nexport const ModuleConfigSchema: ModuleConfigSchema = 'network.xyo.module.config'\n\nexport type ModuleConfig<TConfig extends EmptyObject | Payload | void = void, TSchema extends Schema | void = void> = Payload<\n WithAdditional<ArchivingModuleConfig & ModuleConfigFields, TConfig>,\n TSchema extends Schema ? TSchema\n : TConfig extends Payload ? TConfig['schema']\n : ModuleConfigSchema\n>\n\nexport type AnyConfigSchema<TConfig extends Omit<ModuleConfig, 'schema'> & { schema: string } = Omit<ModuleConfig, 'schema'> & { schema: string }> =\n ModuleConfig<TConfig, string>\n\nexport type OptionalConfigSchema<TConfig extends AnyConfigSchema<ModuleConfig> = AnyConfigSchema<ModuleConfig>> = Omit<TConfig, 'schema'> & {\n schema?: TConfig['schema']\n}\n\nexport type AnyModuleConfig = AnyConfigSchema<ModuleConfig>\n","import { Logger } from '@xylabs/logger'\nimport { AccountInstance } from '@xyo-network/account-model'\n\nimport { ModuleInstance } from '../instance'\n\nexport type CreatableModuleFactory<T extends ModuleInstance = ModuleInstance> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {\n create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>\n}\n\nexport interface CreatableModule<T extends ModuleInstance = ModuleInstance> {\n configSchema: string\n configSchemas: string[]\n defaultLogger?: Logger\n new (privateConstructorKey: string, params: T['params'], account: AccountInstance): T\n _noOverride(functionName: string): void\n create<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): Promise<T>\n factory<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>\n}\n\n/**\n * Class annotation to be used to decorate Modules which support\n * an asynchronous creation pattern\n * @returns The decorated Module requiring it implement the members\n * of the CreatableModule as statics properties/methods\n */\nexport function creatableModule<TModule extends ModuleInstance = ModuleInstance>() {\n return <U extends CreatableModule<TModule>>(constructor: U) => {\n constructor\n }\n}\n","import { CreatableModuleFactory } from './CreatableModule'\nimport { CreatableModuleDictionary } from './CreatableModuleDictionary'\nimport { LabeledCreatableModuleFactory } from './LabeledCreatableModuleFactory'\n\nexport interface CreatableModuleRegistry {\n [key: string]: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] | undefined\n}\n\nexport const toCreatableModuleRegistry = (dict: CreatableModuleDictionary | CreatableModuleRegistry): CreatableModuleRegistry => {\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(dict).reduce((registry, [schema, factory]) => {\n registry[schema] = Array.isArray(factory) ? factory : [factory]\n return registry\n }, {} as CreatableModuleRegistry)\n}\n\nexport const assignCreatableModuleRegistry = (\n target: CreatableModuleRegistry = {},\n ...sources: CreatableModuleRegistry[]\n): CreatableModuleRegistry => {\n sources.map((source) =>\n Object.entries(source).map(([schema, factories]) => {\n if (factories) {\n const existingFactories = target[schema]\n target[schema] = existingFactories ? (target[schema] = [...existingFactories, ...factories]) : factories\n }\n }),\n )\n return target\n}\n","import { ModuleInstance } from '../instance'\nimport { WithOptionalLabels } from '../Labels'\nimport { CreatableModuleFactory } from './CreatableModule'\n\nexport type LabeledCreatableModuleFactory<T extends ModuleInstance = ModuleInstance> = CreatableModuleFactory<T> & WithOptionalLabels\n\nexport const hasLabels = (factory: CreatableModuleFactory | LabeledCreatableModuleFactory): factory is LabeledCreatableModuleFactory => {\n return (factory as LabeledCreatableModuleFactory).labels !== undefined\n}\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { Logger } from '@xylabs/logger'\n\nimport { ModuleInstance } from '../instance'\nimport { Labels, WithOptionalLabels } from '../Labels'\nimport { CreatableModule, CreatableModuleFactory } from './CreatableModule'\n\nexport class ModuleFactory<TModule extends ModuleInstance> implements CreatableModuleFactory<TModule> {\n configSchemas: CreatableModuleFactory<TModule>['configSchemas']\n\n creatableModule: CreatableModule<TModule>\n\n defaultLogger?: Logger | undefined\n\n defaultParams?: Omit<TModule['params'], 'config'> & { config?: Partial<TModule['params']['config']> }\n\n labels?: Labels\n\n constructor(\n creatableModule: CreatableModule<TModule>,\n params?: Omit<TModule['params'], 'config'> & { config?: Partial<TModule['params']['config']> },\n labels: Labels = {},\n ) {\n this.creatableModule = creatableModule\n this.defaultParams = params\n this.configSchemas = creatableModule.configSchemas\n this.labels = Object.assign({}, (creatableModule as WithOptionalLabels).labels ?? {}, labels ?? {})\n }\n\n get configSchema(): string {\n return this.configSchemas[0]\n }\n\n static withParams<T extends ModuleInstance>(\n creatableModule: CreatableModule<T>,\n params?: Omit<T['params'], 'config'> & { config?: T['params']['config'] },\n labels: Labels = {},\n ) {\n return new ModuleFactory(creatableModule, params, labels)\n }\n\n _getRootFunction(funcName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let anyThis = this as any\n while (anyThis.__proto__[funcName]) {\n anyThis = anyThis.__proto__\n }\n return anyThis[funcName]\n }\n\n _noOverride(functionName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const thisFunc = (this as any)[functionName]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rootFunc = this._getRootFunction(functionName)\n assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n }\n\n create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T> {\n const factory = this as ModuleFactory<T>\n const schema = factory.creatableModule.configSchema\n const mergedParams: TModule['params'] = merge({}, factory.defaultParams, params, {\n config: merge({}, factory.defaultParams?.config, params?.config, { schema }),\n })\n return factory.creatableModule.create<T>(mergedParams)\n }\n\n factory<T extends ModuleInstance>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T> {\n throw new Error('Method not implemented.')\n }\n}\n","import { assertEx } from '@xylabs/assert'\n\nimport { ModuleInstance } from '../instance'\nimport { hasAllLabels, Labels } from '../Labels'\nimport { CreatableModuleFactory } from './CreatableModule'\nimport { CreatableModuleRegistry } from './CreatableModuleRegistry'\nimport { hasLabels, LabeledCreatableModuleFactory } from './LabeledCreatableModuleFactory'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = {}) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(this.tryLocate(schema, labels), () => {\n const configString = `config schema [${schema}]`\n const labelsString = labels ? ` & labels [${JSON.stringify(labels)}]` : ''\n return `No module factory for the supplied ${configString}${labelsString} registered`\n })\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param additional Additional module factories to register\n */\n register<TModule extends ModuleInstance>(mod: CreatableModuleFactory<TModule>, labels?: Labels): this {\n mod.configSchemas.map((schema) => {\n const existingFactories = this._registry[schema]\n const factory: LabeledCreatableModuleFactory<TModule> = {\n // Destructure instance properties\n ...mod,\n // Copy static methods\n create: mod.create.bind(mod) as LabeledCreatableModuleFactory<TModule>['create'],\n // Merge module & supplied labels\n labels: Object.assign({}, (mod as LabeledCreatableModuleFactory).labels ?? {}, labels ?? {}),\n }\n this._registry[schema] = existingFactories ? [...existingFactories, factory] : [factory]\n })\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param additional Additional module factories to register\n */\n registerMany(additional: CreatableModuleRegistry): this {\n Object.entries(additional).map(([schema, factories]) => {\n if (factories) {\n const existingFactories = this._registry[schema]\n this._registry[schema] = existingFactories ? [...existingFactories, ...factories] : factories\n }\n })\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","/**\n * Object used to represent labels identifying a resource.\n */\nexport interface Labels {\n [key: string]: string | undefined\n}\n\n/**\n * Interface for objects that have labels.\n */\nexport interface WithLabels<T extends Labels = Labels> {\n labels: T\n}\n\n/**\n * Interface for objects that have labels.\n */\nexport interface WithOptionalLabels<T extends Labels = Labels> {\n labels?: T\n}\n\n/**\n * Returns true if the source object has all the labels from the required set\n * @param source Source object to check against\n * @param required Set of labels to check for in source\n * @returns True of the source object has all the labels from the required set\n */\nexport const hasAllLabels = (source?: Labels, required?: Labels): boolean => {\n if (!required) return true\n return Object.entries(required).every(([key, value]) => {\n // eslint-disable-next-line no-prototype-builtins\n return source?.hasOwnProperty(key as keyof typeof source) && source?.[key as keyof typeof source] === value\n })\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isModuleInstance } from './isModuleInstance'\n\nexport const asModuleInstance = AsObjectFactory.create(isModuleInstance)\n","import { IsObjectFactory, ObjectTypeShape, TypeCheck } from '@xylabs/object'\n\nimport { isModule } from '../module'\nimport { ModuleInstance } from './Instance'\n\nexport const requiredModuleInstanceFunctions: ObjectTypeShape = {\n describe: 'function',\n discover: 'function',\n manifest: 'function',\n}\n\n//we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsObjectFactory<ModuleInstance>()\n\nexport const isModuleInstance: TypeCheck<ModuleInstance> = factory.create(requiredModuleInstanceFunctions, [isModule])\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isModule } from './isModule'\n\nexport const asModule = AsObjectFactory.create(isModule)\n","import { Payload } from '@xyo-network/payload-model'\n\nimport { ModuleDescription } from '../../ModuleDescription'\n\nexport const ModuleDescriptionSchema = 'network.xyo.module.description'\nexport type ModuleDescriptionSchema = typeof ModuleDescriptionSchema\n\nexport type ModuleDescriptionPayload = Payload<ModuleDescription, ModuleDescriptionSchema>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleDescribeQuerySchema = 'network.xyo.query.module.describe'\nexport const ModuleDescribeQuerySchema: ModuleDescribeQuerySchema = 'network.xyo.query.module.describe'\n\nexport type ModuleDescribeQuery = Query<{\n schema: ModuleDescribeQuerySchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover'\nexport const ModuleDiscoverQuerySchema: ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover'\n\nexport type ModuleDiscoverQuery = Query<{\n maxDepth?: number\n schema: ModuleDiscoverQuerySchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleManifestQuerySchema = 'network.xyo.query.module.manifest'\nexport const ModuleManifestQuerySchema: ModuleManifestQuerySchema = 'network.xyo.query.module.manifest'\n\nexport type ModuleManifestQuery = Query<{\n maxDepth?: number\n schema: ModuleManifestQuerySchema\n}>\n","import { Address } from '@xylabs/hex'\nimport { AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const AddressPreviousHashSchema = `${AddressSchema}.hash.previous`\nexport type AddressPreviousHashSchema = typeof AddressPreviousHashSchema\n\nexport type AddressPreviousHashPayload = Payload<{\n address: Address\n previousHash?: string\n schema: AddressPreviousHashSchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleAddressQuerySchema = 'network.xyo.query.module.address'\nexport const ModuleAddressQuerySchema: ModuleAddressQuerySchema = 'network.xyo.query.module.address'\n\nexport type ModuleAddressQuery = Query<{\n schema: ModuleAddressQuerySchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport const ModuleStateQuerySchema = 'network.xyo.query.module.state'\nexport type ModuleStateQuerySchema = typeof ModuleStateQuerySchema\n\nexport type ModuleStateQuery = Query<void, ModuleStateQuerySchema>\n","import { Address } from '@xylabs/hex'\nimport { Query } from '@xyo-network/payload-model'\n\nexport type ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe'\nexport const ModuleSubscribeQuerySchema: ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe'\n\nexport interface ModuleSubscribeFilter {\n /** @field if specified, at least one of the schemas must be present in the boundwtness to generate a notification */\n schema?: string[]\n}\n\n//requests notification when a boundwitness is added to the modules chain that meets the filter criteria\nexport type ModuleSubscribeQuery = Query<{\n /** @field The address that will receive notifications */\n address: Address\n /** @field A subscribe with a null for filter is an unsubscribe */\n filter?: ModuleSubscribeFilter | null\n /** @field The maximum events queued per send [may increase frequency] */\n maxQueue?: number\n schema: ModuleSubscribeQuerySchema\n}>\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isModuleObject } from './isModuleObject'\n\nexport const asModuleObject = AsObjectFactory.create(isModuleObject)\n","import { IsObjectFactory, ObjectTypeShape } from '@xylabs/object'\n\nimport { Module } from './Module'\n\nexport const requiredModuleShape: ObjectTypeShape = {\n address: 'string',\n queries: 'array',\n query: 'function',\n}\n\nconst factory = new IsObjectFactory<Module>()\n\nexport const isModuleObject = factory.create(requiredModuleShape)\n","import { AnyObject, EmptyObject, TypeCheck } from '@xylabs/object'\nimport { AnyNonPromise } from '@xylabs/promise'\n\nimport { asModuleObject } from './asModuleObject'\nimport { isModuleObject } from './isModuleObject'\nimport { Module } from './Module'\n\nexport type ModuleTypeCheck<T extends Module = Module> = TypeCheck<T>\n\nexport class IsModuleFactory<T extends Module = Module> {\n create(expectedQueries?: string[], additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): ModuleTypeCheck<T> {\n return (obj: AnyNonPromise, config): obj is T => {\n const module = asModuleObject(obj)\n const result =\n isModuleObject(module, config) &&\n (expectedQueries?.reduce((prev, query) => prev && module.queries.includes(query), true) ?? true) &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, config), true) ?? true)\n return result\n }\n }\n}\n","import { TypeCheck } from '@xylabs/object'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { ModuleStateQuerySchema } from '../Queries'\nimport { IsModuleFactory } from './IsModuleFactory'\nimport { isModuleObject } from './isModuleObject'\nimport { Module } from './Module'\n\nexport const requiredModuleQueries: Schema[] = [ModuleStateQuerySchema]\n\n//we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsModuleFactory<Module>()\n\nexport const isModule: TypeCheck<Module> = factory.create(requiredModuleQueries, [isModuleObject])\n","import { IsObjectFactory, toJsonString, TypeCheck } from '@xylabs/object'\n\nimport { ModuleEventData } from '../EventsModels'\nimport { Module, ModuleQueryFunctions } from '../module'\nimport { ModuleIdentifier } from '../ModuleIdentifier'\nimport { ModuleParams } from '../ModuleParams'\nimport { ObjectResolver, ObjectResolverInstance } from './ObjectResolver'\n\nexport type ModulePipeLine = Lowercase<'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many'>\n\nexport type ModuleStatus = 'started' | 'stopped' | 'dead' | 'wrapped' | 'proxy'\n\nexport class DeadModuleError extends Error {\n constructor(\n public id: ModuleIdentifier,\n public error: Error | undefined,\n msg = 'Dead Module Error',\n ) {\n super(`${msg} [${id}]: ${error?.message ?? toJsonString(error)}`)\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, DeadModuleError.prototype)\n }\n}\n\nexport interface ModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends Module<TParams, TEventData>,\n ObjectResolver<ModuleInstance>,\n ModuleQueryFunctions {\n /* The resolver is a 'down' resolver. It can resolve the module or any children (if it is a node for example), that are in the module*/\n readonly downResolver: Omit<ObjectResolverInstance<ModuleInstance>, 'resolve'>\n\n readonly pipeline?: ModulePipeLine\n\n //if the module has become non-functional, such as a broken bridge connection, this will be 'dead'\n readonly status: ModuleStatus\n\n /* The resolver is a 'up' resolver. It can resolve the parent or any children of the parent*/\n /* This is set by a NodeModule when attaching to the module */\n readonly upResolver: Omit<ObjectResolverInstance<ModuleInstance>, 'resolve'>\n}\n\nexport type InstanceTypeCheck<T extends ModuleInstance = ModuleInstance> = TypeCheck<T>\n\nexport class IsInstanceFactory<T extends ModuleInstance = ModuleInstance> extends IsObjectFactory<T> {}\n","import { Address } from '@xylabs/hex'\nimport { AnyObject, EmptyObject, TypeCheck } from '@xylabs/object'\n\nimport { ModuleName } from '../ModuleIdentifier'\n\nexport type Direction = 'up' | 'down' | 'all'\nexport type Visibility = 'public' | 'private' | 'all'\n\nexport interface ResolveStrategy {\n maxDepth?: number\n required?: boolean | 'warn' | 'log'\n retry?: number\n timeout?: number\n}\n\nexport interface ObjectFilterOptions<T extends EmptyObject = AnyObject> extends ResolveStrategy {\n direction?: Direction\n identity?: TypeCheck<T>\n visibility?: Visibility\n}\n\nexport interface AddressObjectFilter<T extends EmptyObject = AnyObject> extends ObjectFilterOptions<T> {\n address: Address[]\n}\n\nexport const isAddressObjectFilter = <T extends EmptyObject = AnyObject>(value: unknown): value is AddressObjectFilter<T> =>\n (value as AddressObjectFilter<T>).address !== undefined\n\nexport interface NameObjectFilter<T extends EmptyObject = AnyObject> extends ObjectFilterOptions<T> {\n name: ModuleName[]\n}\n\nexport const isNameObjectFilter = <T extends EmptyObject = AnyObject>(value: unknown): value is NameObjectFilter<T> =>\n (value as NameObjectFilter<T>).name !== undefined\n\nexport interface QueryObjectFilter<T extends EmptyObject = AnyObject> extends ObjectFilterOptions<T> {\n query: string[][]\n}\n\nexport const isQueryObjectFilter = <T extends EmptyObject = AnyObject>(value: unknown): value is QueryObjectFilter<T> =>\n (value as QueryObjectFilter<T>).query !== undefined\n\nexport type AnyObjectFilter<T extends EmptyObject = AnyObject> = Partial<AddressObjectFilter<T>> &\n Partial<NameObjectFilter<T>> &\n Partial<QueryObjectFilter<T>>\n\nexport type ObjectFilter<T extends EmptyObject> = ObjectFilterOptions<T> | AddressObjectFilter<T> | NameObjectFilter<T> | QueryObjectFilter<T>\n","import { ModuleInstance } from './Instance'\nimport {\n AddressObjectFilter,\n AnyObjectFilter,\n isAddressObjectFilter,\n isNameObjectFilter,\n isQueryObjectFilter,\n NameObjectFilter,\n ObjectFilter,\n ObjectFilterOptions,\n QueryObjectFilter,\n} from './ObjectFilter'\n\nexport interface ModuleFilterOptions<T extends ModuleInstance = ModuleInstance> extends ObjectFilterOptions<T> {}\n\nexport const isAddressModuleFilter = isAddressObjectFilter<ModuleInstance>\n\nexport const isNameModuleFilter = isNameObjectFilter<ModuleInstance>\n\nexport const isQueryModuleFilter = isQueryObjectFilter<ModuleInstance>\n\nexport type AnyModuleFilter<T extends ModuleInstance = ModuleInstance> = AnyObjectFilter<T>\n\nexport type AddressModuleFilter<T extends ModuleInstance = ModuleInstance> = AddressObjectFilter<T>\n\nexport type NameModuleFilter<T extends ModuleInstance = ModuleInstance> = NameObjectFilter<T>\n\nexport type QueryModuleFilter<T extends ModuleInstance = ModuleInstance> = QueryObjectFilter<T>\n\nexport type ModuleFilter<T extends ModuleInstance = ModuleInstance> = ObjectFilter<T>\n","import { AnyObject, EmptyObject } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\n\nimport { ModuleIdentifier } from '../ModuleIdentifier'\nimport { ObjectFilter, ObjectFilterOptions } from './ObjectFilter'\n\nexport const isObjectResolver = <T extends EmptyObject = AnyObject>(value?: unknown): value is ObjectResolver<T> => {\n // eslint-disable-next-line deprecation/deprecation\n return typeof (value as Partial<ObjectResolver<T>>).resolve === 'function'\n}\n\nexport interface ObjectResolver<TResult extends EmptyObject> {\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n resolve<T extends TResult = TResult>(): Promisable<T | undefined>\n resolve<T extends TResult = TResult>(all: '*', options?: ObjectFilterOptions<T>): Promisable<T[]>\n resolve<T extends TResult = TResult>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promisable<T | undefined>\n resolve<T extends TResult = TResult>(filter: ObjectFilter<T>, options?: ObjectFilterOptions<T>): Promisable<T[]>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n resolve<T extends TResult = TResult>(filter?: ObjectFilter<T>, options?: ObjectFilterOptions<T>): Promisable<T[]>\n resolve<T extends TResult = TResult>(\n idOrFilter?: ObjectFilter<T> | ModuleIdentifier,\n options?: ObjectFilterOptions<T>,\n ): Promisable<T | T[] | undefined>\n}\n\nexport interface ObjectResolverInstance<TResult extends EmptyObject> extends ObjectResolver<TResult> {\n addResolver: (resolver: ObjectResolverInstance<TResult>) => this\n removeResolver: (resolver: ObjectResolverInstance<TResult>) => this\n}\n","import { ModuleInstance } from './Instance'\nimport { isObjectResolver, ObjectResolver } from './ObjectResolver'\n\nexport const isModuleResolver = isObjectResolver<ModuleInstance>\n\nexport interface ModuleResolver<TResult extends ModuleInstance = ModuleInstance> extends ObjectResolver<TResult> {}\n\nexport interface ModuleResolverInstance<TResult extends ModuleInstance = ModuleInstance> extends ModuleResolver<TResult> {\n addResolver: (resolver: ModuleResolverInstance<TResult>) => this\n removeResolver: (resolver: ModuleResolverInstance<TResult>) => this\n}\n","import { Module } from '../module'\n\n/**\n * Used to filter duplicates from an array of modules\n * @example: modulesArray.filter(duplicateModules)\n * @param value Current Module\n * @param index Current Module's index\n * @param array Module Array\n * @returns True if the Module's address is the first occurrence of\n * that address in the array, false otherwise\n */\nexport const duplicateModules = (value: Module, index: number, array: Module[]): value is Module => {\n return array.findIndex((v) => v.address === value.address) === index\n}\n","// Inspired by https://stackoverflow.com/a/49079549/2803259\n\nimport { every, isArray, isBoolean, isNull, isNumber, isPlainObject, isString, isUndefined, overSome } from '@xylabs/lodash'\n\nconst JSONPrimitiveChecks = [isUndefined, isNull, isBoolean, isNumber, isString]\nconst JSONComplexChecks = [isPlainObject, isArray]\n\nexport const serializable = (field: unknown, depth?: number): boolean | null => {\n let depthExceeded = false\n const decrementDepth = () => (depth ? depth-- : undefined)\n\n const recursiveSerializable = (field: unknown) => {\n if (depth !== undefined && depth < 1) {\n depthExceeded = true\n return false\n }\n\n // decrement during every recursion\n decrementDepth()\n\n const nestedSerializable = (field: unknown): boolean => overSome(JSONComplexChecks)(field) && every(field as object, recursiveSerializable)\n\n return overSome([...JSONPrimitiveChecks, nestedSerializable])(field)\n }\n\n const valid = recursiveSerializable(field)\n\n return depthExceeded ? null : valid\n}\n\nexport const serializableField = (field: unknown) => {\n return overSome([...JSONPrimitiveChecks, ...JSONComplexChecks])(field)\n}\n","import { Address, isAddress } from '@xylabs/hex'\n\nexport const DisallowedModuleIdentifierCharacters = {\n ' ': true,\n '!': true,\n '\"': true,\n '#': true,\n $: true,\n '%': true,\n '&': true,\n \"'\": true,\n '(': true,\n ')': true,\n '*': true,\n ',': true,\n '.': true,\n '/': true,\n ':': true,\n ';': true,\n '<': true,\n '=': true,\n '>': true,\n '?': true,\n '@': true,\n '[': true,\n ']': true,\n '^': true,\n _: true,\n '{': true,\n '|': true,\n '}': true,\n '~': true,\n}\nexport type ReservedModuleIdentifierCharacter = keyof typeof DisallowedModuleIdentifierCharacters\nexport const ReservedModuleIdentifierCharacters = new Set<ReservedModuleIdentifierCharacter>(\n Object.keys(DisallowedModuleIdentifierCharacters) as ReservedModuleIdentifierCharacter[],\n)\n\n//using Exclude to make this type not allowed to take a naked string\nexport type ModuleName = Exclude<string, 'reserved-module-name-56487634'>\n\nexport type ModuleIdentifier =\n | ColonPair<ModuleIdentifierPart>\n | ColonPair<ColonPair<ModuleIdentifierPart>>\n | ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>>>>\n\nexport type ColonPair<T extends string> = `${T}:${T}` | T\n\nexport type ModuleIdentifierPart = Exclude<Address | ModuleName, '*'>\n\nexport const isModuleName = (value: unknown): value is ModuleName => {\n return typeof value === 'string' && !isAddress(value) && !includesReservedModuleIdentifierCharacter(value)\n}\n\nexport const includesReservedModuleIdentifierCharacter = (value: unknown): boolean => {\n return typeof value === 'string' && [...value].some((char) => ReservedModuleIdentifierCharacters.has(char as ReservedModuleIdentifierCharacter))\n}\n\nexport const isModuleIdentifierPart = (value: unknown): value is ModuleIdentifierPart => {\n return isModuleName(value) || isAddress(value)\n}\n","import { isPayloadOfSchemaType, Payload, WithMeta } from '@xyo-network/payload-model'\n\nexport interface StateDictionary {\n [key: string]: string | number | undefined\n}\nexport interface State<T extends StateDictionary = StateDictionary> {\n state: T\n}\n\nexport const ModuleStateSchema = 'network.xyo.module.state' as const\nexport type ModuleStateSchema = typeof ModuleStateSchema\n\nexport type ModuleState<T extends StateDictionary = StateDictionary> = Payload<State<T>, ModuleStateSchema>\n\nexport const isModuleState = <T extends StateDictionary = StateDictionary>(payload?: Payload | null): payload is ModuleState<T> => {\n return isPayloadOfSchemaType<ModuleState<T>>(ModuleStateSchema)(payload)\n}\n\nexport const isModuleStateWithMeta = <T extends StateDictionary = StateDictionary>(payload?: Payload | null): payload is WithMeta<ModuleState<T>> => {\n return isPayloadOfSchemaType<WithMeta<ModuleState<T>>>(ModuleStateSchema)(payload)\n}\n","import { TypeCheck } from '@xylabs/object'\n\nimport { isModuleInstance } from './instance'\nimport { isModule } from './module'\n\nexport const WithFactory = {\n create: <T extends object>(typeCheck: TypeCheck<T>) => {\n return <R>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n module: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n closure: (module: T) => R,\n ): R | undefined => {\n return typeCheck(module) ? closure(module) : undefined\n }\n },\n}\n\nexport const withModule = WithFactory.create(isModule)\nexport const withModuleInstance = WithFactory.create(isModuleInstance)\n"],"mappings":"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","names":["ModuleConfigSchema","creatableModule","constructor","toCreatableModuleRegistry","dict","Object","entries","reduce","registry","schema","factory","Array","isArray","assignCreatableModuleRegistry","target","sources","map","source","factories","existingFactories","hasLabels","factory","labels","undefined","ModuleFactory","configSchemas","creatableModule","defaultLogger","defaultParams","labels","constructor","params","Object","assign","configSchema","withParams","_getRootFunction","funcName","anyThis","__proto__","_noOverride","functionName","thisFunc","rootFunc","assertEx","create","factory","schema","mergedParams","merge","config","_params","Error","import_assert","hasAllLabels","source","required","Object","entries","every","key","value","hasOwnProperty","ModuleFactoryLocator","constructor","_registry","registry","locate","schema","labels","assertEx","tryLocate","configString","labelsString","JSON","stringify","register","mod","configSchemas","map","existingFactories","factory","create","bind","Object","assign","registerMany","additional","entries","factories","filter","hasLabels","find","hasAllLabels","import_object","import_object","import_object","ModuleDescriptionSchema","ModuleDescribeQuerySchema","ModuleDiscoverQuerySchema","ModuleManifestQuerySchema","AddressPreviousHashSchema","AddressSchema","ModuleAddressQuerySchema","ModuleStateQuerySchema","ModuleSubscribeQuerySchema","import_object","requiredModuleShape","address","queries","query","factory","IsObjectFactory","isModuleObject","create","asModuleObject","AsObjectFactory","create","isModuleObject","IsModuleFactory","create","expectedQueries","additionalChecks","obj","config","module","asModuleObject","result","isModuleObject","reduce","prev","query","queries","includes","check","requiredModuleQueries","ModuleStateQuerySchema","factory","IsModuleFactory","isModule","create","isModuleObject","asModule","AsObjectFactory","create","isModule","requiredModuleInstanceFunctions","describe","discover","manifest","factory","IsObjectFactory","isModuleInstance","create","isModule","asModuleInstance","AsObjectFactory","create","isModuleInstance","import_object","DeadModuleError","Error","constructor","id","error","msg","message","toJsonString","Object","setPrototypeOf","prototype","IsInstanceFactory","IsObjectFactory","isAddressObjectFilter","value","address","undefined","isNameObjectFilter","name","isQueryObjectFilter","query","isAddressModuleFilter","isAddressObjectFilter","isNameModuleFilter","isNameObjectFilter","isQueryModuleFilter","isQueryObjectFilter","isObjectResolver","value","resolve","isModuleResolver","isObjectResolver","duplicateModules","value","index","array","findIndex","v","address","import_lodash","JSONPrimitiveChecks","isUndefined","isNull","isBoolean","isNumber","isString","JSONComplexChecks","isPlainObject","isArray","serializable","field","depth","depthExceeded","decrementDepth","undefined","recursiveSerializable","nestedSerializable","overSome","every","valid","serializableField","DisallowedModuleIdentifierCharacters","$","_","ReservedModuleIdentifierCharacters","Set","Object","keys","isModuleName","value","isAddress","includesReservedModuleIdentifierCharacter","some","char","has","isModuleIdentifierPart","ModuleStateSchema","isModuleState","payload","isPayloadOfSchemaType","isModuleStateWithMeta","WithFactory","create","typeCheck","module","closure","undefined","withModule","isModule","withModuleInstance","isModuleInstance"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Config/Config.ts","../../src/CreatableModule/CreatableModule.ts","../../src/CreatableModule/CreatableModuleRegistry.ts","../../src/CreatableModule/LabeledCreatableModuleFactory.ts","../../src/CreatableModule/ModuleFactory.ts","../../src/CreatableModule/ModuleFactoryLocator.ts","../../src/Labels/Labels.ts","../../src/instance/asModuleInstance.ts","../../src/instance/isModuleInstance.ts","../../src/module/asModule.ts","../../src/Queries/Describe/Payload.ts","../../src/Queries/Describe/Query.ts","../../src/Queries/Discover.ts","../../src/Queries/Manifest.ts","../../src/Queries/ModuleAddress/Payload.ts","../../src/Queries/ModuleAddress/Query.ts","../../src/Queries/State.ts","../../src/Queries/Subscribe.ts","../../src/module/asModuleObject.ts","../../src/module/isModuleObject.ts","../../src/module/IsModuleFactory.ts","../../src/module/isModule.ts","../../src/instance/attachable/asAttachableInstance.ts","../../src/instance/attachable/isAttachableInstance.ts","../../src/instance/attachable/AttachableInstance.ts","../../src/instance/Instance.ts","../../src/instance/ObjectFilter.ts","../../src/instance/ModuleFilter.ts","../../src/instance/ObjectResolver.ts","../../src/instance/ModuleResolver.ts","../../src/lib/duplicateModules.ts","../../src/lib/serializable.ts","../../src/ModuleIdentifier.ts","../../src/Payload/ModuleState.ts","../../src/withModule.ts"],"sourcesContent":["export * from './cache'\nexport * from './Config'\nexport * from './CreatableModule'\nexport * from './EventsModels'\nexport * from './instance'\nexport * from './Labels'\nexport * from './lib'\nexport * from './module'\nexport * from './ModuleDescription'\nexport * from './ModuleIdentifier'\nexport * from './ModuleIdentifierTransformer'\nexport * from './ModuleParams'\nexport * from './ModuleQueryHandlerResult'\nexport * from './ModuleQueryResult'\nexport * from './Payload'\nexport * from './Queries'\nexport * from './withModule'\n","import { EmptyObject, WithAdditional } from '@xylabs/object'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { ArchivingModuleConfig } from './Archiving'\nimport { ModuleConfigFields } from './Fields'\n\nexport type ModuleConfigSchema = 'network.xyo.module.config'\nexport const ModuleConfigSchema: ModuleConfigSchema = 'network.xyo.module.config'\n\nexport type ModuleConfig<TConfig extends EmptyObject | Payload | void = void, TSchema extends Schema | void = void> = Payload<\n WithAdditional<ArchivingModuleConfig & ModuleConfigFields, TConfig>,\n TSchema extends Schema ? TSchema\n : TConfig extends Payload ? TConfig['schema']\n : ModuleConfigSchema\n>\n\nexport type AnyConfigSchema<TConfig extends Omit<ModuleConfig, 'schema'> & { schema: string } = Omit<ModuleConfig, 'schema'> & { schema: string }> =\n ModuleConfig<TConfig, string>\n\nexport type OptionalConfigSchema<TConfig extends AnyConfigSchema<ModuleConfig> = AnyConfigSchema<ModuleConfig>> = Omit<TConfig, 'schema'> & {\n schema?: TConfig['schema']\n}\n\nexport type AnyModuleConfig = AnyConfigSchema<ModuleConfig>\n","import { Logger } from '@xylabs/logger'\nimport { AccountInstance } from '@xyo-network/account-model'\n\nimport { AttachableModuleInstance } from '../instance'\n\nexport type CreatableModuleFactory<T extends AttachableModuleInstance = AttachableModuleInstance> = Omit<\n Omit<CreatableModule<T>, 'new'>,\n 'create'\n> & {\n create<T extends AttachableModuleInstance>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>\n}\n\nexport interface CreatableModule<T extends AttachableModuleInstance = AttachableModuleInstance> {\n configSchema: string\n configSchemas: string[]\n defaultLogger?: Logger\n new (privateConstructorKey: string, params: T['params'], account: AccountInstance): T\n _noOverride(functionName: string): void\n create<T extends AttachableModuleInstance>(this: CreatableModule<T>, params?: T['params']): Promise<T>\n factory<T extends AttachableModuleInstance>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>\n}\n\n/**\n * Class annotation to be used to decorate Modules which support\n * an asynchronous creation pattern\n * @returns The decorated Module requiring it implement the members\n * of the CreatableModule as statics properties/methods\n */\nexport function creatableModule<TModule extends AttachableModuleInstance = AttachableModuleInstance>() {\n return <U extends CreatableModule<TModule>>(constructor: U) => {\n constructor\n }\n}\n","import { CreatableModuleFactory } from './CreatableModule'\nimport { CreatableModuleDictionary } from './CreatableModuleDictionary'\nimport { LabeledCreatableModuleFactory } from './LabeledCreatableModuleFactory'\n\nexport interface CreatableModuleRegistry {\n [key: string]: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] | undefined\n}\n\nexport const toCreatableModuleRegistry = (dict: CreatableModuleDictionary | CreatableModuleRegistry): CreatableModuleRegistry => {\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(dict).reduce((registry, [schema, factory]) => {\n registry[schema] = Array.isArray(factory) ? factory : [factory]\n return registry\n }, {} as CreatableModuleRegistry)\n}\n\nexport const assignCreatableModuleRegistry = (\n target: CreatableModuleRegistry = {},\n ...sources: CreatableModuleRegistry[]\n): CreatableModuleRegistry => {\n sources.map((source) =>\n Object.entries(source).map(([schema, factories]) => {\n if (factories) {\n const existingFactories = target[schema]\n target[schema] = existingFactories ? (target[schema] = [...existingFactories, ...factories]) : factories\n }\n }),\n )\n return target\n}\n","import { AttachableModuleInstance } from '../instance'\nimport { WithOptionalLabels } from '../Labels'\nimport { CreatableModuleFactory } from './CreatableModule'\n\nexport type LabeledCreatableModuleFactory<T extends AttachableModuleInstance = AttachableModuleInstance> = CreatableModuleFactory<T> &\n WithOptionalLabels\n\nexport const hasLabels = (factory: CreatableModuleFactory | LabeledCreatableModuleFactory): factory is LabeledCreatableModuleFactory => {\n return (factory as LabeledCreatableModuleFactory).labels !== undefined\n}\n","import { assertEx } from '@xylabs/assert'\nimport { merge } from '@xylabs/lodash'\nimport { Logger } from '@xylabs/logger'\n\nimport { AttachableModuleInstance } from '../instance'\nimport { Labels, WithOptionalLabels } from '../Labels'\nimport { CreatableModule, CreatableModuleFactory } from './CreatableModule'\n\nexport class ModuleFactory<TModule extends AttachableModuleInstance> implements CreatableModuleFactory<TModule> {\n configSchemas: CreatableModuleFactory<TModule>['configSchemas']\n\n creatableModule: CreatableModule<TModule>\n\n defaultLogger?: Logger | undefined\n\n defaultParams?: Omit<TModule['params'], 'config'> & { config?: Partial<TModule['params']['config']> }\n\n labels?: Labels\n\n constructor(\n creatableModule: CreatableModule<TModule>,\n params?: Omit<TModule['params'], 'config'> & { config?: Partial<TModule['params']['config']> },\n labels: Labels = {},\n ) {\n this.creatableModule = creatableModule\n this.defaultParams = params\n this.configSchemas = creatableModule.configSchemas\n this.labels = Object.assign({}, (creatableModule as WithOptionalLabels).labels ?? {}, labels ?? {})\n }\n\n get configSchema(): string {\n return this.configSchemas[0]\n }\n\n static withParams<T extends AttachableModuleInstance>(\n creatableModule: CreatableModule<T>,\n params?: Omit<T['params'], 'config'> & { config?: T['params']['config'] },\n labels: Labels = {},\n ) {\n return new ModuleFactory(creatableModule, params, labels)\n }\n\n _getRootFunction(funcName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let anyThis = this as any\n while (anyThis.__proto__[funcName]) {\n anyThis = anyThis.__proto__\n }\n return anyThis[funcName]\n }\n\n _noOverride(functionName: string) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const thisFunc = (this as any)[functionName]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rootFunc = this._getRootFunction(functionName)\n assertEx(thisFunc === rootFunc, () => `Override not allowed for [${functionName}] - override ${functionName}Handler instead`)\n }\n\n create<T extends AttachableModuleInstance>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T> {\n const factory = this as ModuleFactory<T>\n const schema = factory.creatableModule.configSchema\n const mergedParams: TModule['params'] = merge({}, factory.defaultParams, params, {\n config: merge({}, factory.defaultParams?.config, params?.config, { schema }),\n })\n return factory.creatableModule.create<T>(mergedParams)\n }\n\n factory<T extends AttachableModuleInstance>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T> {\n throw new Error('Method not implemented.')\n }\n}\n","import { assertEx } from '@xylabs/assert'\n\nimport { AttachableModuleInstance, ModuleInstance } from '../instance'\nimport { hasAllLabels, Labels } from '../Labels'\nimport { CreatableModuleFactory } from './CreatableModule'\nimport { CreatableModuleRegistry } from './CreatableModuleRegistry'\nimport { hasLabels, LabeledCreatableModuleFactory } from './LabeledCreatableModuleFactory'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = {}) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(this.tryLocate(schema, labels), () => {\n const configString = `config schema [${schema}]`\n const labelsString = labels ? ` & labels [${JSON.stringify(labels)}]` : ''\n return `No module factory for the supplied ${configString}${labelsString} registered`\n })\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param additional Additional module factories to register\n */\n register<TModule extends AttachableModuleInstance>(mod: CreatableModuleFactory<TModule>, labels?: Labels): this {\n mod.configSchemas.map((schema) => {\n const existingFactories = this._registry[schema]\n const factory: LabeledCreatableModuleFactory<TModule> = {\n // Destructure instance properties\n ...mod,\n // Copy static methods\n create: mod.create.bind(mod) as LabeledCreatableModuleFactory<TModule>['create'],\n // Merge module & supplied labels\n labels: Object.assign({}, (mod as LabeledCreatableModuleFactory).labels ?? {}, labels ?? {}),\n }\n this._registry[schema] = existingFactories ? [...existingFactories, factory] : [factory]\n })\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param additional Additional module factories to register\n */\n registerMany(additional: CreatableModuleRegistry): this {\n Object.entries(additional).map(([schema, factories]) => {\n if (factories) {\n const existingFactories = this._registry[schema]\n this._registry[schema] = existingFactories ? [...existingFactories, ...factories] : factories\n }\n })\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","/**\n * Object used to represent labels identifying a resource.\n */\nexport interface Labels {\n [key: string]: string | undefined\n}\n\n/**\n * Interface for objects that have labels.\n */\nexport interface WithLabels<T extends Labels = Labels> {\n labels: T\n}\n\n/**\n * Interface for objects that have labels.\n */\nexport interface WithOptionalLabels<T extends Labels = Labels> {\n labels?: T\n}\n\n/**\n * Returns true if the source object has all the labels from the required set\n * @param source Source object to check against\n * @param required Set of labels to check for in source\n * @returns True of the source object has all the labels from the required set\n */\nexport const hasAllLabels = (source?: Labels, required?: Labels): boolean => {\n if (!required) return true\n return Object.entries(required).every(([key, value]) => {\n // eslint-disable-next-line no-prototype-builtins\n return source?.hasOwnProperty(key as keyof typeof source) && source?.[key as keyof typeof source] === value\n })\n}\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isModuleInstance } from './isModuleInstance'\n\nexport const asModuleInstance = AsObjectFactory.create(isModuleInstance)\n","import { IsObjectFactory, ObjectTypeShape, TypeCheck } from '@xylabs/object'\n\nimport { isModule } from '../module'\nimport { ModuleInstance } from './Instance'\n\nexport const requiredModuleInstanceFunctions: ObjectTypeShape = {\n describe: 'function',\n discover: 'function',\n manifest: 'function',\n}\n\n//we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsObjectFactory<ModuleInstance>()\n\nexport const isModuleInstance: TypeCheck<ModuleInstance> = factory.create(requiredModuleInstanceFunctions, [isModule])\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isModule } from './isModule'\n\nexport const asModule = AsObjectFactory.create(isModule)\n","import { Payload } from '@xyo-network/payload-model'\n\nimport { ModuleDescription } from '../../ModuleDescription'\n\nexport const ModuleDescriptionSchema = 'network.xyo.module.description'\nexport type ModuleDescriptionSchema = typeof ModuleDescriptionSchema\n\nexport type ModuleDescriptionPayload = Payload<ModuleDescription, ModuleDescriptionSchema>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleDescribeQuerySchema = 'network.xyo.query.module.describe'\nexport const ModuleDescribeQuerySchema: ModuleDescribeQuerySchema = 'network.xyo.query.module.describe'\n\nexport type ModuleDescribeQuery = Query<{\n schema: ModuleDescribeQuerySchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover'\nexport const ModuleDiscoverQuerySchema: ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover'\n\nexport type ModuleDiscoverQuery = Query<{\n maxDepth?: number\n schema: ModuleDiscoverQuerySchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleManifestQuerySchema = 'network.xyo.query.module.manifest'\nexport const ModuleManifestQuerySchema: ModuleManifestQuerySchema = 'network.xyo.query.module.manifest'\n\nexport type ModuleManifestQuery = Query<{\n maxDepth?: number\n schema: ModuleManifestQuerySchema\n}>\n","import { Address } from '@xylabs/hex'\nimport { AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const AddressPreviousHashSchema = `${AddressSchema}.hash.previous`\nexport type AddressPreviousHashSchema = typeof AddressPreviousHashSchema\n\nexport type AddressPreviousHashPayload = Payload<{\n address: Address\n previousHash?: string\n schema: AddressPreviousHashSchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport type ModuleAddressQuerySchema = 'network.xyo.query.module.address'\nexport const ModuleAddressQuerySchema: ModuleAddressQuerySchema = 'network.xyo.query.module.address'\n\nexport type ModuleAddressQuery = Query<{\n schema: ModuleAddressQuerySchema\n}>\n","import { Query } from '@xyo-network/payload-model'\n\nexport const ModuleStateQuerySchema = 'network.xyo.query.module.state'\nexport type ModuleStateQuerySchema = typeof ModuleStateQuerySchema\n\nexport type ModuleStateQuery = Query<void, ModuleStateQuerySchema>\n","import { Address } from '@xylabs/hex'\nimport { Query } from '@xyo-network/payload-model'\n\nexport type ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe'\nexport const ModuleSubscribeQuerySchema: ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe'\n\nexport interface ModuleSubscribeFilter {\n /** @field if specified, at least one of the schemas must be present in the boundwtness to generate a notification */\n schema?: string[]\n}\n\n//requests notification when a boundwitness is added to the modules chain that meets the filter criteria\nexport type ModuleSubscribeQuery = Query<{\n /** @field The address that will receive notifications */\n address: Address\n /** @field A subscribe with a null for filter is an unsubscribe */\n filter?: ModuleSubscribeFilter | null\n /** @field The maximum events queued per send [may increase frequency] */\n maxQueue?: number\n schema: ModuleSubscribeQuerySchema\n}>\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isModuleObject } from './isModuleObject'\n\nexport const asModuleObject = AsObjectFactory.create(isModuleObject)\n","import { IsObjectFactory, ObjectTypeShape } from '@xylabs/object'\n\nimport { Module } from './Module'\n\nexport const requiredModuleShape: ObjectTypeShape = {\n address: 'string',\n queries: 'array',\n query: 'function',\n}\n\nconst factory = new IsObjectFactory<Module>()\n\nexport const isModuleObject = factory.create(requiredModuleShape)\n","import { AnyObject, EmptyObject, TypeCheck } from '@xylabs/object'\nimport { AnyNonPromise } from '@xylabs/promise'\n\nimport { asModuleObject } from './asModuleObject'\nimport { isModuleObject } from './isModuleObject'\nimport { Module } from './Module'\n\nexport type ModuleTypeCheck<T extends Module = Module> = TypeCheck<T>\n\nexport class IsModuleFactory<T extends Module = Module> {\n create(expectedQueries?: string[], additionalChecks?: TypeCheck<AnyObject | EmptyObject>[]): ModuleTypeCheck<T> {\n return (obj: AnyNonPromise, config): obj is T => {\n const module = asModuleObject(obj)\n const result =\n isModuleObject(module, config) &&\n (expectedQueries?.reduce((prev, query) => prev && module.queries.includes(query), true) ?? true) &&\n //perform additional checks\n (additionalChecks?.reduce((prev, check) => prev && check(obj, config), true) ?? true)\n return result\n }\n }\n}\n","import { TypeCheck } from '@xylabs/object'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { ModuleStateQuerySchema } from '../Queries'\nimport { IsModuleFactory } from './IsModuleFactory'\nimport { isModuleObject } from './isModuleObject'\nimport { Module } from './Module'\n\nexport const requiredModuleQueries: Schema[] = [ModuleStateQuerySchema]\n\n//we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsModuleFactory<Module>()\n\nexport const isModule: TypeCheck<Module> = factory.create(requiredModuleQueries, [isModuleObject])\n","import { AsObjectFactory } from '@xylabs/object'\n\nimport { isAttachableModuleInstance } from './isAttachableInstance'\n\nexport const asAttachableModuleInstance = AsObjectFactory.create(isAttachableModuleInstance)\n","import { IsObjectFactory, ObjectTypeShape, TypeCheck } from '@xylabs/object'\n\nimport { isModuleInstance } from '../isModuleInstance'\nimport { AttachableModuleInstance } from './AttachableInstance'\n\nexport const requiredAttachableModuleInstanceFunctions: ObjectTypeShape = {\n downResolver: 'object',\n upResolver: 'object',\n}\n\n//we do not use IsInstanceFactory here to prevent a cycle\nconst factory = new IsObjectFactory<AttachableModuleInstance>()\n\nexport const isAttachableModuleInstance: TypeCheck<AttachableModuleInstance> = factory.create(requiredAttachableModuleInstanceFunctions, [\n isModuleInstance,\n])\n","import { IsObjectFactory, TypeCheck } from '@xylabs/object'\n\nimport { ModuleEventData } from '../../EventsModels'\nimport { ModuleParams } from '../../ModuleParams'\nimport { ModuleInstance } from '../Instance'\nimport { ModuleResolverInstance } from '../ModuleResolver'\n\nexport interface AttachableModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends ModuleInstance<TParams, TEventData> {\n /* The resolver is a 'down' resolver. It can resolve the module or any children (if it is a node for example), that are in the module*/\n readonly downResolver: ModuleResolverInstance\n\n /* The resolver is a 'up' resolver. It can resolve the parent or any children of the parent*/\n /* This is set by a NodeModule when attaching to the module */\n readonly upResolver: ModuleResolverInstance\n}\n\nexport type AttachableModuleInstanceTypeCheck<T extends AttachableModuleInstance = AttachableModuleInstance> = TypeCheck<T>\n\nexport class IsAttachableModuleInstanceFactory<T extends AttachableModuleInstance = AttachableModuleInstance> extends IsObjectFactory<T> {}\n","import { IsObjectFactory, toJsonString, TypeCheck } from '@xylabs/object'\n\nimport { ModuleEventData } from '../EventsModels'\nimport { Module, ModuleQueryFunctions } from '../module'\nimport { ModuleIdentifier } from '../ModuleIdentifier'\nimport { ModuleParams } from '../ModuleParams'\nimport { ObjectResolver } from './ObjectResolver'\n\nexport type ModulePipeLine = Lowercase<'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many'>\n\nexport type ModuleStatus = 'started' | 'stopped' | 'dead' | 'wrapped' | 'proxy'\n\nexport class DeadModuleError extends Error {\n constructor(\n public id: ModuleIdentifier,\n public error: Error | undefined,\n msg = 'Dead Module Error',\n ) {\n super(`${msg} [${id}]: ${error?.message ?? toJsonString(error)}`)\n\n // Set the prototype explicitly.\n Object.setPrototypeOf(this, DeadModuleError.prototype)\n }\n}\n\nexport interface ModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>\n extends Module<TParams, TEventData>,\n ObjectResolver<ModuleInstance>,\n ModuleQueryFunctions {\n readonly pipeline?: ModulePipeLine\n\n //if the module has become non-functional, such as a broken bridge connection, this will be 'dead'\n readonly status: ModuleStatus\n}\n\nexport type InstanceTypeCheck<T extends ModuleInstance = ModuleInstance> = TypeCheck<T>\n\nexport class IsInstanceFactory<T extends ModuleInstance = ModuleInstance> extends IsObjectFactory<T> {}\n","import { Address } from '@xylabs/hex'\nimport { AnyObject, EmptyObject, TypeCheck } from '@xylabs/object'\n\nimport { ModuleName } from '../ModuleIdentifier'\n\nexport type Direction = 'up' | 'down' | 'all'\nexport type Visibility = 'public' | 'private' | 'all'\n\nexport interface ResolveStrategy {\n maxDepth?: number\n required?: boolean | 'warn' | 'log'\n retry?: number\n timeout?: number\n}\n\nexport interface ObjectFilterOptions<T extends EmptyObject = AnyObject> extends ResolveStrategy {\n direction?: Direction\n identity?: TypeCheck<T>\n visibility?: Visibility\n}\n\nexport interface AddressObjectFilter<T extends EmptyObject = AnyObject> extends ObjectFilterOptions<T> {\n address: Address[]\n}\n\nexport const isAddressObjectFilter = <T extends EmptyObject = AnyObject>(value: unknown): value is AddressObjectFilter<T> =>\n (value as AddressObjectFilter<T>).address !== undefined\n\nexport interface NameObjectFilter<T extends EmptyObject = AnyObject> extends ObjectFilterOptions<T> {\n name: ModuleName[]\n}\n\nexport const isNameObjectFilter = <T extends EmptyObject = AnyObject>(value: unknown): value is NameObjectFilter<T> =>\n (value as NameObjectFilter<T>).name !== undefined\n\nexport interface QueryObjectFilter<T extends EmptyObject = AnyObject> extends ObjectFilterOptions<T> {\n query: string[][]\n}\n\nexport const isQueryObjectFilter = <T extends EmptyObject = AnyObject>(value: unknown): value is QueryObjectFilter<T> =>\n (value as QueryObjectFilter<T>).query !== undefined\n\nexport type AnyObjectFilter<T extends EmptyObject = AnyObject> = Partial<AddressObjectFilter<T>> &\n Partial<NameObjectFilter<T>> &\n Partial<QueryObjectFilter<T>>\n\nexport type ObjectFilter<T extends EmptyObject> = ObjectFilterOptions<T> | AddressObjectFilter<T> | NameObjectFilter<T> | QueryObjectFilter<T>\n","import { ModuleInstance } from './Instance'\nimport {\n AddressObjectFilter,\n AnyObjectFilter,\n isAddressObjectFilter,\n isNameObjectFilter,\n isQueryObjectFilter,\n NameObjectFilter,\n ObjectFilter,\n ObjectFilterOptions,\n QueryObjectFilter,\n} from './ObjectFilter'\n\nexport interface ModuleFilterOptions<T extends ModuleInstance = ModuleInstance> extends ObjectFilterOptions<T> {}\n\nexport const isAddressModuleFilter = isAddressObjectFilter<ModuleInstance>\n\nexport const isNameModuleFilter = isNameObjectFilter<ModuleInstance>\n\nexport const isQueryModuleFilter = isQueryObjectFilter<ModuleInstance>\n\nexport type AnyModuleFilter<T extends ModuleInstance = ModuleInstance> = AnyObjectFilter<T>\n\nexport type AddressModuleFilter<T extends ModuleInstance = ModuleInstance> = AddressObjectFilter<T>\n\nexport type NameModuleFilter<T extends ModuleInstance = ModuleInstance> = NameObjectFilter<T>\n\nexport type QueryModuleFilter<T extends ModuleInstance = ModuleInstance> = QueryObjectFilter<T>\n\nexport type ModuleFilter<T extends ModuleInstance = ModuleInstance> = ObjectFilter<T>\n","import { AnyObject, EmptyObject } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\n\nimport { ModuleIdentifier } from '../ModuleIdentifier'\nimport { ObjectFilter, ObjectFilterOptions } from './ObjectFilter'\n\nexport const isObjectResolver = <T extends EmptyObject = AnyObject>(value?: unknown): value is ObjectResolver<T> => {\n // eslint-disable-next-line deprecation/deprecation\n return typeof (value as Partial<ObjectResolver<T>>).resolve === 'function'\n}\n\nexport interface ObjectResolver<TResult extends EmptyObject> {\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n resolve<T extends TResult = TResult>(): Promisable<T | undefined>\n resolve<T extends TResult = TResult>(all: '*', options?: ObjectFilterOptions<T>): Promisable<T[]>\n resolve<T extends TResult = TResult>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promisable<T | undefined>\n resolve<T extends TResult = TResult>(filter: ObjectFilter<T>, options?: ObjectFilterOptions<T>): Promisable<T[]>\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n resolve<T extends TResult = TResult>(filter?: ObjectFilter<T>, options?: ObjectFilterOptions<T>): Promisable<T[]>\n resolve<T extends TResult = TResult>(\n idOrFilter?: ObjectFilter<T> | ModuleIdentifier,\n options?: ObjectFilterOptions<T>,\n ): Promisable<T | T[] | undefined>\n}\n\nexport interface ObjectResolverInstance<TResult extends EmptyObject> extends ObjectResolver<TResult> {\n addResolver: (resolver: ObjectResolverInstance<TResult>) => this\n removeResolver: (resolver: ObjectResolverInstance<TResult>) => this\n}\n","import { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\n\nimport { ModuleIdentifier } from '../ModuleIdentifier'\nimport { ModuleInstance } from './Instance'\nimport { ObjectFilterOptions } from './ObjectFilter'\nimport { isObjectResolver, ObjectResolver } from './ObjectResolver'\n\nexport const isModuleResolver = isObjectResolver<ModuleInstance>\n\nexport interface ModuleResolver<TResult extends ModuleInstance = ModuleInstance> extends ObjectResolver<TResult> {}\n\nexport interface ModuleNameResolver {\n resolveIdentifier(id: ModuleIdentifier, options?: ObjectFilterOptions): Promisable<Address | undefined>\n}\n\nexport interface ModuleResolverInstance<TResult extends ModuleInstance = ModuleInstance> extends ModuleResolver<TResult>, ModuleNameResolver {\n addResolver: (resolver: ModuleResolverInstance<TResult>) => this\n removeResolver: (resolver: ModuleResolverInstance<TResult>) => this\n}\n","import { Module } from '../module'\n\n/**\n * Used to filter duplicates from an array of modules\n * @example: modulesArray.filter(duplicateModules)\n * @param value Current Module\n * @param index Current Module's index\n * @param array Module Array\n * @returns True if the Module's address is the first occurrence of\n * that address in the array, false otherwise\n */\nexport const duplicateModules = (value: Module, index: number, array: Module[]): value is Module => {\n return array.findIndex((v) => v.address === value.address) === index\n}\n","// Inspired by https://stackoverflow.com/a/49079549/2803259\n\nimport { every, isArray, isBoolean, isNull, isNumber, isPlainObject, isString, isUndefined, overSome } from '@xylabs/lodash'\n\nconst JSONPrimitiveChecks = [isUndefined, isNull, isBoolean, isNumber, isString]\nconst JSONComplexChecks = [isPlainObject, isArray]\n\nexport const serializable = (field: unknown, depth?: number): boolean | null => {\n let depthExceeded = false\n const decrementDepth = () => (depth ? depth-- : undefined)\n\n const recursiveSerializable = (field: unknown) => {\n if (depth !== undefined && depth < 1) {\n depthExceeded = true\n return false\n }\n\n // decrement during every recursion\n decrementDepth()\n\n const nestedSerializable = (field: unknown): boolean => overSome(JSONComplexChecks)(field) && every(field as object, recursiveSerializable)\n\n return overSome([...JSONPrimitiveChecks, nestedSerializable])(field)\n }\n\n const valid = recursiveSerializable(field)\n\n return depthExceeded ? null : valid\n}\n\nexport const serializableField = (field: unknown) => {\n return overSome([...JSONPrimitiveChecks, ...JSONComplexChecks])(field)\n}\n","import { Address, isAddress } from '@xylabs/hex'\n\nexport const DisallowedModuleIdentifierCharacters = {\n ' ': true,\n '!': true,\n '\"': true,\n '#': true,\n $: true,\n '%': true,\n '&': true,\n \"'\": true,\n '(': true,\n ')': true,\n '*': true,\n ',': true,\n '.': true,\n '/': true,\n ':': true,\n ';': true,\n '<': true,\n '=': true,\n '>': true,\n '?': true,\n '@': true,\n '[': true,\n ']': true,\n '^': true,\n _: true,\n '{': true,\n '|': true,\n '}': true,\n '~': true,\n}\nexport type ReservedModuleIdentifierCharacter = keyof typeof DisallowedModuleIdentifierCharacters\nexport const ReservedModuleIdentifierCharacters = new Set<ReservedModuleIdentifierCharacter>(\n Object.keys(DisallowedModuleIdentifierCharacters) as ReservedModuleIdentifierCharacter[],\n)\n\n//using Exclude to make this type not allowed to take a naked string\nexport type ModuleName = Exclude<string, 'reserved-module-name-56487634'>\n\nexport type ModuleIdentifier =\n | ColonPair<ModuleIdentifierPart>\n | ColonPair<ColonPair<ModuleIdentifierPart>>\n | ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>>>\n | ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ColonPair<ModuleIdentifierPart>>>>>>>\n\nexport type ColonPair<T extends string> = `${T}:${T}` | T\n\nexport type ModuleIdentifierPart = Exclude<Address | ModuleName, '*'>\n\nexport const isModuleName = (value: unknown): value is ModuleName => {\n return typeof value === 'string' && !isAddress(value) && !includesReservedModuleIdentifierCharacter(value)\n}\n\nexport const includesReservedModuleIdentifierCharacter = (value: unknown): boolean => {\n return typeof value === 'string' && [...value].some((char) => ReservedModuleIdentifierCharacters.has(char as ReservedModuleIdentifierCharacter))\n}\n\nexport const isModuleIdentifierPart = (value: unknown): value is ModuleIdentifierPart => {\n return isModuleName(value) || isAddress(value)\n}\n","import { isPayloadOfSchemaType, Payload, WithMeta } from '@xyo-network/payload-model'\n\nexport interface StateDictionary {\n [key: string]: string | number | undefined\n}\nexport interface State<T extends StateDictionary = StateDictionary> {\n state: T\n}\n\nexport const ModuleStateSchema = 'network.xyo.module.state' as const\nexport type ModuleStateSchema = typeof ModuleStateSchema\n\nexport type ModuleState<T extends StateDictionary = StateDictionary> = Payload<State<T>, ModuleStateSchema>\n\nexport const isModuleState = <T extends StateDictionary = StateDictionary>(payload?: Payload | null): payload is ModuleState<T> => {\n return isPayloadOfSchemaType<ModuleState<T>>(ModuleStateSchema)(payload)\n}\n\nexport const isModuleStateWithMeta = <T extends StateDictionary = StateDictionary>(payload?: Payload | null): payload is WithMeta<ModuleState<T>> => {\n return isPayloadOfSchemaType<WithMeta<ModuleState<T>>>(ModuleStateSchema)(payload)\n}\n","import { TypeCheck } from '@xylabs/object'\n\nimport { isModuleInstance } from './instance'\nimport { isModule } from './module'\n\nexport const WithFactory = {\n create: <T extends object>(typeCheck: TypeCheck<T>) => {\n return <R>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n module: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n closure: (module: T) => R,\n ): R | undefined => {\n return typeCheck(module) ? closure(module) : undefined\n }\n },\n}\n\nexport const withModule = WithFactory.create(isModule)\nexport const withModuleInstance = WithFactory.create(isModuleInstance)\n"],"mappings":"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","names":["ModuleConfigSchema","creatableModule","constructor","toCreatableModuleRegistry","dict","Object","entries","reduce","registry","schema","factory","Array","isArray","assignCreatableModuleRegistry","target","sources","map","source","factories","existingFactories","hasLabels","factory","labels","undefined","ModuleFactory","configSchemas","creatableModule","defaultLogger","defaultParams","labels","constructor","params","Object","assign","configSchema","withParams","_getRootFunction","funcName","anyThis","__proto__","_noOverride","functionName","thisFunc","rootFunc","assertEx","create","factory","schema","mergedParams","merge","config","_params","Error","import_assert","hasAllLabels","source","required","Object","entries","every","key","value","hasOwnProperty","ModuleFactoryLocator","constructor","_registry","registry","locate","schema","labels","assertEx","tryLocate","configString","labelsString","JSON","stringify","register","mod","configSchemas","map","existingFactories","factory","create","bind","Object","assign","registerMany","additional","entries","factories","filter","hasLabels","find","hasAllLabels","import_object","import_object","import_object","ModuleDescriptionSchema","ModuleDescribeQuerySchema","ModuleDiscoverQuerySchema","ModuleManifestQuerySchema","AddressPreviousHashSchema","AddressSchema","ModuleAddressQuerySchema","ModuleStateQuerySchema","ModuleSubscribeQuerySchema","import_object","requiredModuleShape","address","queries","query","factory","IsObjectFactory","isModuleObject","create","asModuleObject","AsObjectFactory","create","isModuleObject","IsModuleFactory","create","expectedQueries","additionalChecks","obj","config","module","asModuleObject","result","isModuleObject","reduce","prev","query","queries","includes","check","requiredModuleQueries","ModuleStateQuerySchema","factory","IsModuleFactory","isModule","create","isModuleObject","asModule","AsObjectFactory","create","isModule","requiredModuleInstanceFunctions","describe","discover","manifest","factory","IsObjectFactory","isModuleInstance","create","isModule","asModuleInstance","AsObjectFactory","create","isModuleInstance","import_object","import_object","requiredAttachableModuleInstanceFunctions","downResolver","upResolver","factory","IsObjectFactory","isAttachableModuleInstance","create","isModuleInstance","asAttachableModuleInstance","AsObjectFactory","create","isAttachableModuleInstance","import_object","IsAttachableModuleInstanceFactory","IsObjectFactory","import_object","DeadModuleError","Error","constructor","id","error","msg","message","toJsonString","Object","setPrototypeOf","prototype","IsInstanceFactory","IsObjectFactory","isAddressObjectFilter","value","address","undefined","isNameObjectFilter","name","isQueryObjectFilter","query","isAddressModuleFilter","isAddressObjectFilter","isNameModuleFilter","isNameObjectFilter","isQueryModuleFilter","isQueryObjectFilter","isObjectResolver","value","resolve","isModuleResolver","isObjectResolver","duplicateModules","value","index","array","findIndex","v","address","import_lodash","JSONPrimitiveChecks","isUndefined","isNull","isBoolean","isNumber","isString","JSONComplexChecks","isPlainObject","isArray","serializable","field","depth","depthExceeded","decrementDepth","undefined","recursiveSerializable","nestedSerializable","overSome","every","valid","serializableField","DisallowedModuleIdentifierCharacters","$","_","ReservedModuleIdentifierCharacters","Set","Object","keys","isModuleName","value","isAddress","includesReservedModuleIdentifierCharacter","some","char","has","isModuleIdentifierPart","ModuleStateSchema","isModuleState","payload","isPayloadOfSchemaType","isModuleStateWithMeta","WithFactory","create","typeCheck","module","closure","undefined","withModule","isModule","withModuleInstance","isModuleInstance"]}
@@ -8,6 +8,7 @@ export * from './lib';
8
8
  export * from './module';
9
9
  export * from './ModuleDescription';
10
10
  export * from './ModuleIdentifier';
11
+ export * from './ModuleIdentifierTransformer';
11
12
  export * from './ModuleParams';
12
13
  export * from './ModuleQueryHandlerResult';
13
14
  export * from './ModuleQueryResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
@@ -8,6 +8,7 @@ export * from './lib';
8
8
  export * from './module';
9
9
  export * from './ModuleDescription';
10
10
  export * from './ModuleIdentifier';
11
+ export * from './ModuleIdentifierTransformer';
11
12
  export * from './ModuleParams';
12
13
  export * from './ModuleQueryHandlerResult';
13
14
  export * from './ModuleQueryResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
@@ -8,6 +8,7 @@ export * from './lib';
8
8
  export * from './module';
9
9
  export * from './ModuleDescription';
10
10
  export * from './ModuleIdentifier';
11
+ export * from './ModuleIdentifierTransformer';
11
12
  export * from './ModuleParams';
12
13
  export * from './ModuleQueryHandlerResult';
13
14
  export * from './ModuleQueryResult';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA"}
@@ -14,9 +14,9 @@ __name(creatableModule, "creatableModule");
14
14
 
15
15
  // src/CreatableModule/CreatableModuleRegistry.ts
16
16
  var toCreatableModuleRegistry = /* @__PURE__ */ __name((dict) => {
17
- return Object.entries(dict).reduce((registry, [schema, factory4]) => {
18
- registry[schema] = Array.isArray(factory4) ? factory4 : [
19
- factory4
17
+ return Object.entries(dict).reduce((registry, [schema, factory5]) => {
18
+ registry[schema] = Array.isArray(factory5) ? factory5 : [
19
+ factory5
20
20
  ];
21
21
  return registry;
22
22
  }, {});
@@ -35,8 +35,8 @@ var assignCreatableModuleRegistry = /* @__PURE__ */ __name((target = {}, ...sour
35
35
  }, "assignCreatableModuleRegistry");
36
36
 
37
37
  // src/CreatableModule/LabeledCreatableModuleFactory.ts
38
- var hasLabels = /* @__PURE__ */ __name((factory4) => {
39
- return factory4.labels !== void 0;
38
+ var hasLabels = /* @__PURE__ */ __name((factory5) => {
39
+ return factory5.labels !== void 0;
40
40
  }, "hasLabels");
41
41
 
42
42
  // src/CreatableModule/ModuleFactory.ts
@@ -74,14 +74,14 @@ var _ModuleFactory = class _ModuleFactory {
74
74
  }
75
75
  create(params) {
76
76
  var _a;
77
- const factory4 = this;
78
- const schema = factory4.creatableModule.configSchema;
79
- const mergedParams = merge({}, factory4.defaultParams, params, {
80
- config: merge({}, (_a = factory4.defaultParams) == null ? void 0 : _a.config, params == null ? void 0 : params.config, {
77
+ const factory5 = this;
78
+ const schema = factory5.creatableModule.configSchema;
79
+ const mergedParams = merge({}, factory5.defaultParams, params, {
80
+ config: merge({}, (_a = factory5.defaultParams) == null ? void 0 : _a.config, params == null ? void 0 : params.config, {
81
81
  schema
82
82
  })
83
83
  });
84
- return factory4.creatableModule.create(mergedParams);
84
+ return factory5.creatableModule.create(mergedParams);
85
85
  }
86
86
  factory(_params) {
87
87
  throw new Error("Method not implemented.");
@@ -134,7 +134,7 @@ var _ModuleFactoryLocator = class _ModuleFactoryLocator {
134
134
  register(mod, labels) {
135
135
  mod.configSchemas.map((schema) => {
136
136
  const existingFactories = this._registry[schema];
137
- const factory4 = {
137
+ const factory5 = {
138
138
  // Destructure instance properties
139
139
  ...mod,
140
140
  // Copy static methods
@@ -144,9 +144,9 @@ var _ModuleFactoryLocator = class _ModuleFactoryLocator {
144
144
  };
145
145
  this._registry[schema] = existingFactories ? [
146
146
  ...existingFactories,
147
- factory4
147
+ factory5
148
148
  ] : [
149
- factory4
149
+ factory5
150
150
  ];
151
151
  });
152
152
  return this;
@@ -177,7 +177,7 @@ var _ModuleFactoryLocator = class _ModuleFactoryLocator {
177
177
  var _a, _b;
178
178
  return labels ? (
179
179
  // Find the first factory that has labels and has all the labels provided
180
- (_a = this._registry[schema]) == null ? void 0 : _a.filter(hasLabels).find((factory4) => hasAllLabels(factory4 == null ? void 0 : factory4.labels, labels))
180
+ (_a = this._registry[schema]) == null ? void 0 : _a.filter(hasLabels).find((factory5) => hasAllLabels(factory5 == null ? void 0 : factory5.labels, labels))
181
181
  ) : (_b = this._registry[schema]) == null ? void 0 : _b[0];
182
182
  }
183
183
  };
@@ -274,8 +274,32 @@ var isModuleInstance = factory3.create(requiredModuleInstanceFunctions, [
274
274
  // src/instance/asModuleInstance.ts
275
275
  var asModuleInstance = AsObjectFactory3.create(isModuleInstance);
276
276
 
277
+ // src/instance/attachable/asAttachableInstance.ts
278
+ import { AsObjectFactory as AsObjectFactory4 } from "@xylabs/object";
279
+
280
+ // src/instance/attachable/isAttachableInstance.ts
281
+ import { IsObjectFactory as IsObjectFactory3 } from "@xylabs/object";
282
+ var requiredAttachableModuleInstanceFunctions = {
283
+ downResolver: "object",
284
+ upResolver: "object"
285
+ };
286
+ var factory4 = new IsObjectFactory3();
287
+ var isAttachableModuleInstance = factory4.create(requiredAttachableModuleInstanceFunctions, [
288
+ isModuleInstance
289
+ ]);
290
+
291
+ // src/instance/attachable/asAttachableInstance.ts
292
+ var asAttachableModuleInstance = AsObjectFactory4.create(isAttachableModuleInstance);
293
+
294
+ // src/instance/attachable/AttachableInstance.ts
295
+ import { IsObjectFactory as IsObjectFactory4 } from "@xylabs/object";
296
+ var _IsAttachableModuleInstanceFactory = class _IsAttachableModuleInstanceFactory extends IsObjectFactory4 {
297
+ };
298
+ __name(_IsAttachableModuleInstanceFactory, "IsAttachableModuleInstanceFactory");
299
+ var IsAttachableModuleInstanceFactory = _IsAttachableModuleInstanceFactory;
300
+
277
301
  // src/instance/Instance.ts
278
- import { IsObjectFactory as IsObjectFactory3, toJsonString } from "@xylabs/object";
302
+ import { IsObjectFactory as IsObjectFactory5, toJsonString } from "@xylabs/object";
279
303
  var _DeadModuleError = class _DeadModuleError extends Error {
280
304
  id;
281
305
  error;
@@ -288,7 +312,7 @@ var _DeadModuleError = class _DeadModuleError extends Error {
288
312
  };
289
313
  __name(_DeadModuleError, "DeadModuleError");
290
314
  var DeadModuleError = _DeadModuleError;
291
- var _IsInstanceFactory = class _IsInstanceFactory extends IsObjectFactory3 {
315
+ var _IsInstanceFactory = class _IsInstanceFactory extends IsObjectFactory5 {
292
316
  };
293
317
  __name(_IsInstanceFactory, "IsInstanceFactory");
294
318
  var IsInstanceFactory = _IsInstanceFactory;
@@ -424,6 +448,7 @@ export {
424
448
  AddressPreviousHashSchema,
425
449
  DeadModuleError,
426
450
  DisallowedModuleIdentifierCharacters,
451
+ IsAttachableModuleInstanceFactory,
427
452
  IsInstanceFactory,
428
453
  IsModuleFactory,
429
454
  ModuleAddressQuerySchema,
@@ -439,6 +464,7 @@ export {
439
464
  ModuleSubscribeQuerySchema,
440
465
  ReservedModuleIdentifierCharacters,
441
466
  WithFactory,
467
+ asAttachableModuleInstance,
442
468
  asModule,
443
469
  asModuleInstance,
444
470
  asModuleObject,
@@ -450,6 +476,7 @@ export {
450
476
  includesReservedModuleIdentifierCharacter,
451
477
  isAddressModuleFilter,
452
478
  isAddressObjectFilter,
479
+ isAttachableModuleInstance,
453
480
  isModule,
454
481
  isModuleIdentifierPart,
455
482
  isModuleInstance,
@@ -463,6 +490,7 @@ export {
463
490
  isObjectResolver,
464
491
  isQueryModuleFilter,
465
492
  isQueryObjectFilter,
493
+ requiredAttachableModuleInstanceFunctions,
466
494
  requiredModuleInstanceFunctions,
467
495
  requiredModuleQueries,
468
496
  requiredModuleShape,