@xyo-network/module-model 2.94.40 → 2.95.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.
Files changed (145) hide show
  1. package/dist/browser/ModuleIdentifier.d.cts +2 -1
  2. package/dist/browser/ModuleIdentifier.d.cts.map +1 -1
  3. package/dist/browser/ModuleIdentifier.d.mts +2 -1
  4. package/dist/browser/ModuleIdentifier.d.mts.map +1 -1
  5. package/dist/browser/ModuleIdentifier.d.ts +2 -1
  6. package/dist/browser/ModuleIdentifier.d.ts.map +1 -1
  7. package/dist/browser/ModuleIdentifierTransformer.d.cts +1 -1
  8. package/dist/browser/ModuleIdentifierTransformer.d.cts.map +1 -1
  9. package/dist/browser/ModuleIdentifierTransformer.d.mts +1 -1
  10. package/dist/browser/ModuleIdentifierTransformer.d.mts.map +1 -1
  11. package/dist/browser/ModuleIdentifierTransformer.d.ts +1 -1
  12. package/dist/browser/ModuleIdentifierTransformer.d.ts.map +1 -1
  13. package/dist/browser/{ResolveHelper.d.cts → ResolveHelper/ResolveHelper.d.cts} +5 -5
  14. package/dist/browser/ResolveHelper/ResolveHelper.d.cts.map +1 -0
  15. package/dist/{node → browser/ResolveHelper}/ResolveHelper.d.mts +5 -5
  16. package/dist/browser/ResolveHelper/ResolveHelper.d.mts.map +1 -0
  17. package/dist/{node → browser/ResolveHelper}/ResolveHelper.d.ts +5 -5
  18. package/dist/browser/ResolveHelper/ResolveHelper.d.ts.map +1 -0
  19. package/dist/browser/ResolveHelper/index.d.cts +5 -0
  20. package/dist/browser/ResolveHelper/index.d.cts.map +1 -0
  21. package/dist/browser/ResolveHelper/index.d.mts +5 -0
  22. package/dist/browser/ResolveHelper/index.d.mts.map +1 -0
  23. package/dist/browser/ResolveHelper/index.d.ts +5 -0
  24. package/dist/browser/ResolveHelper/index.d.ts.map +1 -0
  25. package/dist/browser/ResolveHelper/resolveAddressToInstance.d.cts +7 -0
  26. package/dist/browser/ResolveHelper/resolveAddressToInstance.d.cts.map +1 -0
  27. package/dist/browser/ResolveHelper/resolveAddressToInstance.d.mts +7 -0
  28. package/dist/browser/ResolveHelper/resolveAddressToInstance.d.mts.map +1 -0
  29. package/dist/browser/ResolveHelper/resolveAddressToInstance.d.ts +7 -0
  30. package/dist/browser/ResolveHelper/resolveAddressToInstance.d.ts.map +1 -0
  31. package/dist/browser/ResolveHelper/resolveLocalNameToAddress.d.cts +7 -0
  32. package/dist/browser/ResolveHelper/resolveLocalNameToAddress.d.cts.map +1 -0
  33. package/dist/browser/ResolveHelper/resolveLocalNameToAddress.d.mts +7 -0
  34. package/dist/browser/ResolveHelper/resolveLocalNameToAddress.d.mts.map +1 -0
  35. package/dist/browser/ResolveHelper/resolveLocalNameToAddress.d.ts +7 -0
  36. package/dist/browser/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -0
  37. package/dist/browser/ResolveHelper/resolvePathToAddress.d.cts +5 -0
  38. package/dist/browser/ResolveHelper/resolvePathToAddress.d.cts.map +1 -0
  39. package/dist/browser/ResolveHelper/resolvePathToAddress.d.mts +5 -0
  40. package/dist/browser/ResolveHelper/resolvePathToAddress.d.mts.map +1 -0
  41. package/dist/browser/ResolveHelper/resolvePathToAddress.d.ts +5 -0
  42. package/dist/browser/ResolveHelper/resolvePathToAddress.d.ts.map +1 -0
  43. package/dist/browser/ResolveHelper/traceModuleIdentifier.d.cts +5 -0
  44. package/dist/browser/ResolveHelper/traceModuleIdentifier.d.cts.map +1 -0
  45. package/dist/browser/ResolveHelper/traceModuleIdentifier.d.mts +5 -0
  46. package/dist/browser/ResolveHelper/traceModuleIdentifier.d.mts.map +1 -0
  47. package/dist/browser/ResolveHelper/traceModuleIdentifier.d.ts +5 -0
  48. package/dist/browser/ResolveHelper/traceModuleIdentifier.d.ts.map +1 -0
  49. package/dist/browser/ResolveHelper/transformModuleIdentifier.d.cts +4 -0
  50. package/dist/browser/ResolveHelper/transformModuleIdentifier.d.cts.map +1 -0
  51. package/dist/browser/ResolveHelper/transformModuleIdentifier.d.mts +4 -0
  52. package/dist/browser/ResolveHelper/transformModuleIdentifier.d.mts.map +1 -0
  53. package/dist/browser/ResolveHelper/transformModuleIdentifier.d.ts +4 -0
  54. package/dist/browser/ResolveHelper/transformModuleIdentifier.d.ts.map +1 -0
  55. package/dist/browser/index.cjs +153 -42
  56. package/dist/browser/index.cjs.map +1 -1
  57. package/dist/browser/index.js +153 -42
  58. package/dist/browser/index.js.map +1 -1
  59. package/dist/browser/instance/Instance.d.cts +17 -2
  60. package/dist/browser/instance/Instance.d.cts.map +1 -1
  61. package/dist/browser/instance/Instance.d.mts +17 -2
  62. package/dist/browser/instance/Instance.d.mts.map +1 -1
  63. package/dist/browser/instance/Instance.d.ts +17 -2
  64. package/dist/browser/instance/Instance.d.ts.map +1 -1
  65. package/dist/node/ModuleIdentifier.d.cts +2 -1
  66. package/dist/node/ModuleIdentifier.d.cts.map +1 -1
  67. package/dist/node/ModuleIdentifier.d.mts +2 -1
  68. package/dist/node/ModuleIdentifier.d.mts.map +1 -1
  69. package/dist/node/ModuleIdentifier.d.ts +2 -1
  70. package/dist/node/ModuleIdentifier.d.ts.map +1 -1
  71. package/dist/node/ModuleIdentifierTransformer.d.cts +1 -1
  72. package/dist/node/ModuleIdentifierTransformer.d.cts.map +1 -1
  73. package/dist/node/ModuleIdentifierTransformer.d.mts +1 -1
  74. package/dist/node/ModuleIdentifierTransformer.d.mts.map +1 -1
  75. package/dist/node/ModuleIdentifierTransformer.d.ts +1 -1
  76. package/dist/node/ModuleIdentifierTransformer.d.ts.map +1 -1
  77. package/dist/node/{ResolveHelper.d.cts → ResolveHelper/ResolveHelper.d.cts} +5 -5
  78. package/dist/node/ResolveHelper/ResolveHelper.d.cts.map +1 -0
  79. package/dist/{browser → node/ResolveHelper}/ResolveHelper.d.mts +5 -5
  80. package/dist/node/ResolveHelper/ResolveHelper.d.mts.map +1 -0
  81. package/dist/{browser → node/ResolveHelper}/ResolveHelper.d.ts +5 -5
  82. package/dist/node/ResolveHelper/ResolveHelper.d.ts.map +1 -0
  83. package/dist/node/ResolveHelper/index.d.cts +5 -0
  84. package/dist/node/ResolveHelper/index.d.cts.map +1 -0
  85. package/dist/node/ResolveHelper/index.d.mts +5 -0
  86. package/dist/node/ResolveHelper/index.d.mts.map +1 -0
  87. package/dist/node/ResolveHelper/index.d.ts +5 -0
  88. package/dist/node/ResolveHelper/index.d.ts.map +1 -0
  89. package/dist/node/ResolveHelper/resolveAddressToInstance.d.cts +7 -0
  90. package/dist/node/ResolveHelper/resolveAddressToInstance.d.cts.map +1 -0
  91. package/dist/node/ResolveHelper/resolveAddressToInstance.d.mts +7 -0
  92. package/dist/node/ResolveHelper/resolveAddressToInstance.d.mts.map +1 -0
  93. package/dist/node/ResolveHelper/resolveAddressToInstance.d.ts +7 -0
  94. package/dist/node/ResolveHelper/resolveAddressToInstance.d.ts.map +1 -0
  95. package/dist/node/ResolveHelper/resolveLocalNameToAddress.d.cts +7 -0
  96. package/dist/node/ResolveHelper/resolveLocalNameToAddress.d.cts.map +1 -0
  97. package/dist/node/ResolveHelper/resolveLocalNameToAddress.d.mts +7 -0
  98. package/dist/node/ResolveHelper/resolveLocalNameToAddress.d.mts.map +1 -0
  99. package/dist/node/ResolveHelper/resolveLocalNameToAddress.d.ts +7 -0
  100. package/dist/node/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -0
  101. package/dist/node/ResolveHelper/resolvePathToAddress.d.cts +5 -0
  102. package/dist/node/ResolveHelper/resolvePathToAddress.d.cts.map +1 -0
  103. package/dist/node/ResolveHelper/resolvePathToAddress.d.mts +5 -0
  104. package/dist/node/ResolveHelper/resolvePathToAddress.d.mts.map +1 -0
  105. package/dist/node/ResolveHelper/resolvePathToAddress.d.ts +5 -0
  106. package/dist/node/ResolveHelper/resolvePathToAddress.d.ts.map +1 -0
  107. package/dist/node/ResolveHelper/traceModuleIdentifier.d.cts +5 -0
  108. package/dist/node/ResolveHelper/traceModuleIdentifier.d.cts.map +1 -0
  109. package/dist/node/ResolveHelper/traceModuleIdentifier.d.mts +5 -0
  110. package/dist/node/ResolveHelper/traceModuleIdentifier.d.mts.map +1 -0
  111. package/dist/node/ResolveHelper/traceModuleIdentifier.d.ts +5 -0
  112. package/dist/node/ResolveHelper/traceModuleIdentifier.d.ts.map +1 -0
  113. package/dist/node/ResolveHelper/transformModuleIdentifier.d.cts +4 -0
  114. package/dist/node/ResolveHelper/transformModuleIdentifier.d.cts.map +1 -0
  115. package/dist/node/ResolveHelper/transformModuleIdentifier.d.mts +4 -0
  116. package/dist/node/ResolveHelper/transformModuleIdentifier.d.mts.map +1 -0
  117. package/dist/node/ResolveHelper/transformModuleIdentifier.d.ts +4 -0
  118. package/dist/node/ResolveHelper/transformModuleIdentifier.d.ts.map +1 -0
  119. package/dist/node/index.cjs +168 -42
  120. package/dist/node/index.cjs.map +1 -1
  121. package/dist/node/index.js +159 -42
  122. package/dist/node/index.js.map +1 -1
  123. package/dist/node/instance/Instance.d.cts +17 -2
  124. package/dist/node/instance/Instance.d.cts.map +1 -1
  125. package/dist/node/instance/Instance.d.mts +17 -2
  126. package/dist/node/instance/Instance.d.mts.map +1 -1
  127. package/dist/node/instance/Instance.d.ts +17 -2
  128. package/dist/node/instance/Instance.d.ts.map +1 -1
  129. package/package.json +7 -7
  130. package/src/ModuleIdentifier.ts +2 -0
  131. package/src/ModuleIdentifierTransformer.ts +1 -1
  132. package/src/{ResolveHelper.ts → ResolveHelper/ResolveHelper.ts} +22 -34
  133. package/src/ResolveHelper/index.ts +4 -0
  134. package/src/ResolveHelper/resolveAddressToInstance.ts +73 -0
  135. package/src/ResolveHelper/resolveLocalNameToAddress.ts +29 -0
  136. package/src/ResolveHelper/resolvePathToAddress.ts +36 -0
  137. package/src/ResolveHelper/traceModuleIdentifier.ts +18 -0
  138. package/src/ResolveHelper/transformModuleIdentifier.ts +13 -0
  139. package/src/instance/Instance.ts +20 -2
  140. package/dist/browser/ResolveHelper.d.cts.map +0 -1
  141. package/dist/browser/ResolveHelper.d.mts.map +0 -1
  142. package/dist/browser/ResolveHelper.d.ts.map +0 -1
  143. package/dist/node/ResolveHelper.d.cts.map +0 -1
  144. package/dist/node/ResolveHelper.d.mts.map +0 -1
  145. package/dist/node/ResolveHelper.d.ts.map +0 -1
