@xyo-network/module-model 2.66.9 → 2.67.0-rc.2

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 (207) hide show
  1. package/dist/cjs/CreatableModule.js.map +1 -1
  2. package/dist/cjs/ModuleFactory.js.map +1 -1
  3. package/dist/cjs/index.js +2 -5
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/instance/ModuleFilter.js.map +1 -0
  6. package/dist/cjs/instance/ModuleInstance.js +3 -0
  7. package/dist/cjs/instance/ModuleInstance.js.map +1 -0
  8. package/dist/cjs/instance/ModuleRepository.js.map +1 -0
  9. package/dist/cjs/instance/ModuleResolver.js +3 -0
  10. package/dist/cjs/instance/ModuleResolver.js.map +1 -0
  11. package/dist/cjs/instance/ResolveFunctions.js +3 -0
  12. package/dist/cjs/instance/ResolveFunctions.js.map +1 -0
  13. package/dist/cjs/instance/identity/IsInstanceFactory.js +8 -0
  14. package/dist/cjs/instance/identity/IsInstanceFactory.js.map +1 -0
  15. package/dist/cjs/instance/identity/asModuleInstance.js +7 -0
  16. package/dist/cjs/instance/identity/asModuleInstance.js.map +1 -0
  17. package/dist/cjs/instance/identity/index.js +7 -0
  18. package/dist/cjs/instance/identity/index.js.map +1 -0
  19. package/dist/cjs/instance/identity/isModuleInstance.js +15 -0
  20. package/dist/cjs/instance/identity/isModuleInstance.js.map +1 -0
  21. package/dist/cjs/instance/index.js +10 -0
  22. package/dist/cjs/instance/index.js.map +1 -0
  23. package/dist/{esm → cjs/module}/Module.js.map +1 -1
  24. package/dist/cjs/module/ModuleEvents.js +3 -0
  25. package/dist/cjs/module/ModuleEvents.js.map +1 -0
  26. package/dist/cjs/module/ModuleFields.js +3 -0
  27. package/dist/cjs/module/ModuleFields.js.map +1 -0
  28. package/dist/cjs/module/identity/IsModuleFactory.js +20 -0
  29. package/dist/cjs/module/identity/IsModuleFactory.js.map +1 -0
  30. package/dist/cjs/module/identity/ModuleQueryFunctions.js +3 -0
  31. package/dist/cjs/module/identity/ModuleQueryFunctions.js.map +1 -0
  32. package/dist/cjs/module/identity/asModule.js +7 -0
  33. package/dist/cjs/module/identity/asModule.js.map +1 -0
  34. package/dist/cjs/module/identity/asModuleObject.js +7 -0
  35. package/dist/cjs/module/identity/asModuleObject.js.map +1 -0
  36. package/dist/cjs/module/identity/index.js +10 -0
  37. package/dist/cjs/module/identity/index.js.map +1 -0
  38. package/dist/cjs/module/identity/isModule.js +18 -0
  39. package/dist/cjs/module/identity/isModule.js.map +1 -0
  40. package/dist/cjs/module/identity/isModuleObject.js +15 -0
  41. package/dist/cjs/module/identity/isModuleObject.js.map +1 -0
  42. package/dist/cjs/module/index.js +8 -0
  43. package/dist/cjs/module/index.js.map +1 -0
  44. package/dist/cjs/withModule.js +4 -3
  45. package/dist/cjs/withModule.js.map +1 -1
  46. package/dist/esm/CreatableModule.js.map +1 -1
  47. package/dist/esm/ModuleFactory.js.map +1 -1
  48. package/dist/esm/index.js +2 -5
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/instance/ModuleFilter.js.map +1 -0
  51. package/dist/esm/instance/ModuleInstance.js +2 -0
  52. package/dist/esm/instance/ModuleInstance.js.map +1 -0
  53. package/dist/esm/instance/ModuleRepository.js.map +1 -0
  54. package/dist/esm/instance/ModuleResolver.js +2 -0
  55. package/dist/esm/instance/ModuleResolver.js.map +1 -0
  56. package/dist/esm/instance/ResolveFunctions.js +2 -0
  57. package/dist/esm/instance/ResolveFunctions.js.map +1 -0
  58. package/dist/esm/instance/identity/IsInstanceFactory.js +4 -0
  59. package/dist/esm/instance/identity/IsInstanceFactory.js.map +1 -0
  60. package/dist/esm/instance/identity/asModuleInstance.js +4 -0
  61. package/dist/esm/instance/identity/asModuleInstance.js.map +1 -0
  62. package/dist/esm/instance/identity/index.js +4 -0
  63. package/dist/esm/instance/identity/index.js.map +1 -0
  64. package/dist/esm/instance/identity/isModuleInstance.js +12 -0
  65. package/dist/esm/instance/identity/isModuleInstance.js.map +1 -0
  66. package/dist/esm/instance/index.js +7 -0
  67. package/dist/esm/instance/index.js.map +1 -0
  68. package/dist/{cjs → esm/module}/Module.js.map +1 -1
  69. package/dist/esm/module/ModuleEvents.js +2 -0
  70. package/dist/esm/module/ModuleEvents.js.map +1 -0
  71. package/dist/esm/module/ModuleFields.js +2 -0
  72. package/dist/esm/module/ModuleFields.js.map +1 -0
  73. package/dist/esm/module/identity/IsModuleFactory.js +15 -0
  74. package/dist/esm/module/identity/IsModuleFactory.js.map +1 -0
  75. package/dist/esm/module/identity/ModuleQueryFunctions.js +2 -0
  76. package/dist/esm/module/identity/ModuleQueryFunctions.js.map +1 -0
  77. package/dist/esm/module/identity/asModule.js +4 -0
  78. package/dist/esm/module/identity/asModule.js.map +1 -0
  79. package/dist/esm/module/identity/asModuleObject.js +4 -0
  80. package/dist/esm/module/identity/asModuleObject.js.map +1 -0
  81. package/dist/esm/module/identity/index.js +7 -0
  82. package/dist/esm/module/identity/index.js.map +1 -0
  83. package/dist/esm/module/identity/isModule.js +15 -0
  84. package/dist/esm/module/identity/isModule.js.map +1 -0
  85. package/dist/esm/module/identity/isModuleObject.js +12 -0
  86. package/dist/esm/module/identity/isModuleObject.js.map +1 -0
  87. package/dist/esm/module/index.js +5 -0
  88. package/dist/esm/module/index.js.map +1 -0
  89. package/dist/esm/withModule.js +2 -1
  90. package/dist/esm/withModule.js.map +1 -1
  91. package/dist/types/CreatableModule.d.ts +10 -9
  92. package/dist/types/CreatableModule.d.ts.map +1 -1
  93. package/dist/types/Events/ModuleBusy.d.ts +1 -1
  94. package/dist/types/Events/ModuleError.d.ts +1 -1
  95. package/dist/types/Events/ModuleQueried.d.ts +1 -1
  96. package/dist/types/ModuleFactory.d.ts +14 -8
  97. package/dist/types/ModuleFactory.d.ts.map +1 -1
  98. package/dist/types/ModuleParams.d.ts +5 -9
  99. package/dist/types/ModuleParams.d.ts.map +1 -1
  100. package/dist/types/index.d.ts +2 -5
  101. package/dist/types/index.d.ts.map +1 -1
  102. package/dist/types/{ModuleFilter.d.ts → instance/ModuleFilter.d.ts} +2 -2
  103. package/dist/types/instance/ModuleFilter.d.ts.map +1 -0
  104. package/dist/types/instance/ModuleInstance.d.ts +10 -0
  105. package/dist/types/instance/ModuleInstance.d.ts.map +1 -0
  106. package/dist/types/{ModuleRepository.d.ts → instance/ModuleRepository.d.ts} +2 -1
  107. package/dist/types/instance/ModuleRepository.d.ts.map +1 -0
  108. package/dist/types/instance/ModuleResolver.d.ts +7 -0
  109. package/dist/types/instance/ModuleResolver.d.ts.map +1 -0
  110. package/dist/types/instance/ResolveFunctions.d.ts +9 -0
  111. package/dist/types/instance/ResolveFunctions.d.ts.map +1 -0
  112. package/dist/types/instance/identity/IsInstanceFactory.d.ts +6 -0
  113. package/dist/types/instance/identity/IsInstanceFactory.d.ts.map +1 -0
  114. package/dist/types/instance/identity/asModuleInstance.d.ts +5 -0
  115. package/dist/types/instance/identity/asModuleInstance.d.ts.map +1 -0
  116. package/dist/types/instance/identity/index.d.ts +4 -0
  117. package/dist/types/instance/identity/index.d.ts.map +1 -0
  118. package/dist/types/instance/identity/isModuleInstance.d.ts +5 -0
  119. package/dist/types/instance/identity/isModuleInstance.d.ts.map +1 -0
  120. package/dist/types/instance/index.d.ts +7 -0
  121. package/dist/types/instance/index.d.ts.map +1 -0
  122. package/dist/types/lib/duplicateModules.d.ts +1 -1
  123. package/dist/types/module/Module.d.ts +7 -0
  124. package/dist/types/module/Module.d.ts.map +1 -0
  125. package/dist/types/module/ModuleEvents.d.ts +11 -0
  126. package/dist/types/module/ModuleEvents.d.ts.map +1 -0
  127. package/dist/types/module/ModuleFields.d.ts +18 -0
  128. package/dist/types/module/ModuleFields.d.ts.map +1 -0
  129. package/dist/types/module/identity/IsModuleFactory.d.ts +7 -0
  130. package/dist/types/module/identity/IsModuleFactory.d.ts.map +1 -0
  131. package/dist/types/module/identity/ModuleQueryFunctions.d.ts +12 -0
  132. package/dist/types/module/identity/ModuleQueryFunctions.d.ts.map +1 -0
  133. package/dist/types/module/identity/asModule.d.ts +5 -0
  134. package/dist/types/module/identity/asModule.d.ts.map +1 -0
  135. package/dist/types/module/identity/asModuleObject.d.ts +5 -0
  136. package/dist/types/module/identity/asModuleObject.d.ts.map +1 -0
  137. package/dist/types/module/identity/index.d.ts +7 -0
  138. package/dist/types/module/identity/index.d.ts.map +1 -0
  139. package/dist/types/module/identity/isModule.d.ts +5 -0
  140. package/dist/types/module/identity/isModule.d.ts.map +1 -0
  141. package/dist/types/module/identity/isModuleObject.d.ts +5 -0
  142. package/dist/types/module/identity/isModuleObject.d.ts.map +1 -0
  143. package/dist/types/module/index.d.ts +5 -0
  144. package/dist/types/module/index.d.ts.map +1 -0
  145. package/dist/types/withModule.d.ts +4 -4
  146. package/dist/types/withModule.d.ts.map +1 -1
  147. package/package.json +16 -14
  148. package/src/CreatableModule.ts +10 -9
  149. package/src/Events/ModuleBusy.ts +1 -1
  150. package/src/Events/ModuleError.ts +1 -1
  151. package/src/Events/ModuleQueried.ts +1 -1
  152. package/src/ModuleFactory.ts +11 -8
  153. package/src/ModuleParams.ts +9 -35
  154. package/src/index.ts +2 -5
  155. package/src/{ModuleFilter.ts → instance/ModuleFilter.ts} +2 -2
  156. package/src/instance/ModuleInstance.ts +19 -0
  157. package/src/{ModuleRepository.ts → instance/ModuleRepository.ts} +2 -1
  158. package/src/instance/ModuleResolver.ts +7 -0
  159. package/src/instance/ResolveFunctions.ts +13 -0
  160. package/src/instance/identity/IsInstanceFactory.ts +7 -0
  161. package/src/instance/identity/asModuleInstance.ts +5 -0
  162. package/src/instance/identity/index.ts +3 -0
  163. package/src/instance/identity/isModuleInstance.ts +16 -0
  164. package/src/instance/index.ts +6 -0
  165. package/src/lib/duplicateModules.ts +1 -1
  166. package/src/module/Module.ts +11 -0
  167. package/src/module/ModuleEvents.ts +14 -0
  168. package/src/module/ModuleFields.ts +31 -0
  169. package/src/module/identity/IsModuleFactory.ts +22 -0
  170. package/src/module/identity/ModuleQueryFunctions.ts +13 -0
  171. package/src/module/identity/asModule.ts +5 -0
  172. package/src/module/identity/asModuleObject.ts +5 -0
  173. package/src/module/identity/index.ts +6 -0
  174. package/src/module/identity/isModule.ts +20 -0
  175. package/src/module/identity/isModuleObject.ts +16 -0
  176. package/src/module/index.ts +4 -0
  177. package/src/withModule.ts +5 -2
  178. package/dist/cjs/ModuleFilter.js.map +0 -1
  179. package/dist/cjs/ModuleRepository.js.map +0 -1
  180. package/dist/cjs/asModule.js +0 -28
  181. package/dist/cjs/asModule.js.map +0 -1
  182. package/dist/cjs/isModule.js +0 -55
  183. package/dist/cjs/isModule.js.map +0 -1
  184. package/dist/docs.json +0 -26606
  185. package/dist/esm/ModuleFilter.js.map +0 -1
  186. package/dist/esm/ModuleRepository.js.map +0 -1
  187. package/dist/esm/asModule.js +0 -25
  188. package/dist/esm/asModule.js.map +0 -1
  189. package/dist/esm/isModule.js +0 -49
  190. package/dist/esm/isModule.js.map +0 -1
  191. package/dist/types/Module.d.ts +0 -53
  192. package/dist/types/Module.d.ts.map +0 -1
  193. package/dist/types/ModuleFilter.d.ts.map +0 -1
  194. package/dist/types/ModuleRepository.d.ts.map +0 -1
  195. package/dist/types/asModule.d.ts +0 -16
  196. package/dist/types/asModule.d.ts.map +0 -1
  197. package/dist/types/isModule.d.ts +0 -15
  198. package/dist/types/isModule.d.ts.map +0 -1
  199. package/src/Module.ts +0 -95
  200. package/src/asModule.ts +0 -39
  201. package/src/isModule.ts +0 -68
  202. /package/dist/cjs/{ModuleFilter.js → instance/ModuleFilter.js} +0 -0
  203. /package/dist/cjs/{ModuleRepository.js → instance/ModuleRepository.js} +0 -0
  204. /package/dist/cjs/{Module.js → module/Module.js} +0 -0
  205. /package/dist/esm/{ModuleFilter.js → instance/ModuleFilter.js} +0 -0
  206. /package/dist/esm/{ModuleRepository.js → instance/ModuleRepository.js} +0 -0
  207. /package/dist/esm/{Module.js → module/Module.js} +0 -0
