@xyo-network/module-model 2.94.18 → 2.94.20
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/ResolveHelper.d.cts +22 -0
- package/dist/browser/ResolveHelper.d.cts.map +1 -0
- package/dist/browser/ResolveHelper.d.mts +22 -0
- package/dist/browser/ResolveHelper.d.mts.map +1 -0
- package/dist/browser/ResolveHelper.d.ts +22 -0
- package/dist/browser/ResolveHelper.d.ts.map +1 -0
- package/dist/browser/index.cjs +125 -30
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -2
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -2
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -2
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +125 -30
- package/dist/browser/index.js.map +1 -1
- package/dist/node/ResolveHelper.d.cts +22 -0
- package/dist/node/ResolveHelper.d.cts.map +1 -0
- package/dist/node/ResolveHelper.d.mts +22 -0
- package/dist/node/ResolveHelper.d.mts.map +1 -0
- package/dist/node/ResolveHelper.d.ts +22 -0
- package/dist/node/ResolveHelper.d.ts.map +1 -0
- package/dist/node/index.cjs +130 -32
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -2
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -2
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -2
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +129 -30
- package/dist/node/index.js.map +1 -1
- package/package.json +7 -7
- package/src/ResolveHelper.ts +199 -0
- package/src/index.ts +1 -2
- package/dist/browser/resolveModuleIdentifier.d.cts +0 -4
- package/dist/browser/resolveModuleIdentifier.d.cts.map +0 -1
- package/dist/browser/resolveModuleIdentifier.d.mts +0 -4
- package/dist/browser/resolveModuleIdentifier.d.mts.map +0 -1
- package/dist/browser/resolveModuleIdentifier.d.ts +0 -4
- package/dist/browser/resolveModuleIdentifier.d.ts.map +0 -1
- package/dist/browser/traceModuleIdentifier.d.cts +0 -5
- package/dist/browser/traceModuleIdentifier.d.cts.map +0 -1
- package/dist/browser/traceModuleIdentifier.d.mts +0 -5
- package/dist/browser/traceModuleIdentifier.d.mts.map +0 -1
- package/dist/browser/traceModuleIdentifier.d.ts +0 -5
- package/dist/browser/traceModuleIdentifier.d.ts.map +0 -1
- package/dist/node/resolveModuleIdentifier.d.cts +0 -4
- package/dist/node/resolveModuleIdentifier.d.cts.map +0 -1
- package/dist/node/resolveModuleIdentifier.d.mts +0 -4
- package/dist/node/resolveModuleIdentifier.d.mts.map +0 -1
- package/dist/node/resolveModuleIdentifier.d.ts +0 -4
- package/dist/node/resolveModuleIdentifier.d.ts.map +0 -1
- package/dist/node/traceModuleIdentifier.d.cts +0 -5
- package/dist/node/traceModuleIdentifier.d.cts.map +0 -1
- package/dist/node/traceModuleIdentifier.d.mts +0 -5
- package/dist/node/traceModuleIdentifier.d.mts.map +0 -1
- package/dist/node/traceModuleIdentifier.d.ts +0 -5
- package/dist/node/traceModuleIdentifier.d.ts.map +0 -1
- package/src/resolveModuleIdentifier.ts +0 -17
- package/src/traceModuleIdentifier.ts +0 -19
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
2
|
+
/* eslint-disable complexity */
|
|
3
|
+
import { assertEx } from '@xylabs/assert'
|
|
4
|
+
import { Address } from '@xylabs/hex'
|
|
5
|
+
import { IdLogger, Logger } from '@xylabs/logger'
|
|
6
|
+
import { toJsonString } from '@xylabs/object'
|
|
7
|
+
|
|
8
|
+
import { asModuleInstance, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from './instance'
|
|
9
|
+
import { duplicateModules } from './lib'
|
|
10
|
+
import { ModuleIdentifier } from './ModuleIdentifier'
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
|
|
14
|
+
Resolution rules
|
|
15
|
+
|
|
16
|
+
1. Resolution is always done from the perspective of the module whose resolve function was called.
|
|
17
|
+
|
|
18
|
+
2. Requesting '*' will return all the modules that the resolver can see.
|
|
19
|
+
|
|
20
|
+
3. Requesting a simple ModuleName (string w/o ':' separator) will return an immediate child that has that name.
|
|
21
|
+
|
|
22
|
+
4. Requesting a complex ModuleName (string w/ ':' separator) will resolve the first part and then recursively resolve
|
|
23
|
+
the remaining name by calling the first part's resolved module's resolve with the remainder of the name.
|
|
24
|
+
|
|
25
|
+
5. Requesting an Address (string) will return the module with that address, regardless of how distant it is from the module. [limited by maxDepth]
|
|
26
|
+
|
|
27
|
+
6. Requesting a ModuleFilter will first request all the modules '*' and then filter them based on the filter settings. [Do we need this mode?]
|
|
28
|
+
|
|
29
|
+
7. When a string is passed as the ModuleIdentifier, do the following:
|
|
30
|
+
Check if id is complex (contains a ':')
|
|
31
|
+
a) If it is complex, go to #4 above
|
|
32
|
+
b) Call isAddress in the id to see if it is a valid address.
|
|
33
|
+
i) If it is a valid address, go to #5 above
|
|
34
|
+
ii) If it is not a valid address, go to # 3 above
|
|
35
|
+
|
|
36
|
+
Note 1: If someone were to name a module with a valid address, that name will not be resolvable.
|
|
37
|
+
Note 2: If someone were to name a module with a string containing a ':', that name will not be resolvable.
|
|
38
|
+
|
|
39
|
+
8. Modules have two resolvers, up and down.
|
|
40
|
+
a) Up Traversal
|
|
41
|
+
i) Every module's upResolver also can call it's parent's upResolver
|
|
42
|
+
ii) An upResolver also can see the parent's children's downResolvers
|
|
43
|
+
iii) This means that when traversing upResolvers, you can traverse all the way up.
|
|
44
|
+
iv) At any point of the up traversal, it can start traversing down to any immediate child, public or private.
|
|
45
|
+
b) Down Traversal
|
|
46
|
+
i) A down traversal is limited to the public children of the module. [The same as scope as calling the 'resolve' function]
|
|
47
|
+
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
export interface ResolveHelperConfig {
|
|
51
|
+
address: Address
|
|
52
|
+
dead?: boolean
|
|
53
|
+
downResolver?: ModuleResolver
|
|
54
|
+
logger?: Logger
|
|
55
|
+
module: ModuleInstance
|
|
56
|
+
upResolver?: ModuleResolver
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export class ResolveHelper {
|
|
60
|
+
static defaultLogger?: Logger
|
|
61
|
+
static async resolve<T extends ModuleInstance = ModuleInstance>(
|
|
62
|
+
config: ResolveHelperConfig,
|
|
63
|
+
all: '*',
|
|
64
|
+
options?: ModuleFilterOptions<T>,
|
|
65
|
+
): Promise<T[]>
|
|
66
|
+
static async resolve<T extends ModuleInstance = ModuleInstance>(
|
|
67
|
+
config: ResolveHelperConfig,
|
|
68
|
+
filter: ModuleFilter,
|
|
69
|
+
options?: ModuleFilterOptions<T>,
|
|
70
|
+
): Promise<T[]>
|
|
71
|
+
static async resolve<T extends ModuleInstance = ModuleInstance>(
|
|
72
|
+
config: ResolveHelperConfig,
|
|
73
|
+
id: ModuleIdentifier,
|
|
74
|
+
options?: ModuleFilterOptions<T>,
|
|
75
|
+
): Promise<T | undefined>
|
|
76
|
+
static async resolve<T extends ModuleInstance = ModuleInstance>(
|
|
77
|
+
config: ResolveHelperConfig,
|
|
78
|
+
idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',
|
|
79
|
+
{ visibility, maxDepth = 3, required = 'log', ...options }: ModuleFilterOptions<T> = {},
|
|
80
|
+
): Promise<T | T[] | undefined> {
|
|
81
|
+
const { module, logger = this.defaultLogger, dead = false, upResolver, downResolver } = config
|
|
82
|
+
const log = logger ? new IdLogger(logger, () => `ResolveHelper [${module.id}][${idOrFilter}][${visibility}]`) : undefined
|
|
83
|
+
|
|
84
|
+
const downLocalOptions: ModuleFilterOptions<T> = { ...options, direction: 'down', maxDepth, required: false, visibility }
|
|
85
|
+
const upLocalOptions: ModuleFilterOptions<T> = { ...downLocalOptions, direction: 'up' }
|
|
86
|
+
|
|
87
|
+
const childOptions: ModuleFilterOptions<T> = { ...options, maxDepth: maxDepth - 1, required: false, visibility }
|
|
88
|
+
|
|
89
|
+
const direction = options?.direction ?? 'all'
|
|
90
|
+
const up = direction === 'up' || direction === 'all'
|
|
91
|
+
const down = direction === 'down' || direction === 'all'
|
|
92
|
+
let result: T | T[] | undefined
|
|
93
|
+
log?.debug('start', idOrFilter, maxDepth)
|
|
94
|
+
if (idOrFilter === '*') {
|
|
95
|
+
if (dead) {
|
|
96
|
+
log?.warn('failed [dead]', idOrFilter)
|
|
97
|
+
return []
|
|
98
|
+
}
|
|
99
|
+
const modules = [
|
|
100
|
+
...(down ? await (downResolver as ModuleResolver).resolve<T>('*', downLocalOptions) : []),
|
|
101
|
+
...(up ? await (upResolver as ModuleResolver).resolve<T>('*', upLocalOptions) : []),
|
|
102
|
+
]
|
|
103
|
+
.filter(duplicateModules)
|
|
104
|
+
.filter((module) => module.address !== config.address)
|
|
105
|
+
|
|
106
|
+
if (modules.length > 0) {
|
|
107
|
+
log?.log('modules [count]', modules.length)
|
|
108
|
+
log?.debug('modules', toJsonString(modules, 4))
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (maxDepth === 0) {
|
|
112
|
+
return modules
|
|
113
|
+
}
|
|
114
|
+
const childModules = (await Promise.all(modules.map(async (module) => await module.resolve<T>('*', childOptions))))
|
|
115
|
+
.flat()
|
|
116
|
+
.filter(duplicateModules)
|
|
117
|
+
return [...modules, ...childModules].filter(duplicateModules)
|
|
118
|
+
} else {
|
|
119
|
+
switch (typeof idOrFilter) {
|
|
120
|
+
case 'string': {
|
|
121
|
+
if (dead) {
|
|
122
|
+
return undefined
|
|
123
|
+
}
|
|
124
|
+
result =
|
|
125
|
+
(down && downResolver ? await this.resolveModuleIdentifier<T>(downResolver, idOrFilter) : undefined) ??
|
|
126
|
+
(up && upResolver ? await this.resolveModuleIdentifier<T>(upResolver, idOrFilter) : undefined)
|
|
127
|
+
break
|
|
128
|
+
}
|
|
129
|
+
default: {
|
|
130
|
+
if (dead) {
|
|
131
|
+
return []
|
|
132
|
+
}
|
|
133
|
+
const filter: ModuleFilter<T> | undefined = idOrFilter
|
|
134
|
+
result = [
|
|
135
|
+
...(down ? await (downResolver as ModuleResolver).resolve<T>(filter, downLocalOptions) : []),
|
|
136
|
+
...(up ? await (upResolver as ModuleResolver).resolve<T>(filter, upLocalOptions) : []),
|
|
137
|
+
].filter(duplicateModules)
|
|
138
|
+
break
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
this.validateRequiredResolve(required, result, idOrFilter, logger)
|
|
143
|
+
return result
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
//resolves a complex module path to addresses
|
|
147
|
+
static async resolveModuleIdentifier<T extends ModuleInstance = ModuleInstance>(
|
|
148
|
+
resolver: ModuleResolver,
|
|
149
|
+
path: ModuleIdentifier,
|
|
150
|
+
): Promise<T | undefined> {
|
|
151
|
+
const parts = path.split(':')
|
|
152
|
+
const first = parts.shift()
|
|
153
|
+
const firstModule = asModuleInstance(
|
|
154
|
+
assertEx(await resolver.resolve(first, { maxDepth: 1 }), () => `Failed to resolve [${first}]`),
|
|
155
|
+
() => `Resolved invalid module instance [${first}]`,
|
|
156
|
+
) as T
|
|
157
|
+
if (firstModule) {
|
|
158
|
+
return parts.length > 0 ? await this.resolveModuleIdentifier<T>(firstModule, parts.join(':')) : firstModule
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
//translates a complex module path to addresses
|
|
163
|
+
static async traceModuleIdentifier(resolver: ModuleResolver, path: ModuleIdentifier): Promise<Address[]> {
|
|
164
|
+
const parts = path.split(':')
|
|
165
|
+
const first = parts.shift()
|
|
166
|
+
const firstModule = asModuleInstance(
|
|
167
|
+
assertEx(await resolver.resolve(first, { maxDepth: 1 }), () => `Failed to resolve [${first}]`),
|
|
168
|
+
() => `Resolved invalid module instance [${first}]`,
|
|
169
|
+
)
|
|
170
|
+
if (firstModule) {
|
|
171
|
+
return parts.length > 0 ? [firstModule.address, ...(await this.traceModuleIdentifier(firstModule, parts.join(':')))] : [firstModule.address]
|
|
172
|
+
}
|
|
173
|
+
return []
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
static validateRequiredResolve(
|
|
177
|
+
required: boolean | 'warn' | 'log',
|
|
178
|
+
result: ModuleInstance[] | ModuleInstance | undefined,
|
|
179
|
+
idOrFilter: ModuleIdentifier | ModuleFilter,
|
|
180
|
+
logger = this.defaultLogger,
|
|
181
|
+
) {
|
|
182
|
+
const log = logger ? new IdLogger(logger, () => `validateRequiredResolve [${idOrFilter}][${result}]`) : undefined
|
|
183
|
+
if (required && (result === undefined || (Array.isArray(result) && result.length > 0))) {
|
|
184
|
+
switch (required) {
|
|
185
|
+
case 'warn': {
|
|
186
|
+
log?.warn('resolve failed', idOrFilter)
|
|
187
|
+
break
|
|
188
|
+
}
|
|
189
|
+
case 'log': {
|
|
190
|
+
log?.log('resolve failed', idOrFilter)
|
|
191
|
+
break
|
|
192
|
+
}
|
|
193
|
+
default: {
|
|
194
|
+
throw new Error(`resolve failed [${idOrFilter}]`)
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -14,6 +14,5 @@ export * from './ModuleQueryHandlerResult'
|
|
|
14
14
|
export * from './ModuleQueryResult'
|
|
15
15
|
export * from './Payload'
|
|
16
16
|
export * from './Queries'
|
|
17
|
-
export * from './
|
|
18
|
-
export * from './traceModuleIdentifier'
|
|
17
|
+
export * from './ResolveHelper'
|
|
19
18
|
export * from './withModule'
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ModuleInstance, ModuleResolver } from './instance';
|
|
2
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
3
|
-
export declare const resolveModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<ModuleInstance | undefined>;
|
|
4
|
-
//# sourceMappingURL=resolveModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/resolveModuleIdentifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,uBAAuB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,cAAc,GAAG,SAAS,CAUlI,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ModuleInstance, ModuleResolver } from './instance';
|
|
2
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
3
|
-
export declare const resolveModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<ModuleInstance | undefined>;
|
|
4
|
-
//# sourceMappingURL=resolveModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/resolveModuleIdentifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,uBAAuB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,cAAc,GAAG,SAAS,CAUlI,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ModuleInstance, ModuleResolver } from './instance';
|
|
2
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
3
|
-
export declare const resolveModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<ModuleInstance | undefined>;
|
|
4
|
-
//# sourceMappingURL=resolveModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/resolveModuleIdentifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,uBAAuB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,cAAc,GAAG,SAAS,CAUlI,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { ModuleResolver } from './instance';
|
|
3
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
4
|
-
export declare const traceModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<Address[]>;
|
|
5
|
-
//# sourceMappingURL=traceModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traceModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/traceModuleIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,qBAAqB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,OAAO,EAAE,CAW/G,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { ModuleResolver } from './instance';
|
|
3
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
4
|
-
export declare const traceModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<Address[]>;
|
|
5
|
-
//# sourceMappingURL=traceModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traceModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/traceModuleIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,qBAAqB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,OAAO,EAAE,CAW/G,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { ModuleResolver } from './instance';
|
|
3
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
4
|
-
export declare const traceModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<Address[]>;
|
|
5
|
-
//# sourceMappingURL=traceModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traceModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/traceModuleIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,qBAAqB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,OAAO,EAAE,CAW/G,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ModuleInstance, ModuleResolver } from './instance';
|
|
2
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
3
|
-
export declare const resolveModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<ModuleInstance | undefined>;
|
|
4
|
-
//# sourceMappingURL=resolveModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/resolveModuleIdentifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,uBAAuB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,cAAc,GAAG,SAAS,CAUlI,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ModuleInstance, ModuleResolver } from './instance';
|
|
2
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
3
|
-
export declare const resolveModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<ModuleInstance | undefined>;
|
|
4
|
-
//# sourceMappingURL=resolveModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/resolveModuleIdentifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,uBAAuB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,cAAc,GAAG,SAAS,CAUlI,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ModuleInstance, ModuleResolver } from './instance';
|
|
2
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
3
|
-
export declare const resolveModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<ModuleInstance | undefined>;
|
|
4
|
-
//# sourceMappingURL=resolveModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/resolveModuleIdentifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,uBAAuB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,cAAc,GAAG,SAAS,CAUlI,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { ModuleResolver } from './instance';
|
|
3
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
4
|
-
export declare const traceModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<Address[]>;
|
|
5
|
-
//# sourceMappingURL=traceModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traceModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/traceModuleIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,qBAAqB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,OAAO,EAAE,CAW/G,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { ModuleResolver } from './instance';
|
|
3
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
4
|
-
export declare const traceModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<Address[]>;
|
|
5
|
-
//# sourceMappingURL=traceModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traceModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/traceModuleIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,qBAAqB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,OAAO,EAAE,CAW/G,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Address } from '@xylabs/hex';
|
|
2
|
-
import { ModuleResolver } from './instance';
|
|
3
|
-
import { ModuleIdentifier } from './ModuleIdentifier';
|
|
4
|
-
export declare const traceModuleIdentifier: (resolver: ModuleResolver, path: ModuleIdentifier) => Promise<Address[]>;
|
|
5
|
-
//# sourceMappingURL=traceModuleIdentifier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traceModuleIdentifier.d.ts","sourceRoot":"","sources":["../../src/traceModuleIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAoB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,eAAO,MAAM,qBAAqB,aAAoB,cAAc,QAAQ,gBAAgB,KAAG,QAAQ,OAAO,EAAE,CAW/G,CAAA"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
|
|
3
|
-
import { asModuleInstance, ModuleInstance, ModuleResolver } from './instance'
|
|
4
|
-
import { ModuleIdentifier } from './ModuleIdentifier'
|
|
5
|
-
|
|
6
|
-
//resolves a complex module path to addresses
|
|
7
|
-
export const resolveModuleIdentifier = async (resolver: ModuleResolver, path: ModuleIdentifier): Promise<ModuleInstance | undefined> => {
|
|
8
|
-
const parts = path.split(':')
|
|
9
|
-
const first = parts.shift()
|
|
10
|
-
const firstModule = asModuleInstance(
|
|
11
|
-
assertEx(await resolver.resolve(first, { maxDepth: 1 }), () => `Failed to resolve [${first}]`),
|
|
12
|
-
() => `Resolved invalid module instance [${first}]`,
|
|
13
|
-
)
|
|
14
|
-
if (firstModule) {
|
|
15
|
-
return parts.length > 0 ? await resolveModuleIdentifier(firstModule, parts.join(':')) : firstModule
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { assertEx } from '@xylabs/assert'
|
|
2
|
-
import { Address } from '@xylabs/hex'
|
|
3
|
-
|
|
4
|
-
import { asModuleInstance, ModuleResolver } from './instance'
|
|
5
|
-
import { ModuleIdentifier } from './ModuleIdentifier'
|
|
6
|
-
|
|
7
|
-
//translates a complex module path to addresses
|
|
8
|
-
export const traceModuleIdentifier = async (resolver: ModuleResolver, path: ModuleIdentifier): Promise<Address[]> => {
|
|
9
|
-
const parts = path.split(':')
|
|
10
|
-
const first = parts.shift()
|
|
11
|
-
const firstModule = asModuleInstance(
|
|
12
|
-
assertEx(await resolver.resolve(first, { maxDepth: 1 }), () => `Failed to resolve [${first}]`),
|
|
13
|
-
() => `Resolved invalid module instance [${first}]`,
|
|
14
|
-
)
|
|
15
|
-
if (firstModule) {
|
|
16
|
-
return parts.length > 0 ? [firstModule.address, ...(await traceModuleIdentifier(firstModule, parts.join(':')))] : [firstModule.address]
|
|
17
|
-
}
|
|
18
|
-
return []
|
|
19
|
-
}
|