@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.
- package/dist/cjs/Queries/Describe/Payload.js +5 -0
- package/dist/cjs/Queries/Describe/Payload.js.map +1 -0
- package/dist/cjs/Queries/Describe/Query.js +5 -0
- package/dist/cjs/Queries/Describe/Query.js.map +1 -0
- package/dist/cjs/Queries/Describe/index.js +6 -0
- package/dist/cjs/Queries/Describe/index.js.map +1 -0
- package/dist/cjs/Queries/Manifest.js +5 -0
- package/dist/cjs/Queries/Manifest.js.map +1 -0
- package/dist/cjs/Queries/index.js +2 -0
- package/dist/cjs/Queries/index.js.map +1 -1
- package/dist/cjs/asModule.js +28 -0
- package/dist/cjs/asModule.js.map +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/isModule.js +28 -9
- package/dist/cjs/isModule.js.map +1 -1
- package/dist/docs.json +5611 -3209
- package/dist/esm/Queries/Describe/Payload.js +2 -0
- package/dist/esm/Queries/Describe/Payload.js.map +1 -0
- package/dist/esm/Queries/Describe/Query.js +2 -0
- package/dist/esm/Queries/Describe/Query.js.map +1 -0
- package/dist/esm/Queries/Describe/index.js +3 -0
- package/dist/esm/Queries/Describe/index.js.map +1 -0
- package/dist/esm/Queries/Manifest.js +2 -0
- package/dist/esm/Queries/Manifest.js.map +1 -0
- package/dist/esm/Queries/index.js +2 -0
- package/dist/esm/Queries/index.js.map +1 -1
- package/dist/esm/asModule.js +25 -0
- package/dist/esm/asModule.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/isModule.js +23 -8
- package/dist/esm/isModule.js.map +1 -1
- package/dist/types/Module.d.ts +13 -8
- package/dist/types/Module.d.ts.map +1 -1
- package/dist/types/ModuleRepository.d.ts +4 -4
- package/dist/types/ModuleRepository.d.ts.map +1 -1
- package/dist/types/Queries/Describe/Payload.d.ts +6 -0
- package/dist/types/Queries/Describe/Payload.d.ts.map +1 -0
- package/dist/types/Queries/Describe/Query.d.ts +7 -0
- package/dist/types/Queries/Describe/Query.d.ts.map +1 -0
- package/dist/types/Queries/Describe/index.d.ts +3 -0
- package/dist/types/Queries/Describe/index.d.ts.map +1 -0
- package/dist/types/Queries/Manifest.d.ts +7 -0
- package/dist/types/Queries/Manifest.d.ts.map +1 -0
- package/dist/types/Queries/index.d.ts +4 -1
- package/dist/types/Queries/index.d.ts.map +1 -1
- package/dist/types/asModule.d.ts +16 -0
- package/dist/types/asModule.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/isModule.d.ts +11 -4
- package/dist/types/isModule.d.ts.map +1 -1
- package/dist/types/withModule.d.ts +3 -3
- package/dist/types/withModule.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/Module.ts +23 -9
- package/src/ModuleRepository.ts +4 -4
- package/src/Queries/Describe/Payload.ts +8 -0
- package/src/Queries/Describe/Query.ts +8 -0
- package/src/Queries/Describe/index.ts +2 -0
- package/src/Queries/Manifest.ts +8 -0
- package/src/Queries/index.ts +4 -1
- package/src/asModule.ts +39 -0
- package/src/index.ts +1 -0
- package/src/isModule.ts +43 -11
- package/src/withModule.ts +1 -1
package/src/Queries/index.ts
CHANGED
|
@@ -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
|
package/src/asModule.ts
ADDED
|
@@ -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
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
|
|
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
|
|
35
|
-
create: <T extends
|
|
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
|
|
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
|
|
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
|
|
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
|