@@ -1,18 +1,19 @@
1
- import { Logger } from '@xyo-network/core'
1
+ import { AccountInstance } from '@xyo-network/account-model'
2
+ import { Logger } from '@xyo-network/logger'
2
3
 
3
- import { Module } from './Module'
4
+ import { ModuleInstance } from './instance'
4
5
 
5
- export interface CreatableModule<T extends Module = Module> {
6
+ export interface CreatableModule<T extends ModuleInstance = ModuleInstance> {
6
7
  configSchema: string
7
8
  configSchemas: string[]
8
9
  defaultLogger?: Logger
9
- new (privateConstructorKey: string, params: T['params']): T
10
- create<T extends Module>(this: CreatableModule<T>, params?: T['params']): Promise<T>
11
- factory<T extends Module>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>
10
+ new (privateConstructorKey: string, params: T['params'], account: AccountInstance): T
11
+ create<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): Promise<T>
12
+ factory<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>
12
13
  }
13
14
 
14
- export type CreatableModuleFactory<T extends Module = Module> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {
15
- create<T extends Module>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>
15
+ export type CreatableModuleFactory<T extends ModuleInstance = ModuleInstance> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {
16
+ create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>
16
17
  }
17
18
 
18
19
  /**
@@ -21,7 +22,7 @@ export type CreatableModuleFactory<T extends Module = Module> = Omit<Omit<Creata
21
22
  * @returns The decorated Module requiring it implement the members
22
23
  * of the CreatableModule as statics properties/methods
23
24
  */
24
- export function creatableModule<TModule extends Module = Module>() {
25
+ export function creatableModule<TModule extends ModuleInstance = ModuleInstance>() {
25
26
  return <U extends CreatableModule<TModule>>(constructor: U) => {
26
27
  constructor
27
28
  }
@@ -1,6 +1,6 @@
1
1
  import { EventData } from '@xyo-network/module-events'
2
2
 
3
- import { Module, ModuleEventArgs } from '../Module'
3
+ import { Module, ModuleEventArgs } from '../module'
4
4
 
5
5
  export type ModuleBusyEventArgs<TModule extends Module = Module> = ModuleEventArgs<TModule, { busy: boolean }>
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { EventData } from '@xyo-network/module-events'
2
2
 
3
- import { Module, ModuleEventArgs } from '../Module'
3
+ import { Module, ModuleEventArgs } from '../module'
4
4
 
5
5
  export type ModuleErrorEventArgs<TModule extends Module = Module> = ModuleEventArgs<TModule, { error: Error }>
6
6
 
@@ -2,7 +2,7 @@ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'
2
2
  import { EventData } from '@xyo-network/module-events'
3
3
  import { Payload } from '@xyo-network/payload-model'
4
4
 
5
- import { Module, ModuleEventArgs } from '../Module'
5
+ import { Module, ModuleEventArgs } from '../module'
6
6
  import { ModuleQueryResult } from '../ModuleQueryResult'
7
7
 
8
8
  export type ModuleQueriedEventArgs<TModule extends Module = Module> = ModuleEventArgs<
@@ -1,19 +1,19 @@
1
- import { Logger } from '@xyo-network/core'
1
+ import { Logger } from '@xyo-network/logger'
2
2
  import merge from 'lodash/merge'
3
3
 
4
4
  import { CreatableModule, CreatableModuleFactory } from './CreatableModule'
5
- import { Module } from './Module'
5
+ import { ModuleInstance } from './instance'
6
6
 
7
- export class ModuleFactory<TModule extends Module> implements CreatableModuleFactory<TModule> {
7
+ export class ModuleFactory<TModule extends ModuleInstance> implements CreatableModuleFactory<TModule> {
8
8
  configSchemas: CreatableModuleFactory<TModule>['configSchemas']
9
9
 
10
10
  creatableModule: CreatableModule<TModule>
11
11
 
12
12
  defaultLogger?: Logger | undefined
13
13
 
14
- defaultParams?: TModule['params']
14
+ defaultParams?: Omit<TModule['params'], 'config'> & { config?: TModule['params']['config'] }
15
15
 
16
- constructor(creatableModule: CreatableModule<TModule>, params?: TModule['params']) {
16
+ constructor(creatableModule: CreatableModule<TModule>, params?: Omit<TModule['params'], 'config'> & { config?: TModule['params']['config'] }) {
17
17
  this.creatableModule = creatableModule
18
18
  this.defaultParams = params
19
19
  this.configSchemas = creatableModule.configSchemas
@@ -23,18 +23,21 @@ export class ModuleFactory<TModule extends Module> implements CreatableModuleFac
23
23
  return this.configSchemas[0]
24
24
  }
25
25
 
26
- static withParams<T extends Module>(creatableModule: CreatableModule<T>, params?: T['params']) {
26
+ static withParams<T extends ModuleInstance>(
27
+ creatableModule: CreatableModule<T>,
28
+ params?: Omit<T['params'], 'config'> & { config?: T['params']['config'] },
29
+ ) {
27
30
  return new ModuleFactory(creatableModule, params)
28
31
  }
29
32
 
30
- create<T extends Module>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T> {
33
+ create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T> {
31
34
  const factory = this as ModuleFactory<T>
32
35
  const schema = factory.creatableModule.configSchema
33
36
  const mergedParams: TModule['params'] = merge(factory.defaultParams ?? {}, params, { config: { schema } })
34
37
  return factory.creatableModule.create<T>(mergedParams)
35
38
  }
36
39
 
37
- factory<T extends Module>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T> {
40
+ factory<T extends ModuleInstance>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T> {
38
41
  throw new Error('Method not implemented.')
39
42
  }
40
43
  }
@@ -4,47 +4,21 @@ import { WalletInstance } from '@xyo-network/wallet-model'
4
4
 
5
5
  import { AnyConfigSchema, ModuleConfig } from './Config'
6
6
 
7
- export type BasicModuleParams<TConfig extends AnyConfigSchema, TAdditionalParams extends AnyObject | undefined = undefined> = WithAdditional<
7
+ export type BasicModuleParams<
8
+ TConfig extends AnyConfigSchema<ModuleConfig>,
9
+ TAdditionalParams extends AnyObject | undefined = undefined,
10
+ > = WithAdditional<
8
11
  BaseParams<{
12
+ account?: AccountInstance | 'random'
13
+ accountDerivationPath?: string
9
14
  config: TConfig
10
15
  ephemeralQueryAccountEnabled?: boolean
16
+ wallet?: WalletInstance
11
17
  }>,
12
18
  TAdditionalParams
13
19
  >
14
20
 
15
- export type AccountModuleParams<
16
- TConfig extends AnyConfigSchema<ModuleConfig>,
17
- TAdditionalParams extends AnyObject | undefined = undefined,
18
- > = BasicModuleParams<
19
- TConfig,
20
- WithAdditional<
21
- {
22
- account: AccountInstance
23
- },
24
- TAdditionalParams
25
- >
26
- >
27
-
28
- export type WalletModuleParams<
29
- TConfig extends AnyConfigSchema<ModuleConfig>,
30
- TAdditionalParams extends AnyObject | undefined = undefined,
31
- > = BasicModuleParams<
32
- TConfig,
33
- WithAdditional<
34
- {
35
- accountDerivationPath: string
36
- wallet: WalletInstance
37
- },
38
- TAdditionalParams
39
- >
40
- >
41
-
42
21
  export type ModuleParams<
43
- TConfig extends AnyConfigSchema<ModuleConfig> = AnyConfigSchema<ModuleConfig>,
22
+ TConfig extends AnyConfigSchema<ModuleConfig> = ModuleConfig,
44
23
  TAdditionalParams extends AnyObject | undefined = undefined,
45
- > = (
46
- | AccountModuleParams<TConfig, TAdditionalParams>
47
- | WalletModuleParams<TConfig, TAdditionalParams>
48
- | BasicModuleParams<TConfig, TAdditionalParams>
49
- ) &
50
- BasicModuleParams<TConfig, TAdditionalParams>
24
+ > = BasicModuleParams<TConfig, TAdditionalParams>
package/src/index.ts CHANGED
@@ -1,16 +1,13 @@
1
- export * from './asModule'
2
1
  export * from './Config'
3
2
  export * from './CreatableModule'
4
3
  export * from './CreatableModuleDictionary'
5
4
  export * from './Events'
6
- export * from './isModule'
5
+ export * from './instance'
7
6
  export * from './lib'
8
- export * from './Module'
7
+ export * from './module'
9
8
  export * from './ModuleDescription'
10
9
  export * from './ModuleFactory'
11
- export * from './ModuleFilter'
12
10
  export * from './ModuleParams'
13
11
  export * from './ModuleQueryResult'
14
- export * from './ModuleRepository'
15
12
  export * from './Queries'
16
13
  export * from './withModule'
@@ -1,5 +1,5 @@
1
- import { InstanceTypeCheck } from './isModule'
2
- import { ModuleInstance } from './Module'
1
+ import { InstanceTypeCheck } from './identity'
2
+ import { ModuleInstance } from './ModuleInstance'
3
3
 
4
4
  export interface ModuleFilterOptions<TInstance extends ModuleInstance = ModuleInstance> {
5
5
  direction?: 'up' | 'down' | 'all'
@@ -0,0 +1,19 @@
1
+ import { AnyConfigSchema, ModuleConfig } from '../Config'
2
+ import { Module, ModuleEventData, ModuleQueryFunctions } from '../module'
3
+ import { ModuleParams } from '../ModuleParams'
4
+ import { ModuleResolver } from './ModuleResolver'
5
+ import { ResolveFunctions } from './ResolveFunctions'
6
+
7
+ export type ModuleInstance<
8
+ TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>,
9
+ TEventData extends ModuleEventData = ModuleEventData,
10
+ > = Module<TParams, TEventData> &
11
+ ResolveFunctions &
12
+ ModuleQueryFunctions & {
13
+ /* 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*/
14
+ readonly downResolver: Omit<ModuleResolver, 'resolve'>
15
+
16
+ /* The resolver is a 'up' resolver. It can resolve the parent or any children of the parent*/
17
+ /* This is set by a NodeModule when attaching to the module */
18
+ readonly upResolver: Omit<ModuleResolver, 'resolve'>
19
+ }
@@ -1,4 +1,5 @@
1
- import { Module, ModuleResolver } from './Module'
1
+ import { Module } from '../module'
2
+ import { ModuleResolver } from './ModuleResolver'
2
3
 
3
4
  export interface ModuleRepository extends ModuleResolver {
4
5
  add(module: Module): this
@@ -0,0 +1,7 @@
1
+ import { ResolveFunctions } from './ResolveFunctions'
2
+
3
+ export interface ModuleResolver extends ResolveFunctions {
4
+ addResolver: (resolver: ModuleResolver) => this
5
+ isModuleResolver: boolean
6
+ removeResolver: (resolver: ModuleResolver) => this
7
+ }
@@ -0,0 +1,13 @@
1
+ import { Promisable } from '@xyo-network/promise'
2
+
3
+ import { ModuleFilter, ModuleFilterOptions } from './ModuleFilter'
4
+ import { ModuleInstance } from './ModuleInstance'
5
+
6
+ export interface ResolveFunctions {
7
+ resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promisable<ModuleInstance[]>
8
+ resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promisable<ModuleInstance | undefined>
9
+ resolve(
10
+ nameOrAddressOrFilter?: ModuleFilter | string,
11
+ options?: ModuleFilterOptions<ModuleInstance>,
12
+ ): Promisable<ModuleInstance | ModuleInstance[] | undefined>
13
+ }
@@ -0,0 +1,7 @@
1
+ import { IsObjectFactory, ObjectTypeCheck } from '@xyo-network/object-identity'
2
+
3
+ import { ModuleInstance } from '../ModuleInstance'
4
+
5
+ export type InstanceTypeCheck<T extends ModuleInstance = ModuleInstance> = ObjectTypeCheck<T>
6
+
7
+ export class IsInstanceFactory<T extends ModuleInstance = ModuleInstance> extends IsObjectFactory<T> {}
@@ -0,0 +1,5 @@
1
+ import { AsObjectFactory } from '@xyo-network/object-identity'
2
+
3
+ import { isModuleInstance } from './isModuleInstance'
4
+
5
+ export const asModuleInstance = AsObjectFactory.create(isModuleInstance)
@@ -0,0 +1,3 @@
1
+ export * from './asModuleInstance'
2
+ export * from './IsInstanceFactory'
3
+ export * from './isModuleInstance'
@@ -0,0 +1,16 @@
1
+ import { IsObjectFactory, ObjectTypeCheck, ObjectTypeShape } from '@xyo-network/object-identity'
2
+
3
+ import { isModule } from '../../module'
4
+ import { ModuleInstance } from '../ModuleInstance'
5
+
6
+ export const requiredModuleInstanceFunctions: ObjectTypeShape = {
7
+ describe: 'function',
8
+ discover: 'function',
9
+ manifest: 'function',
10
+ moduleAddress: 'function',
11
+ }
12
+
13
+ //we do not use IsInstanceFactory here to prevent a cycle
14
+ const factory = new IsObjectFactory<ModuleInstance>()
15
+
16
+ export const isModuleInstance: ObjectTypeCheck<ModuleInstance> = factory.create(requiredModuleInstanceFunctions, [isModule])
@@ -0,0 +1,6 @@
1
+ export * from './identity'
2
+ export * from './ModuleFilter'
3
+ export * from './ModuleInstance'
4
+ export * from './ModuleRepository'
5
+ export * from './ModuleResolver'
6
+ export * from './ResolveFunctions'
@@ -1,4 +1,4 @@
1
- import { Module } from '../Module'
1
+ import { Module } from '../module'
2
2
 
3
3
  /**
4
4
  * Used to filter duplicates from an array of modules
@@ -0,0 +1,11 @@
1
+ import { EventFunctions } from '@xyo-network/module-events'
2
+
3
+ import { AnyConfigSchema, ModuleConfig } from '../Config'
4
+ import { ModuleParams } from '../ModuleParams'
5
+ import { ModuleEventData } from './ModuleEvents'
6
+ import { ModuleFields } from './ModuleFields'
7
+
8
+ export type Module<
9
+ TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>,
10
+ TEventData extends ModuleEventData = ModuleEventData,
11
+ > = ModuleFields<TParams> & EventFunctions<TEventData>
@@ -0,0 +1,14 @@
1
+ import { EventArgs } from '@xyo-network/module-events'
2
+
3
+ import { ModuleBusyEventData, ModuleErrorEventData, ModuleQueriedEventData } from '../Events'
4
+ import { Module } from './Module'
5
+
6
+ export type ModuleEventArgs<TModule extends Module = Module, TArgs extends EventArgs | undefined = undefined> = TArgs extends EventArgs
7
+ ? {
8
+ module: TModule
9
+ } & TArgs
10
+ : {
11
+ module: TModule
12
+ }
13
+
14
+ export interface ModuleEventData extends ModuleQueriedEventData, ModuleBusyEventData, ModuleErrorEventData {}
@@ -0,0 +1,31 @@
1
+ import { QueryBoundWitness } from '@xyo-network/boundwitness-builder'
2
+ import { Payload } from '@xyo-network/payload-model'
3
+ import { Promisable } from '@xyo-network/promise'
4
+
5
+ import { AnyConfigSchema, ModuleConfig } from '../Config'
6
+ import { ModuleParams } from '../ModuleParams'
7
+ import { ModuleQueryResult } from '../ModuleQueryResult'
8
+
9
+ export type ModuleFields<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>> = {
10
+ address: string
11
+ config: TParams['config']
12
+
13
+ params: TParams
14
+
15
+ previousHash: () => Promisable<string | undefined>
16
+
17
+ queries: string[]
18
+ query: <T extends QueryBoundWitness = QueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(
19
+ query: T,
20
+ payloads?: Payload[],
21
+ queryConfig?: TConf,
22
+ ) => Promisable<ModuleQueryResult>
23
+ queryable: <T extends QueryBoundWitness = QueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(
24
+ query: T,
25
+ payloads?: Payload[],
26
+ queryConfig?: TConf,
27
+ ) => Promisable<boolean>
28
+
29
+ start?: () => Promisable<boolean>
30
+ stop?: () => Promisable<boolean>
31
+ }
@@ -0,0 +1,22 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { ObjectTypeCheck } from '@xyo-network/object-identity'
3
+
4
+ import { Module } from '../Module'
5
+ import { asModuleObject } from './asModuleObject'
6
+ import { isModuleObject } from './isModuleObject'
7
+
8
+ export type ModuleTypeCheck<T extends Module = Module> = ObjectTypeCheck<T>
9
+
10
+ export class IsModuleFactory<T extends Module = Module> {
11
+ create(expectedQueries?: string[], additionalChecks?: ObjectTypeCheck[]): ModuleTypeCheck<T> {
12
+ return (obj: any, config): obj is T => {
13
+ const module = asModuleObject(obj)
14
+ const result =
15
+ isModuleObject(module, config) &&
16
+ (expectedQueries?.reduce((prev, query) => prev && obj.queries.includes(query), true) ?? true) &&
17
+ //perform additional checks
18
+ (additionalChecks?.reduce((prev, check) => prev && check(obj, config), true) ?? true)
19
+ return result
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,13 @@
1
+ import { ModuleManifestPayload } from '@xyo-network/manifest-model'
2
+ import { Payload } from '@xyo-network/payload-model'
3
+ import { Promisable } from '@xyo-network/promise'
4
+
5
+ import { ModuleDescription } from '../../ModuleDescription'
6
+ import { AddressPreviousHashPayload } from '../../Queries'
7
+
8
+ export type ModuleQueryFunctions = {
9
+ describe: () => Promise<ModuleDescription>
10
+ discover: () => Promisable<Payload[]>
11
+ manifest: () => Promisable<ModuleManifestPayload>
12
+ moduleAddress: () => Promisable<AddressPreviousHashPayload[]>
13
+ }
@@ -0,0 +1,5 @@
1
+ import { AsObjectFactory } from '@xyo-network/object-identity'
2
+
3
+ import { isModule } from './isModule'
4
+
5
+ export const asModule = AsObjectFactory.create(isModule)
@@ -0,0 +1,5 @@
1
+ import { AsObjectFactory } from '@xyo-network/object-identity'
2
+
3
+ import { isModuleObject } from './isModuleObject'
4
+
5
+ export const asModuleObject = AsObjectFactory.create(isModuleObject)
@@ -0,0 +1,6 @@
1
+ export * from './asModule'
2
+ export * from './asModuleObject'
3
+ export * from './isModule'
4
+ export * from './IsModuleFactory'
5
+ export * from './isModuleObject'
6
+ export * from './ModuleQueryFunctions'
@@ -0,0 +1,20 @@
1
+ import { ObjectTypeCheck } from '@xyo-network/object-identity'
2
+
3
+ import { ModuleDiscoverQuerySchema } from '../../Queries'
4
+ import { Module } from '../Module'
5
+ import { IsModuleFactory } from './IsModuleFactory'
6
+ import { isModuleObject } from './isModuleObject'
7
+
8
+ export const requiredModuleQueries: string[] = [
9
+ /* We need to update this once live module conform */
10
+ //ModuleDescribeQuerySchema,
11
+ //ModuleAddressQuerySchema,
12
+ ModuleDiscoverQuerySchema,
13
+ //ModuleManifestQuerySchema,
14
+ //ModuleSubscribeQuerySchema,
15
+ ]
16
+
17
+ //we do not use IsInstanceFactory here to prevent a cycle
18
+ const factory = new IsModuleFactory<Module>()
19
+
20
+ export const isModule: ObjectTypeCheck<Module> = factory.create(requiredModuleQueries, [isModuleObject])
@@ -0,0 +1,16 @@
1
+ import { IsObjectFactory, ObjectTypeCheck, ObjectTypeShape } from '@xyo-network/object-identity'
2
+
3
+ import { Module } from '../Module'
4
+
5
+ export const requiredModuleFunctions: ObjectTypeShape = {
6
+ address: 'string',
7
+ config: 'object',
8
+ params: 'object',
9
+ queries: 'array',
10
+ query: 'function',
11
+ queryable: 'function',
12
+ }
13
+
14
+ const factory = new IsObjectFactory<Module>()
15
+
16
+ export const isModuleObject: ObjectTypeCheck<Module> = factory.create(requiredModuleFunctions)
@@ -0,0 +1,4 @@
1
+ export * from './identity'
2
+ export * from './Module'
3
+ export * from './ModuleEvents'
4
+ export * from './ModuleFields'
package/src/withModule.ts CHANGED
@@ -1,7 +1,10 @@
1
- import { InstanceTypeCheck, isModule, isModuleInstance } from './isModule'
1
+ import { ObjectTypeCheck } from '@xyo-network/object-identity'
2
+
3
+ import { isModuleInstance } from './instance'
4
+ import { isModule } from './module'
2
5
 
3
6
  export const WithFactory = {
4
- create: <T extends object>(typeCheck: InstanceTypeCheck<T>) => {
7
+ create: <T extends object>(typeCheck: ObjectTypeCheck<T>) => {
5
8
  return <R>(
6
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
10
  module: any,
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModuleFilter.js","sourceRoot":"","sources":["../../src/ModuleFilter.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModuleRepository.js","sourceRoot":"","sources":["../../src/ModuleRepository.ts"],"names":[],"mappings":""}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asModuleInstance = exports.asModule = exports.AsFactory = void 0;
4
- const assert_1 = require("@xylabs/assert");
5
- const isModule_1 = require("./isModule");
6
- exports.AsFactory = {
7
- create: (typeCheck) => {
8
- function func(
9
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
- module, assert) {
11
- const result = typeCheck(module) ? module : undefined;
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- const noUndefined = (assert) => {
14
- return !!assert;
15
- };
16
- if (noUndefined(assert)) {
17
- return (0, assert_1.assertEx)(result, typeof assert === 'function' ? assert() : assert);
18
- }
19
- else {
20
- return result;
21
- }
22
- }
23
- return func;
24
- },
25
- };
26
- exports.asModule = exports.AsFactory.create(isModule_1.isModule);
27
- exports.asModuleInstance = exports.AsFactory.create(isModule_1.isModuleInstance);
28
- //# sourceMappingURL=asModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asModule.js","sourceRoot":"","sources":["../../src/asModule.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAEzC,yCAA0E;AAE7D,QAAA,SAAS,GAAG;IACvB,MAAM,EAAE,CAAyB,SAAqC,EAAE,EAAE;QAUxE,SAAS,IAAI;QACX,8DAA8D;QAC9D,MAAW,EACX,MAAgC;YAEhC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YAErD,8DAA8D;YAC9D,MAAM,WAAW,GAAG,CAAC,MAAW,EAAqB,EAAE;gBACrD,OAAO,CAAC,CAAC,MAAM,CAAA;YACjB,CAAC,CAAA;YAED,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;gBACvB,OAAO,IAAA,iBAAQ,EAAC,MAAM,EAAE,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;aAC1E;iBAAM;gBACL,OAAO,MAAM,CAAA;aACd;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAEY,QAAA,QAAQ,GAAG,iBAAS,CAAC,MAAM,CAAC,mBAAQ,CAAC,CAAA;AACrC,QAAA,gBAAgB,GAAG,iBAAS,CAAC,MAAM,CAAC,2BAAgB,CAAC,CAAA"}
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isModuleInstance = exports.isModule = exports.IsModuleFactory = exports.IsInstanceFactory = exports.isType = void 0;
4
- const isType = (value, expectedType) => {
5
- if (expectedType === 'array') {
6
- return Array.isArray(value);
7
- }
8
- else if (expectedType === 'payload') {
9
- return typeof value === 'object' && typeof value.schema === 'string';
10
- }
11
- else {
12
- return typeof value === expectedType;
13
- }
14
- };
15
- exports.isType = isType;
16
- exports.IsInstanceFactory = {
17
- create: (shape, additionalCheck) => {
18
- return (module, log = false) => {
19
- var _a;
20
- return (!!module &&
21
- ((_a = additionalCheck === null || additionalCheck === void 0 ? void 0 : additionalCheck(module)) !== null && _a !== void 0 ? _a : true) &&
22
- Object.entries(shape !== null && shape !== void 0 ? shape : {}).reduce((prev, [key, type]) => {
23
- const result = (0, exports.isType)(module[key], type);
24
- if (!result && log) {
25
- console.warn(`isType Failed: ${key}: ${type}`);
26
- }
27
- return prev && result;
28
- }, true));
29
- };
30
- },
31
- };
32
- exports.IsModuleFactory = {
33
- create: (expectedQueries, additionalCheck) => {
34
- return (module) => {
35
- var _a, _b;
36
- return ((0, exports.isModule)(module) &&
37
- ((_a = additionalCheck === null || additionalCheck === void 0 ? void 0 : additionalCheck(module)) !== null && _a !== void 0 ? _a : true) &&
38
- ((_b = expectedQueries === null || expectedQueries === void 0 ? void 0 : expectedQueries.reduce((prev, query) => prev && module.queries.includes(query), true)) !== null && _b !== void 0 ? _b : true));
39
- };
40
- },
41
- };
42
- exports.isModule = exports.IsInstanceFactory.create({
43
- address: 'string',
44
- config: 'object',
45
- params: 'object',
46
- queries: 'array',
47
- query: 'function',
48
- queryable: 'function',
49
- });
50
- exports.isModuleInstance = exports.IsInstanceFactory.create({
51
- describe: 'function',
52
- discover: 'function',
53
- manifest: 'function',
54
- }, exports.isModule);
55
- //# sourceMappingURL=isModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isModule.js","sourceRoot":"","sources":["../../src/isModule.ts"],"names":[],"mappings":";;;AAWO,MAAM,MAAM,GAAG,CAAC,KAAU,EAAE,YAAuB,EAAE,EAAE;IAC5D,IAAI,YAAY,KAAK,OAAO,EAAE;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KAC5B;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE;QACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAA;KACrE;SAAM;QACL,OAAO,OAAO,KAAK,KAAK,YAAY,CAAA;KACrC;AACH,CAAC,CAAA;AARY,QAAA,MAAM,UAQlB;AAEY,QAAA,iBAAiB,GAAG;IAC/B,MAAM,EAAE,CAA4B,KAAyB,EAAE,eAA0C,EAAwB,EAAE;QACjI,OAAO,CAAC,MAAW,EAAE,GAAG,GAAG,KAAK,EAAe,EAAE;;YAC/C,OAAO,CACL,CAAC,CAAC,MAAM;gBACR,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,MAAM,CAAC,mCAAI,IAAI,CAAC;gBACnC,MAAM,CAAC,OAAO,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;oBACvD,MAAM,MAAM,GAAG,IAAA,cAAM,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;oBACxC,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;wBAClB,OAAO,CAAC,IAAI,CAAC,kBAAkB,GAAG,KAAK,IAAI,EAAE,CAAC,CAAA;qBAC/C;oBACD,OAAO,IAAI,IAAI,MAAM,CAAA;gBACvB,CAAC,EAAE,IAAI,CAAC,CACT,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,CAA4B,eAA0B,EAAE,eAA0C,EAAsB,EAAE;QAChI,OAAO,CAAC,MAAW,EAAe,EAAE;;YAClC,OAAO,CACL,IAAA,gBAAQ,EAAC,MAAM,CAAC;gBAChB,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,MAAM,CAAC,mCAAI,IAAI,CAAC;gBACnC,CAAC,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,mCAAI,IAAI,CAAC,CACjG,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAA;AAEY,QAAA,QAAQ,GAA4B,yBAAiB,CAAC,MAAM,CAAS;IAChF,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,UAAU;IACjB,SAAS,EAAE,UAAU;CACtB,CAAC,CAAA;AAEW,QAAA,gBAAgB,GAAsC,yBAAiB,CAAC,MAAM,CACzF;IACE,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;CACrB,EACD,gBAAQ,CACT,CAAA"}