@xyo-network/module-model 2.64.7 → 2.64.9

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 (67) hide show
  1. package/dist/cjs/Queries/Describe/Payload.js +5 -0
  2. package/dist/cjs/Queries/Describe/Payload.js.map +1 -0
  3. package/dist/cjs/Queries/Describe/Query.js +5 -0
  4. package/dist/cjs/Queries/Describe/Query.js.map +1 -0
  5. package/dist/cjs/Queries/Describe/index.js +6 -0
  6. package/dist/cjs/Queries/Describe/index.js.map +1 -0
  7. package/dist/cjs/Queries/Manifest.js +5 -0
  8. package/dist/cjs/Queries/Manifest.js.map +1 -0
  9. package/dist/cjs/Queries/index.js +2 -0
  10. package/dist/cjs/Queries/index.js.map +1 -1
  11. package/dist/cjs/asModule.js +28 -0
  12. package/dist/cjs/asModule.js.map +1 -0
  13. package/dist/cjs/index.js +1 -0
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/isModule.js +28 -9
  16. package/dist/cjs/isModule.js.map +1 -1
  17. package/dist/docs.json +5611 -3209
  18. package/dist/esm/Queries/Describe/Payload.js +2 -0
  19. package/dist/esm/Queries/Describe/Payload.js.map +1 -0
  20. package/dist/esm/Queries/Describe/Query.js +2 -0
  21. package/dist/esm/Queries/Describe/Query.js.map +1 -0
  22. package/dist/esm/Queries/Describe/index.js +3 -0
  23. package/dist/esm/Queries/Describe/index.js.map +1 -0
  24. package/dist/esm/Queries/Manifest.js +2 -0
  25. package/dist/esm/Queries/Manifest.js.map +1 -0
  26. package/dist/esm/Queries/index.js +2 -0
  27. package/dist/esm/Queries/index.js.map +1 -1
  28. package/dist/esm/asModule.js +25 -0
  29. package/dist/esm/asModule.js.map +1 -0
  30. package/dist/esm/index.js +1 -0
  31. package/dist/esm/index.js.map +1 -1
  32. package/dist/esm/isModule.js +23 -8
  33. package/dist/esm/isModule.js.map +1 -1
  34. package/dist/types/Module.d.ts +13 -8
  35. package/dist/types/Module.d.ts.map +1 -1
  36. package/dist/types/ModuleRepository.d.ts +4 -4
  37. package/dist/types/ModuleRepository.d.ts.map +1 -1
  38. package/dist/types/Queries/Describe/Payload.d.ts +6 -0
  39. package/dist/types/Queries/Describe/Payload.d.ts.map +1 -0
  40. package/dist/types/Queries/Describe/Query.d.ts +7 -0
  41. package/dist/types/Queries/Describe/Query.d.ts.map +1 -0
  42. package/dist/types/Queries/Describe/index.d.ts +3 -0
  43. package/dist/types/Queries/Describe/index.d.ts.map +1 -0
  44. package/dist/types/Queries/Manifest.d.ts +7 -0
  45. package/dist/types/Queries/Manifest.d.ts.map +1 -0
  46. package/dist/types/Queries/index.d.ts +4 -1
  47. package/dist/types/Queries/index.d.ts.map +1 -1
  48. package/dist/types/asModule.d.ts +16 -0
  49. package/dist/types/asModule.d.ts.map +1 -0
  50. package/dist/types/index.d.ts +1 -0
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/isModule.d.ts +11 -4
  53. package/dist/types/isModule.d.ts.map +1 -1
  54. package/dist/types/withModule.d.ts +3 -3
  55. package/dist/types/withModule.d.ts.map +1 -1
  56. package/package.json +13 -12
  57. package/src/Module.ts +23 -9
  58. package/src/ModuleRepository.ts +4 -4
  59. package/src/Queries/Describe/Payload.ts +8 -0
  60. package/src/Queries/Describe/Query.ts +8 -0
  61. package/src/Queries/Describe/index.ts +2 -0
  62. package/src/Queries/Manifest.ts +8 -0
  63. package/src/Queries/index.ts +4 -1
  64. package/src/asModule.ts +39 -0
  65. package/src/index.ts +1 -0
  66. package/src/isModule.ts +43 -11
  67. package/src/withModule.ts +1 -1