@@ -6,10 +6,12 @@ import { Address, isAddress } from '@xylabs/hex'
6
6
  import { IdLogger, Logger } from '@xylabs/logger'
7
7
  import { toJsonString } from '@xylabs/object'
8
8
 
9
- import { asModuleInstance, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from './instance'
10
- import { duplicateModules } from './lib'
11
- import { ModuleIdentifier } from './ModuleIdentifier'
12
- import { ModuleIdentifierTransformer } from './ModuleIdentifierTransformer'
9
+ import { asModuleInstance, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '../instance'
10
+ import { duplicateModules } from '../lib'
11
+ import { ModuleIdentifier } from '../ModuleIdentifier'
12
+ import { ModuleIdentifierTransformer } from '../ModuleIdentifierTransformer'
13
+ import { traceModuleIdentifier } from './traceModuleIdentifier'
14
+ import { transformModuleIdentifier } from './transformModuleIdentifier'
13
15
 
14
16
  /*
15
17
 
@@ -131,16 +133,18 @@ export class ResolveHelper {
131
133
 
132
134
  const id = await this.transformModuleIdentifier(idOrFilter, transformers)
133
135
 
134
- const resolvers = [
135
- [downResolver, downLocalOptions],
136
- [up ? upResolver : undefined, upLocalOptions],
137
- [up ? privateResolver : undefined, upLocalOptions],
138
- ].filter(([resolver]) => exists(resolver)) as [ModuleResolver, ModuleFilterOptions<T>][]
139
-
140
- for (const resolver of resolvers) {
141
- const [resolverInstance] = resolver
142
- if (!result) {
143
- result = await this.resolveModuleIdentifier<T>(resolverInstance, id)
136
+ if (id) {
137
+ const resolvers = [
138
+ [downResolver, downLocalOptions],
139
+ [up ? upResolver : undefined, upLocalOptions],
140
+ [up ? privateResolver : undefined, upLocalOptions],
141
+ ].filter(([resolver]) => exists(resolver)) as [ModuleResolver, ModuleFilterOptions<T>][]
142
+
143
+ for (const resolver of resolvers) {
144
+ const [resolverInstance] = resolver
145
+ if (!result) {
146
+ result = await this.resolveModuleIdentifier<T>(resolverInstance, id)
147
+ }
144
148
  }
145
149
  }
146
150
 
@@ -183,28 +187,12 @@ export class ResolveHelper {
183
187
  }
184
188
 
185
189
  //translates a complex module path to addresses
186
- static async traceModuleIdentifier(resolver: ModuleResolver, path: ModuleIdentifier): Promise<Address[]> {
187
- const parts = path.split(':')
188
- const first = parts.shift()
189
- const firstModule = asModuleInstance(
190
- assertEx(await resolver.resolve(first, { maxDepth: 1 }), () => `Failed to resolve [${first}]`),
191
- () => `Resolved invalid module instance [${first}]`,
192
- )
193
- if (firstModule) {
194
- return parts.length > 0 ? [firstModule.address, ...(await this.traceModuleIdentifier(firstModule, parts.join(':')))] : [firstModule.address]
195
- }
196
- return []
190
+ static traceModuleIdentifier(resolver: ModuleResolver, path: ModuleIdentifier) {
191
+ return traceModuleIdentifier(resolver, path)
197
192
  }
198
193
 
199
- static async transformModuleIdentifier(
200
- identifier: ModuleIdentifier,
201
- transformers: ModuleIdentifierTransformer[] = ResolveHelper.transformers,
202
- ): Promise<ModuleIdentifier> {
203
- let id = identifier
204
- for (const transformer of transformers) {
205
- id = await transformer.transform(id)
206
- }
207
- return id
194
+ static transformModuleIdentifier(identifier: ModuleIdentifier, transformers: ModuleIdentifierTransformer[] = ResolveHelper.transformers) {
195
+ return transformModuleIdentifier(identifier, transformers)
208
196
  }
209
197
 
210
198
  static validateRequiredResolve(
@@ -0,0 +1,4 @@
1
+ export * from './resolveAddressToInstance'
2
+ export * from './ResolveHelper'
3
+ export * from './resolveLocalNameToAddress'
4
+ export * from './resolvePathToAddress'
@@ -0,0 +1,73 @@
1
+ import { Address } from '@xylabs/hex'
2
+
3
+ import { ModuleInstance } from '../instance'
4
+
5
+ export const resolveAddressToInstanceDown = async (
6
+ root: ModuleInstance,
7
+ address: Address,
8
+ includePrivate = false,
9
+ ignore: Address[] = [],
10
+ ): Promise<ModuleInstance | undefined> => {
11
+ if (root.address === address) {
12
+ return root
13
+ }
14
+ const cache = root.addressCache?.('up', includePrivate)
15
+ const privateChildren = (includePrivate ? await root.privateChildren?.() : []) ?? []
16
+ const publicChildren = (await root.publicChildren?.()) ?? []
17
+ const children = [...privateChildren, ...publicChildren]
18
+ for (const child of children) {
19
+ const found = await resolveAddressToInstanceDown(child, address, includePrivate, ignore)
20
+ if (found) {
21
+ cache?.set(address, new WeakRef(found))
22
+ return found
23
+ }
24
+ }
25
+ cache?.set(address, null)
26
+ }
27
+
28
+ export const resolveAddressToInstanceSiblings = async (
29
+ root: ModuleInstance,
30
+ address: Address,
31
+ includePrivate = false,
32
+ ignore: Address[] = [],
33
+ ): Promise<ModuleInstance | undefined> => {
34
+ const siblings = (await root.siblings?.()) ?? []
35
+ for (const sibling of siblings) {
36
+ const found = await resolveAddressToInstanceDown(sibling, address, includePrivate, ignore)
37
+ if (found) {
38
+ return found
39
+ }
40
+ }
41
+ }
42
+
43
+ export const resolveAddressToInstanceUp = async (
44
+ root: ModuleInstance,
45
+ address: Address,
46
+ includePrivate = false,
47
+ ignore: Address[] = [],
48
+ ): Promise<ModuleInstance | undefined> => {
49
+ const cache = root.addressCache?.('up', includePrivate)
50
+ const parents = (await root.parents?.()) ?? []
51
+ for (const parent of parents) {
52
+ const found = await resolveAddressToInstance(parent, address, includePrivate, ignore)
53
+ if (found) {
54
+ cache?.set(address, new WeakRef(found))
55
+ return found
56
+ }
57
+ }
58
+ cache?.set(address, null)
59
+ }
60
+
61
+ export const resolveAddressToInstance = async (
62
+ root: ModuleInstance,
63
+ address: Address,
64
+ includePrivate = false,
65
+ ignore: Address[] = [],
66
+ ): Promise<ModuleInstance | undefined> => {
67
+ const cache = root.addressCache?.('all', includePrivate)
68
+ const result =
69
+ (await resolveAddressToInstanceDown(root, address, includePrivate, ignore)) ??
70
+ (await resolveAddressToInstanceUp(root, address, includePrivate, ignore))
71
+ cache?.set(address, result ? new WeakRef(result) : null)
72
+ return result
73
+ }
@@ -0,0 +1,29 @@
1
+ import { Address } from '@xylabs/hex'
2
+
3
+ import { ModuleInstance } from '../instance'
4
+ import { ModuleName } from '../ModuleIdentifier'
5
+
6
+ export const resolveLocalNameToAddressUp = async (root: ModuleInstance, localName: ModuleName): Promise<Address | undefined> => {
7
+ const parents = (await root.parents?.()) ?? []
8
+ return parents.find((parent) => parent.localName === localName)?.address
9
+ }
10
+
11
+ //since this is a localName, it only checks the children of the root module
12
+ export const resolveLocalNameToAddressDown = async (
13
+ root: ModuleInstance,
14
+ localName: ModuleName,
15
+ includePrivate = false,
16
+ ): Promise<Address | undefined> => {
17
+ const privateChildren = (includePrivate ? await root.privateChildren?.() : []) ?? []
18
+ const publicChildren = (await root.publicChildren?.()) ?? []
19
+ const children = [...privateChildren, ...publicChildren]
20
+ return children.find((child) => child.localName === localName)?.address
21
+ }
22
+
23
+ export const resolveLocalNameToAddress = async (
24
+ root: ModuleInstance,
25
+ localName: ModuleName,
26
+ includePrivate = false,
27
+ ): Promise<Address | undefined> => {
28
+ return (await resolveLocalNameToAddressDown(root, localName, includePrivate)) ?? (await resolveLocalNameToAddressUp(root, localName))
29
+ }
@@ -0,0 +1,36 @@
1
+ import { assertEx } from '@xylabs/assert'
2
+ import { Address, asAddress } from '@xylabs/hex'
3
+
4
+ import { ModuleInstance } from '../instance'
5
+ import { MODULE_PATH_SEPARATOR } from '../ModuleIdentifier'
6
+ import { ModuleIdentifierTransformer } from '../ModuleIdentifierTransformer'
7
+ import { resolveAddressToInstance } from './resolveAddressToInstance'
8
+ import { resolveLocalNameToAddress } from './resolveLocalNameToAddress'
9
+ import { transformModuleIdentifier } from './transformModuleIdentifier'
10
+
11
+ export const resolvePathToAddress = async (
12
+ root: ModuleInstance,
13
+ path: string,
14
+ includePrivate = false,
15
+ transformers: ModuleIdentifierTransformer[] = [],
16
+ ): Promise<Address | undefined> => {
17
+ const parts = path.split(MODULE_PATH_SEPARATOR)
18
+ const first = await transformModuleIdentifier(
19
+ assertEx(parts.shift(), () => `First part is invalid [${path}]`),
20
+ transformers,
21
+ )
22
+
23
+ if (!first) {
24
+ return undefined
25
+ }
26
+
27
+ const firstAddress = asAddress(first) ?? (await resolveLocalNameToAddress(root, first, includePrivate))
28
+
29
+ if (firstAddress) {
30
+ const firstModule = await resolveAddressToInstance(root, firstAddress, includePrivate)
31
+ if (firstModule && parts.length > 0) {
32
+ return resolvePathToAddress(firstModule, parts.join(MODULE_PATH_SEPARATOR))
33
+ }
34
+ return firstAddress
35
+ }
36
+ }
@@ -0,0 +1,18 @@
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
+ export const traceModuleIdentifier = async (resolver: ModuleResolver, path: ModuleIdentifier): Promise<Address[]> => {
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 ? [firstModule.address, ...(await traceModuleIdentifier(firstModule, parts.join(':')))] : [firstModule.address]
16
+ }
17
+ return []
18
+ }
@@ -0,0 +1,13 @@
1
+ import { ModuleIdentifier } from '../ModuleIdentifier'
2
+ import { ModuleIdentifierTransformer } from '../ModuleIdentifierTransformer'
3
+
4
+ export const transformModuleIdentifier = async (
5
+ id: ModuleIdentifier,
6
+ transformers: ModuleIdentifierTransformer[],
7
+ ): Promise<ModuleIdentifier | undefined> => {
8
+ let result: ModuleIdentifier | undefined = id
9
+ for (const transformer of transformers) {
10
+ result = await transformer.transform(id)
11
+ }
12
+ return result
13
+ }
@@ -1,9 +1,12 @@
1
+ import { Address } from '@xylabs/hex'
1
2
  import { IsObjectFactory, toJsonString, TypeCheck } from '@xylabs/object'
3
+ import { Promisable } from '@xylabs/promise'
2
4
 
3
5
  import { ModuleEventData } from '../EventsModels'
4
6
  import { Module, ModuleQueryFunctions } from '../module'
5
- import { ModuleIdentifier } from '../ModuleIdentifier'
7
+ import { ModuleIdentifier, ModuleName } from '../ModuleIdentifier'
6
8
  import { ModuleParams } from '../ModuleParams'
9
+ import { Direction } from './ObjectFilter'
7
10
  import { ObjectResolver } from './ObjectResolver'
8
11
 
9
12
  export type ModulePipeLine = Lowercase<'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many'>
@@ -23,10 +26,25 @@ export class DeadModuleError extends Error {
23
26
  }
24
27
  }
25
28
 
29
+ export interface AddressToWeakInstanceCache {
30
+ get: (address: Address) => WeakRef<ModuleInstance> | null
31
+ set: (address: Address, instance: WeakRef<ModuleInstance> | null) => void
32
+ }
33
+
34
+ export interface ModuleFamilyFunctions {
35
+ addressCache?: (direction: Direction, includePrivate: boolean) => AddressToWeakInstanceCache | undefined
36
+ localName?: ModuleName
37
+ parents?: () => Promisable<ModuleInstance[]>
38
+ privateChildren?: () => Promisable<ModuleInstance[]>
39
+ publicChildren?: () => Promisable<ModuleInstance[]>
40
+ siblings?: () => Promisable<ModuleInstance[]>
41
+ }
42
+
26
43
  export interface ModuleInstance<TParams extends ModuleParams = ModuleParams, TEventData extends ModuleEventData = ModuleEventData>
27
44
  extends Module<TParams, TEventData>,
28
45
  ObjectResolver<ModuleInstance>,
29
- ModuleQueryFunctions {
46
+ ModuleQueryFunctions,
47
+ ModuleFamilyFunctions {
30
48
  readonly pipeline?: ModulePipeLine
31
49
 
32
50
  //if the module has become non-functional, such as a broken bridge connection, this will be 'dead'
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAChD,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AA0C3E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,CAAK;WAC1C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAqFZ,uBAAuB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5E,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAeZ,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAa3F,yBAAyB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,GAAE,2BAA2B,EAA+B,GACvE,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAChD,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AA0C3E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,CAAK;WAC1C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAqFZ,uBAAuB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5E,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAeZ,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAa3F,yBAAyB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,GAAE,2BAA2B,EAA+B,GACvE,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAChD,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AA0C3E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,CAAK;WAC1C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAqFZ,uBAAuB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5E,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAeZ,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAa3F,yBAAyB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,GAAE,2BAA2B,EAA+B,GACvE,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAChD,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AA0C3E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,CAAK;WAC1C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAqFZ,uBAAuB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5E,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAeZ,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAa3F,yBAAyB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,GAAE,2BAA2B,EAA+B,GACvE,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAChD,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AA0C3E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,CAAK;WAC1C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAqFZ,uBAAuB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5E,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAeZ,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAa3F,yBAAyB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,GAAE,2BAA2B,EAA+B,GACvE,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResolveHelper.d.ts","sourceRoot":"","sources":["../../src/ResolveHelper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAChD,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGjD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AA0C3E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,cAAc,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,CAAC,EAAE,cAAc,CAAA;IAChC,YAAY,EAAE,2BAA2B,EAAE,CAAA;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC7B,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,CAAK;WAC1C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,EAAE,CAAC;WACF,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5D,MAAM,EAAE,mBAAmB,EAC3B,EAAE,EAAE,gBAAgB,EACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAqFZ,uBAAuB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAC5E,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAeZ,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;WAa3F,yBAAyB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,GAAE,2BAA2B,EAA+B,GACvE,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,MAAM,CAAC,uBAAuB,CAC5B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,GAAG,SAAS,EACrD,UAAU,EAAE,gBAAgB,GAAG,YAAY,EAC3C,MAAM,qBAAqB;CAmB9B"}