@xyo-network/module-resolver 2.90.22 → 2.91.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/CompositeModuleResolver.d.cts +15 -5
- package/dist/browser/CompositeModuleResolver.d.cts.map +1 -1
- package/dist/browser/CompositeModuleResolver.d.mts +15 -5
- package/dist/browser/CompositeModuleResolver.d.mts.map +1 -1
- package/dist/browser/CompositeModuleResolver.d.ts +15 -5
- package/dist/browser/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.cts +4 -3
- package/dist/browser/SimpleModuleResolver.d.cts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.mts +4 -3
- package/dist/browser/SimpleModuleResolver.d.mts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.ts +4 -3
- package/dist/browser/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/browser/index.cjs +56 -25
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +0 -1
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +0 -1
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +0 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +53 -22
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/transformers/Xns.d.cts +3 -0
- package/dist/browser/transformers/Xns.d.cts.map +1 -0
- package/dist/browser/transformers/Xns.d.mts +3 -0
- package/dist/browser/transformers/Xns.d.mts.map +1 -0
- package/dist/browser/transformers/Xns.d.ts +3 -0
- package/dist/browser/transformers/Xns.d.ts.map +1 -0
- package/dist/browser/transformers/index.d.cts +3 -0
- package/dist/browser/transformers/index.d.cts.map +1 -0
- package/dist/browser/transformers/index.d.mts +3 -0
- package/dist/browser/transformers/index.d.mts.map +1 -0
- package/dist/browser/transformers/index.d.ts +3 -0
- package/dist/browser/transformers/index.d.ts.map +1 -0
- package/dist/browser/transformers/model.d.cts +7 -0
- package/dist/browser/transformers/model.d.cts.map +1 -0
- package/dist/browser/transformers/model.d.mts +7 -0
- package/dist/browser/transformers/model.d.mts.map +1 -0
- package/dist/browser/transformers/model.d.ts +7 -0
- package/dist/browser/transformers/model.d.ts.map +1 -0
- package/dist/node/CompositeModuleResolver.d.cts +15 -5
- package/dist/node/CompositeModuleResolver.d.cts.map +1 -1
- package/dist/node/CompositeModuleResolver.d.mts +15 -5
- package/dist/node/CompositeModuleResolver.d.mts.map +1 -1
- package/dist/node/CompositeModuleResolver.d.ts +15 -5
- package/dist/node/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.cts +4 -3
- package/dist/node/SimpleModuleResolver.d.cts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.mts +4 -3
- package/dist/node/SimpleModuleResolver.d.mts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.ts +4 -3
- package/dist/node/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/node/index.cjs +56 -26
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +0 -1
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +0 -1
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +0 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +53 -22
- package/dist/node/index.js.map +1 -1
- package/dist/node/transformers/Xns.d.cts +3 -0
- package/dist/node/transformers/Xns.d.cts.map +1 -0
- package/dist/node/transformers/Xns.d.mts +3 -0
- package/dist/node/transformers/Xns.d.mts.map +1 -0
- package/dist/node/transformers/Xns.d.ts +3 -0
- package/dist/node/transformers/Xns.d.ts.map +1 -0
- package/dist/node/transformers/index.d.cts +3 -0
- package/dist/node/transformers/index.d.cts.map +1 -0
- package/dist/node/transformers/index.d.mts +3 -0
- package/dist/node/transformers/index.d.mts.map +1 -0
- package/dist/node/transformers/index.d.ts +3 -0
- package/dist/node/transformers/index.d.ts.map +1 -0
- package/dist/node/transformers/model.d.cts +7 -0
- package/dist/node/transformers/model.d.cts.map +1 -0
- package/dist/node/transformers/model.d.mts +7 -0
- package/dist/node/transformers/model.d.mts.map +1 -0
- package/dist/node/transformers/model.d.ts +7 -0
- package/dist/node/transformers/model.d.ts.map +1 -0
- package/package.json +10 -8
- package/src/CompositeModuleResolver.ts +55 -13
- package/src/SimpleModuleResolver.ts +51 -46
- package/src/index.ts +0 -1
- package/src/transformers/Xns.ts +5 -0
- package/src/transformers/index.ts +2 -0
- package/src/transformers/model.ts +8 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
|
+
import { ModuleIdentifier } from '@xyo-network/module-model';
|
|
3
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
4
|
+
export interface ModuleIdentifierTransformer {
|
|
5
|
+
transform: ModuleIdentifierTransformerFunc;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/transformers/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,+BAA+B,CAAA;CAC3C"}
|
package/package.json
CHANGED
|
@@ -10,15 +10,17 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/
|
|
14
|
-
"@xylabs/
|
|
15
|
-
"@xylabs/
|
|
16
|
-
"@xylabs/
|
|
17
|
-
"@
|
|
13
|
+
"@xylabs/assert": "^3.0.0",
|
|
14
|
+
"@xylabs/exists": "^3.0.0",
|
|
15
|
+
"@xylabs/hex": "^3.0.0",
|
|
16
|
+
"@xylabs/lodash": "^3.0.0",
|
|
17
|
+
"@xylabs/object": "^3.0.0",
|
|
18
|
+
"@xylabs/promise": "^3.0.0",
|
|
19
|
+
"@xyo-network/module-model": "~2.91.0"
|
|
18
20
|
},
|
|
19
21
|
"devDependencies": {
|
|
20
|
-
"@xylabs/ts-scripts-yarn3": "^3.
|
|
21
|
-
"@xylabs/tsconfig": "^3.
|
|
22
|
+
"@xylabs/ts-scripts-yarn3": "^3.4.1",
|
|
23
|
+
"@xylabs/tsconfig": "^3.4.1",
|
|
22
24
|
"jest": "^29.7.0",
|
|
23
25
|
"jest-mock-extended": "^3.0.5",
|
|
24
26
|
"typescript": "^5.3.3"
|
|
@@ -62,6 +64,6 @@
|
|
|
62
64
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
63
65
|
},
|
|
64
66
|
"sideEffects": false,
|
|
65
|
-
"version": "2.
|
|
67
|
+
"version": "2.91.0",
|
|
66
68
|
"type": "module"
|
|
67
69
|
}
|
|
@@ -1,28 +1,48 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
1
2
|
import { exists } from '@xylabs/exists'
|
|
3
|
+
import { Address } from '@xylabs/hex'
|
|
2
4
|
import { Base, BaseParams } from '@xylabs/object'
|
|
5
|
+
import { Promisable } from '@xylabs/promise'
|
|
3
6
|
import {
|
|
4
7
|
duplicateModules,
|
|
5
8
|
ModuleFilter,
|
|
6
9
|
ModuleFilterOptions,
|
|
10
|
+
ModuleIdentifier,
|
|
11
|
+
ModuleIdentifierPart,
|
|
7
12
|
ModuleInstance,
|
|
8
13
|
ModuleRepository,
|
|
9
14
|
ModuleResolverInstance,
|
|
10
15
|
} from '@xyo-network/module-model'
|
|
11
16
|
|
|
12
17
|
import { SimpleModuleResolver } from './SimpleModuleResolver'
|
|
18
|
+
import { ModuleIdentifierTransformer } from './transformers'
|
|
13
19
|
|
|
14
|
-
export
|
|
20
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>
|
|
21
|
+
|
|
22
|
+
export interface ModuleResolverParams extends BaseParams {
|
|
23
|
+
moduleIdentifierTransformers?: ModuleIdentifierTransformer[]
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {
|
|
27
|
+
return moduleIdentifier?.split(':') as ModuleIdentifierPart[]
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
15
31
|
static defaultMaxDepth = 5
|
|
16
32
|
protected resolvers: ModuleResolverInstance[] = []
|
|
17
33
|
private localResolver: SimpleModuleResolver
|
|
18
34
|
|
|
19
|
-
constructor(params:
|
|
35
|
+
constructor(params: ModuleResolverParams = {}) {
|
|
20
36
|
super(params)
|
|
21
37
|
const localResolver = new SimpleModuleResolver()
|
|
22
38
|
this.addResolver(localResolver)
|
|
23
39
|
this.localResolver = localResolver
|
|
24
40
|
}
|
|
25
41
|
|
|
42
|
+
private get moduleIdentifierTransformers() {
|
|
43
|
+
return this.params.moduleIdentifierTransformers
|
|
44
|
+
}
|
|
45
|
+
|
|
26
46
|
add(module: ModuleInstance): this
|
|
27
47
|
add(module: ModuleInstance[]): this
|
|
28
48
|
add(module: ModuleInstance | ModuleInstance[]): this {
|
|
@@ -39,11 +59,11 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
|
|
|
39
59
|
return this
|
|
40
60
|
}
|
|
41
61
|
|
|
42
|
-
remove(
|
|
43
|
-
if (Array.isArray(
|
|
44
|
-
for (const address of
|
|
62
|
+
remove(addresses: Address[] | Address): this {
|
|
63
|
+
if (Array.isArray(addresses)) {
|
|
64
|
+
for (const address of addresses) this.removeSingleModule(address)
|
|
45
65
|
} else {
|
|
46
|
-
this.removeSingleModule(
|
|
66
|
+
this.removeSingleModule(addresses)
|
|
47
67
|
}
|
|
48
68
|
return this
|
|
49
69
|
}
|
|
@@ -54,31 +74,37 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
|
|
|
54
74
|
}
|
|
55
75
|
|
|
56
76
|
async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>
|
|
57
|
-
async resolve<T extends ModuleInstance = ModuleInstance>(
|
|
77
|
+
async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>
|
|
58
78
|
async resolve<T extends ModuleInstance = ModuleInstance>(
|
|
59
|
-
|
|
79
|
+
idOrFilter?: ModuleFilter<T> | ModuleIdentifier,
|
|
60
80
|
options?: ModuleFilterOptions<T>,
|
|
61
81
|
): Promise<T | T[] | undefined> {
|
|
62
82
|
const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth) - 1 }
|
|
63
|
-
if (typeof
|
|
83
|
+
if (typeof idOrFilter === 'string') {
|
|
84
|
+
const idParts = moduleIdentifierParts(idOrFilter)
|
|
85
|
+
if (idParts.length > 1) {
|
|
86
|
+
return await this.resolveMultipartIdentifier<T>(idOrFilter)
|
|
87
|
+
}
|
|
88
|
+
const id = await this.transformModuleIdentifier(idOrFilter)
|
|
64
89
|
if (mutatedOptions.maxDepth < 0) {
|
|
65
90
|
return undefined
|
|
66
91
|
}
|
|
67
92
|
const results = await Promise.all(
|
|
68
93
|
this.resolvers.map(async (resolver) => {
|
|
69
|
-
const result: T | undefined = await resolver.resolve<T>(
|
|
94
|
+
const result: T | undefined = await resolver.resolve<T>(id, mutatedOptions)
|
|
70
95
|
return result
|
|
71
96
|
}),
|
|
72
97
|
)
|
|
73
98
|
const result: T | undefined = results.filter(exists).filter(duplicateModules).pop()
|
|
74
99
|
return result
|
|
75
100
|
} else {
|
|
101
|
+
const filter = idOrFilter
|
|
76
102
|
if (mutatedOptions.maxDepth < 0) {
|
|
77
103
|
return []
|
|
78
104
|
}
|
|
79
105
|
const result = await Promise.all(
|
|
80
106
|
this.resolvers.map(async (resolver) => {
|
|
81
|
-
const result: T[] = await resolver.resolve<T>(
|
|
107
|
+
const result: T[] = await resolver.resolve<T>(filter, mutatedOptions)
|
|
82
108
|
return result
|
|
83
109
|
}),
|
|
84
110
|
)
|
|
@@ -92,7 +118,23 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
|
|
|
92
118
|
this.localResolver.add(module)
|
|
93
119
|
}
|
|
94
120
|
}
|
|
95
|
-
private removeSingleModule(
|
|
96
|
-
this.localResolver.remove(
|
|
121
|
+
private removeSingleModule(address: Address) {
|
|
122
|
+
this.localResolver.remove(address)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {
|
|
126
|
+
const idParts = moduleIdentifierParts(moduleIdentifier)
|
|
127
|
+
assertEx(idParts.length >= 2, 'Not a valid multipart identifier')
|
|
128
|
+
const id = assertEx(idParts.shift())
|
|
129
|
+
const module = await this.resolve(id)
|
|
130
|
+
return await module?.resolve<T>(idParts.join(':'))
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private async transformModuleIdentifier(identifier: ModuleIdentifier) {
|
|
134
|
+
let id = identifier
|
|
135
|
+
for (const transformer of this.moduleIdentifierTransformers ?? []) {
|
|
136
|
+
id = await transformer.transform(id)
|
|
137
|
+
}
|
|
138
|
+
return id
|
|
97
139
|
}
|
|
98
140
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex'
|
|
1
2
|
import { compact, flatten } from '@xylabs/lodash'
|
|
2
3
|
import { Promisable } from '@xylabs/promise'
|
|
3
4
|
import {
|
|
4
|
-
|
|
5
|
+
isAddressModuleFilter,
|
|
6
|
+
isNameModuleFilter,
|
|
7
|
+
isQueryModuleFilter,
|
|
5
8
|
ModuleFilter,
|
|
6
9
|
ModuleFilterOptions,
|
|
10
|
+
ModuleIdentifier,
|
|
7
11
|
ModuleInstance,
|
|
8
12
|
ModuleRepository,
|
|
9
13
|
ModuleResolverInstance,
|
|
10
|
-
NameModuleFilter,
|
|
11
|
-
QueryModuleFilter,
|
|
12
14
|
} from '@xyo-network/module-model'
|
|
13
15
|
|
|
14
16
|
//This class is now package private (not exported from index.ts)
|
|
@@ -31,7 +33,7 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
31
33
|
throw 'Adding resolvers not supported'
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
remove(address:
|
|
36
|
+
remove(address: Address | Address[]): this {
|
|
35
37
|
if (Array.isArray(address)) {
|
|
36
38
|
for (const addr of address) this.removeSingleModule(addr)
|
|
37
39
|
} else {
|
|
@@ -45,24 +47,25 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>
|
|
48
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
50
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>
|
|
49
51
|
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
50
|
-
|
|
52
|
+
idOrFilter?: ModuleFilter<T> | string,
|
|
51
53
|
options?: ModuleFilterOptions<T>,
|
|
52
54
|
): Promisable<T[] | T | undefined> {
|
|
53
55
|
const unfiltered = (() => {
|
|
54
|
-
if (
|
|
55
|
-
if (typeof
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
if (idOrFilter) {
|
|
57
|
+
if (typeof idOrFilter === 'string') {
|
|
58
|
+
const id = idOrFilter
|
|
59
|
+
return this.resolveByName<T>(Object.values(this.modules), [id]).pop() ?? this.resolveByAddress<T>(Object.values(this.modules), [id]).pop()
|
|
60
|
+
} else {
|
|
61
|
+
const filter = idOrFilter
|
|
62
|
+
if (isAddressModuleFilter(filter)) {
|
|
63
|
+
return this.resolveByAddress<T>(Object.values(this.modules), filter.address)
|
|
64
|
+
} else if (isNameModuleFilter(filter)) {
|
|
65
|
+
return this.resolveByName<T>(Object.values(this.modules), filter.name)
|
|
66
|
+
} else if (isQueryModuleFilter(filter)) {
|
|
67
|
+
return this.resolveByQuery<T>(Object.values(this.modules), filter.query)
|
|
68
|
+
}
|
|
66
69
|
}
|
|
67
70
|
} else {
|
|
68
71
|
return Object.values(this.modules) as T[]
|
|
@@ -70,7 +73,11 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
70
73
|
})()
|
|
71
74
|
const identity = options?.identity
|
|
72
75
|
if (identity) {
|
|
73
|
-
return
|
|
76
|
+
return (
|
|
77
|
+
Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module))
|
|
78
|
+
: identity(unfiltered) ? unfiltered
|
|
79
|
+
: undefined
|
|
80
|
+
)
|
|
74
81
|
} else {
|
|
75
82
|
return unfiltered
|
|
76
83
|
}
|
|
@@ -82,7 +89,7 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
82
89
|
}
|
|
83
90
|
}
|
|
84
91
|
|
|
85
|
-
private removeSingleModule(address:
|
|
92
|
+
private removeSingleModule(address: Address) {
|
|
86
93
|
if (address && this.modules[address]) {
|
|
87
94
|
delete this.modules[address]
|
|
88
95
|
const name = this.addressToName[address]
|
|
@@ -94,16 +101,15 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
94
101
|
|
|
95
102
|
private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], address?: string[]): T[] {
|
|
96
103
|
return (
|
|
97
|
-
address
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
) as T[]
|
|
104
|
+
address ?
|
|
105
|
+
compact(
|
|
106
|
+
flatten(
|
|
107
|
+
address?.map((address) => {
|
|
108
|
+
return modules.filter((module) => module.address === address)
|
|
109
|
+
}),
|
|
110
|
+
),
|
|
111
|
+
)
|
|
112
|
+
: modules) as T[]
|
|
107
113
|
}
|
|
108
114
|
|
|
109
115
|
private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name?: string[]): T[] {
|
|
@@ -115,21 +121,20 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
115
121
|
|
|
116
122
|
private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query?: string[][]): T[] {
|
|
117
123
|
return (
|
|
118
|
-
query
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
) as T[]
|
|
124
|
+
query ?
|
|
125
|
+
compact(
|
|
126
|
+
modules.filter((module) =>
|
|
127
|
+
query?.reduce((supported, queryList) => {
|
|
128
|
+
return (
|
|
129
|
+
// eslint-disable-next-line unicorn/no-array-reduce
|
|
130
|
+
queryList.reduce((supported, query) => {
|
|
131
|
+
const queryable = module.queries.includes(query)
|
|
132
|
+
return supported && queryable
|
|
133
|
+
}, true) || supported
|
|
134
|
+
)
|
|
135
|
+
}, false),
|
|
136
|
+
),
|
|
137
|
+
)
|
|
138
|
+
: modules) as T[]
|
|
134
139
|
}
|
|
135
140
|
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Promisable } from '@xylabs/promise'
|
|
2
|
+
import { ModuleIdentifier } from '@xyo-network/module-model'
|
|
3
|
+
|
|
4
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>
|
|
5
|
+
|
|
6
|
+
export interface ModuleIdentifierTransformer {
|
|
7
|
+
transform: ModuleIdentifierTransformerFunc
|
|
8
|
+
}
|