@@ -1,12 +1,15 @@
1
1
  import { Query } from '../Query'
2
+ import { ModuleDescribeQuery } from './Describe'
2
3
  import { ModuleDiscoverQuery } from './Discover'
3
4
  import { ModuleAddressQuery } from './ModuleAddress'
4
5
  import { ModuleSubscribeQuery } from './Subscribe'
5
6
 
7
+ export * from './Describe'
6
8
  export * from './Discover'
9
+ export * from './Manifest'
7
10
  export * from './ModuleAddress'
8
11
  export * from './Subscribe'
9
12
 
10
- export type ModuleQueryBase = ModuleDiscoverQuery | ModuleAddressQuery | ModuleSubscribeQuery
13
+ export type ModuleQueryBase = ModuleDiscoverQuery | ModuleAddressQuery | ModuleSubscribeQuery | ModuleDescribeQuery
11
14
 
12
15
  export type ModuleQuery<T extends Query | void = void> = T extends Query ? ModuleQueryBase | T : ModuleQueryBase
@@ -0,0 +1,39 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+
3
+ import { InstanceTypeCheck, isModule, isModuleInstance } from './isModule'
4
+
5
+ export const AsFactory = {
6
+ create: <TModule extends object>(typeCheck: InstanceTypeCheck<TModule>) => {
7
+ function func(
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ module: any,
10
+ ): TModule | undefined
11
+ function func(
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ module: any,
14
+ assert: string | (() => string),
15
+ ): TModule
16
+ function func(
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ module: any,
19
+ assert?: string | (() => string),
20
+ ): TModule | undefined {
21
+ const result = typeCheck(module) ? module : undefined
22
+
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ const noUndefined = (assert: any): assert is TModule => {
25
+ return !!assert
26
+ }
27
+
28
+ if (noUndefined(assert)) {
29
+ return assertEx(result, typeof assert === 'function' ? assert() : assert)
30
+ } else {
31
+ return result
32
+ }
33
+ }
34
+ return func
35
+ },
36
+ }
37
+
38
+ export const asModule = AsFactory.create(isModule)
39
+ export const asModuleInstance = AsFactory.create(isModuleInstance)
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './asModule'
1
2
  export * from './Config'
2
3
  export * from './CreatableModule'
3
4
  export * from './Error'
package/src/isModule.ts CHANGED
@@ -1,10 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { ModuleInstance } from './Module'
3
- import { ModuleAddressQuerySchema, ModuleDiscoverQuerySchema } from './Queries'
2
+ import { DirectModule, IndirectModule, Module, ModuleInstance } from './Module'
4
3
 
5
4
  export type InstanceTypeCheck<T extends object = object> = (module: object) => module is T
6
5
 
7
- export type ModuleTypeCheck<T extends ModuleInstance = ModuleInstance> = InstanceTypeCheck<T>
6
+ export type ModuleTypeCheck<T extends Module = Module> = InstanceTypeCheck<T>
8
7
 
9
8
  export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function' | 'payload'
10
9
 
@@ -22,7 +21,7 @@ export const isType = (value: any, expectedType: FieldType) => {
22
21
 
23
22
  export const IsInstanceFactory = {
24
23
  create: <T extends object = object>(shape?: InstanceTypeShape, additionalCheck?: (module: any) => boolean): InstanceTypeCheck<T> => {
25
- return (module: any): module is T => {
24
+ return (module: any = {}): module is T => {
26
25
  return (
27
26
  (additionalCheck?.(module) ?? true) &&
28
27
  (Object.entries(shape ?? {}).reduce((prev, [key, type]) => prev && isType(module[key], type), true) ?? true)
@@ -31,9 +30,9 @@ export const IsInstanceFactory = {
31
30
  },
32
31
  }
33
32
 
34
- export const IsModuleFactory = {
35
- create: <T extends ModuleInstance = ModuleInstance>(expectedQueries?: string[], additionalCheck?: (module: any) => boolean): ModuleTypeCheck<T> => {
36
- return (module: any): module is T => {
33
+ export const IsIndirectModuleFactory = {
34
+ create: <T extends IndirectModule = IndirectModule>(expectedQueries?: string[], additionalCheck?: (module: any) => boolean): ModuleTypeCheck<T> => {
35
+ return (module: any = {}): module is T => {
37
36
  return (
38
37
  isModuleInstance(module) &&
39
38
  (additionalCheck?.(module) ?? true) &&
@@ -43,13 +42,13 @@ export const IsModuleFactory = {
43
42
  },
44
43
  }
45
44
 
46
- export const isModuleInstance: InstanceTypeCheck<ModuleInstance> = IsInstanceFactory.create<ModuleInstance>({
45
+ export const IsModuleFactory = IsIndirectModuleFactory
46
+
47
+ export const isIndirectModuleInstance: InstanceTypeCheck<ModuleInstance> = IsInstanceFactory.create<ModuleInstance>({
47
48
  account: 'object',
48
49
  address: 'string',
49
50
  config: 'object',
50
- discover: 'function',
51
51
  downResolver: 'object',
52
- manifest: 'function',
53
52
  params: 'object',
54
53
  queries: 'array',
55
54
  query: 'function',
@@ -57,4 +56,37 @@ export const isModuleInstance: InstanceTypeCheck<ModuleInstance> = IsInstanceFac
57
56
  upResolver: 'object',
58
57
  })
59
58
 
60
- export const isModule: ModuleTypeCheck<ModuleInstance> = IsModuleFactory.create<ModuleInstance>([ModuleAddressQuerySchema, ModuleDiscoverQuerySchema])
59
+ export const isDirectModuleInstance: InstanceTypeCheck<ModuleInstance> = IsInstanceFactory.create<ModuleInstance>({
60
+ description: 'function',
61
+ discover: 'function',
62
+ manifest: 'function',
63
+ subscribe: 'function',
64
+ })
65
+
66
+ export const isModuleInstance = isIndirectModuleInstance
67
+
68
+ export const isDirectModule = <T extends DirectModule = DirectModule>(
69
+ module: any = {},
70
+ expectedQueries?: string[],
71
+ additionalCheck?: (module: any) => boolean,
72
+ ): module is T => {
73
+ return (
74
+ isDirectModuleInstance(module) &&
75
+ (additionalCheck?.(module) ?? true) &&
76
+ (expectedQueries?.reduce((prev, query) => prev && module.queries.includes(query), true) ?? true)
77
+ )
78
+ }
79
+
80
+ export const isIndirectModule = <T extends IndirectModule = IndirectModule>(
81
+ module: any = {},
82
+ expectedQueries?: string[],
83
+ additionalCheck?: (module: any) => boolean,
84
+ ): module is T => {
85
+ return (
86
+ isIndirectModuleInstance(module) &&
87
+ (additionalCheck?.(module) ?? true) &&
88
+ (expectedQueries?.reduce((prev, query) => prev && module.queries.includes(query), true) ?? true)
89
+ )
90
+ }
91
+
92
+ export const isModule = isIndirectModule
package/src/withModule.ts CHANGED
@@ -2,7 +2,7 @@ import { InstanceTypeCheck, isModule, isModuleInstance } from './isModule'
2
2
 
3
3
  export const WithFactory = {
4
4
  create: <T extends object>(typeCheck: InstanceTypeCheck<T>) => {
5
- return <R extends void = void>(
5
+ return <R>(
6
6
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
7
  module: any,
8
8
  // eslint-disable-next-line @typescript-eslint/no-explicit-any