@xyo-network/sdk 7.4.2 → 8.0.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 (131) hide show
  1. package/dist/neutral/api-location-diviner.mjs +1 -1
  2. package/dist/neutral/api-location-diviner.mjs.map +2 -2
  3. package/dist/neutral/archivist-abstract.mjs +30 -25
  4. package/dist/neutral/archivist-abstract.mjs.map +2 -2
  5. package/dist/neutral/archivist-generic.mjs +4 -2
  6. package/dist/neutral/archivist-generic.mjs.map +2 -2
  7. package/dist/neutral/archivist-memory.mjs +5 -4
  8. package/dist/neutral/archivist-memory.mjs.map +2 -2
  9. package/dist/neutral/archivist-model.mjs +10 -5
  10. package/dist/neutral/archivist-model.mjs.map +2 -2
  11. package/dist/neutral/archivist-view.mjs +5 -3
  12. package/dist/neutral/archivist-view.mjs.map +2 -2
  13. package/dist/neutral/boundwitness-loader.mjs +11 -6
  14. package/dist/neutral/boundwitness-loader.mjs.map +2 -2
  15. package/dist/neutral/bridge-abstract.mjs +39 -26
  16. package/dist/neutral/bridge-abstract.mjs.map +2 -2
  17. package/dist/neutral/bridge-http.mjs +19 -15
  18. package/dist/neutral/bridge-http.mjs.map +2 -2
  19. package/dist/neutral/bridge-wrapper.mjs +4 -2
  20. package/dist/neutral/bridge-wrapper.mjs.map +2 -2
  21. package/dist/neutral/diviner-abstract.mjs +2 -2
  22. package/dist/neutral/diviner-abstract.mjs.map +2 -2
  23. package/dist/neutral/diviner-boundwitness.memory.mjs +4 -5
  24. package/dist/neutral/diviner-boundwitness.memory.mjs.map +2 -2
  25. package/dist/neutral/diviner-boundwitness.mjs +4 -5
  26. package/dist/neutral/diviner-boundwitness.mjs.map +2 -2
  27. package/dist/neutral/diviner-payload-generic.mjs +13 -15
  28. package/dist/neutral/diviner-payload-generic.mjs.map +2 -2
  29. package/dist/neutral/manifest-wrapper.mjs +4 -2
  30. package/dist/neutral/manifest-wrapper.mjs.map +2 -2
  31. package/dist/neutral/module-abstract.mjs +43 -46
  32. package/dist/neutral/module-abstract.mjs.map +3 -3
  33. package/dist/neutral/module-model.mjs +18 -1
  34. package/dist/neutral/module-model.mjs.map +2 -2
  35. package/dist/neutral/module-resolver.mjs +59 -51
  36. package/dist/neutral/module-resolver.mjs.map +3 -3
  37. package/dist/neutral/module-wrapper.mjs +11 -6
  38. package/dist/neutral/module-wrapper.mjs.map +2 -2
  39. package/dist/neutral/modules/archivist-abstract/AbstractArchivist.d.ts.map +1 -1
  40. package/dist/neutral/modules/archivist-generic/Archivist.d.ts.map +1 -1
  41. package/dist/neutral/modules/archivist-memory/MemoryDriver.d.ts.map +1 -1
  42. package/dist/neutral/modules/archivist-model/lib/getBoundWitness.d.ts.map +1 -1
  43. package/dist/neutral/modules/archivist-model/lib/hydrateBoundWitness.d.ts.map +1 -1
  44. package/dist/neutral/modules/archivist-view/ViewArchivist.d.ts.map +1 -1
  45. package/dist/neutral/modules/boundwitness-loader/Loader.d.ts.map +1 -1
  46. package/dist/neutral/modules/bridge-abstract/AbstractBridge.d.ts.map +1 -1
  47. package/dist/neutral/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -1
  48. package/dist/neutral/modules/bridge-http/HttpBridge.d.ts.map +1 -1
  49. package/dist/neutral/modules/bridge-http/ModuleProxy/ModuleProxy.d.ts.map +1 -1
  50. package/dist/neutral/modules/bridge-wrapper/BridgeWrapper.d.ts.map +1 -1
  51. package/dist/neutral/modules/diviner-boundwitness/MemoryBoundWitnessDiviner.d.ts.map +1 -1
  52. package/dist/neutral/modules/diviner-payload-generic/Diviner.d.ts.map +1 -1
  53. package/dist/neutral/modules/manifest-wrapper/Wrapper.d.ts.map +1 -1
  54. package/dist/neutral/modules/manifest-wrapper/WrapperEx.d.ts.map +1 -1
  55. package/dist/neutral/modules/module-abstract/AbstractModule.d.ts +0 -1
  56. package/dist/neutral/modules/module-abstract/AbstractModule.d.ts.map +1 -1
  57. package/dist/neutral/modules/module-abstract/AbstractModuleInstance.d.ts.map +1 -1
  58. package/dist/neutral/modules/module-abstract/QueryValidator/ModuleConfigQueryValidator.d.ts.map +1 -1
  59. package/dist/neutral/modules/module-model/QueryableModule/IsQueryableModuleFactory.d.ts.map +1 -1
  60. package/dist/neutral/modules/module-resolver/CompositeModuleResolver.d.ts.map +1 -1
  61. package/dist/neutral/modules/module-resolver/ResolveHelper/ResolveHelper.d.ts.map +1 -1
  62. package/dist/neutral/modules/module-resolver/ResolveHelper/resolveAll.d.ts.map +1 -1
  63. package/dist/neutral/modules/module-resolver/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -1
  64. package/dist/neutral/modules/module-resolver/ResolveHelper/resolvePathToAddress.d.ts.map +1 -1
  65. package/dist/neutral/modules/module-resolver/SimpleModuleResolver.d.ts.map +1 -1
  66. package/dist/neutral/modules/module-wrapper/ModuleWrapper.d.ts.map +1 -1
  67. package/dist/neutral/modules/node-abstract/AbstractNode.d.ts.map +1 -1
  68. package/dist/neutral/modules/node-memory/MemoryNode.d.ts.map +1 -1
  69. package/dist/neutral/modules/node-memory/NodeHelper/flatAttachToExistingNode.d.ts.map +1 -1
  70. package/dist/neutral/modules/node-view/ViewNode.d.ts.map +1 -1
  71. package/dist/neutral/modules/node-wrapper/NodeWrapper.d.ts.map +1 -1
  72. package/dist/neutral/modules/payloadset-plugin/Resolver.d.ts.map +1 -1
  73. package/dist/neutral/modules/sentinel-abstract/AbstractSentinel.d.ts.map +1 -1
  74. package/dist/neutral/modules/sentinel-memory/MemorySentinel.d.ts.map +1 -1
  75. package/dist/neutral/modules/sentinel-memory/SentinelRunner.d.ts.map +1 -1
  76. package/dist/neutral/modules/witness-abstract/AbstractWitness.d.ts.map +1 -1
  77. package/dist/neutral/node-abstract.mjs +8 -4
  78. package/dist/neutral/node-abstract.mjs.map +2 -2
  79. package/dist/neutral/node-memory.mjs +6 -4
  80. package/dist/neutral/node-memory.mjs.map +2 -2
  81. package/dist/neutral/node-view.mjs +2 -1
  82. package/dist/neutral/node-view.mjs.map +2 -2
  83. package/dist/neutral/node-wrapper.mjs +16 -7
  84. package/dist/neutral/node-wrapper.mjs.map +2 -2
  85. package/dist/neutral/payloadset-plugin.mjs +11 -10
  86. package/dist/neutral/payloadset-plugin.mjs.map +2 -2
  87. package/dist/neutral/sentinel-abstract.mjs +4 -3
  88. package/dist/neutral/sentinel-abstract.mjs.map +2 -2
  89. package/dist/neutral/sentinel-memory.mjs +12 -7
  90. package/dist/neutral/sentinel-memory.mjs.map +2 -2
  91. package/dist/neutral/witness-abstract.mjs +4 -3
  92. package/dist/neutral/witness-abstract.mjs.map +2 -2
  93. package/dist/node/modules/archivist-abstract/AbstractArchivist.d.ts.map +1 -1
  94. package/dist/node/modules/archivist-generic/Archivist.d.ts.map +1 -1
  95. package/dist/node/modules/archivist-memory/MemoryDriver.d.ts.map +1 -1
  96. package/dist/node/modules/archivist-model/lib/getBoundWitness.d.ts.map +1 -1
  97. package/dist/node/modules/archivist-model/lib/hydrateBoundWitness.d.ts.map +1 -1
  98. package/dist/node/modules/archivist-view/ViewArchivist.d.ts.map +1 -1
  99. package/dist/node/modules/boundwitness-loader/Loader.d.ts.map +1 -1
  100. package/dist/node/modules/bridge-abstract/AbstractBridge.d.ts.map +1 -1
  101. package/dist/node/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.d.ts.map +1 -1
  102. package/dist/node/modules/bridge-http/HttpBridge.d.ts.map +1 -1
  103. package/dist/node/modules/bridge-http/ModuleProxy/ModuleProxy.d.ts.map +1 -1
  104. package/dist/node/modules/bridge-wrapper/BridgeWrapper.d.ts.map +1 -1
  105. package/dist/node/modules/diviner-boundwitness/MemoryBoundWitnessDiviner.d.ts.map +1 -1
  106. package/dist/node/modules/diviner-payload-generic/Diviner.d.ts.map +1 -1
  107. package/dist/node/modules/manifest-wrapper/Wrapper.d.ts.map +1 -1
  108. package/dist/node/modules/manifest-wrapper/WrapperEx.d.ts.map +1 -1
  109. package/dist/node/modules/module-abstract/AbstractModule.d.ts +0 -1
  110. package/dist/node/modules/module-abstract/AbstractModule.d.ts.map +1 -1
  111. package/dist/node/modules/module-abstract/AbstractModuleInstance.d.ts.map +1 -1
  112. package/dist/node/modules/module-abstract/QueryValidator/ModuleConfigQueryValidator.d.ts.map +1 -1
  113. package/dist/node/modules/module-model/QueryableModule/IsQueryableModuleFactory.d.ts.map +1 -1
  114. package/dist/node/modules/module-resolver/CompositeModuleResolver.d.ts.map +1 -1
  115. package/dist/node/modules/module-resolver/ResolveHelper/ResolveHelper.d.ts.map +1 -1
  116. package/dist/node/modules/module-resolver/ResolveHelper/resolveAll.d.ts.map +1 -1
  117. package/dist/node/modules/module-resolver/ResolveHelper/resolveLocalNameToAddress.d.ts.map +1 -1
  118. package/dist/node/modules/module-resolver/ResolveHelper/resolvePathToAddress.d.ts.map +1 -1
  119. package/dist/node/modules/module-resolver/SimpleModuleResolver.d.ts.map +1 -1
  120. package/dist/node/modules/module-wrapper/ModuleWrapper.d.ts.map +1 -1
  121. package/dist/node/modules/node-abstract/AbstractNode.d.ts.map +1 -1
  122. package/dist/node/modules/node-memory/MemoryNode.d.ts.map +1 -1
  123. package/dist/node/modules/node-memory/NodeHelper/flatAttachToExistingNode.d.ts.map +1 -1
  124. package/dist/node/modules/node-view/ViewNode.d.ts.map +1 -1
  125. package/dist/node/modules/node-wrapper/NodeWrapper.d.ts.map +1 -1
  126. package/dist/node/modules/payloadset-plugin/Resolver.d.ts.map +1 -1
  127. package/dist/node/modules/sentinel-abstract/AbstractSentinel.d.ts.map +1 -1
  128. package/dist/node/modules/sentinel-memory/MemorySentinel.d.ts.map +1 -1
  129. package/dist/node/modules/sentinel-memory/SentinelRunner.d.ts.map +1 -1
  130. package/dist/node/modules/witness-abstract/AbstractWitness.d.ts.map +1 -1
  131. package/package.json +11 -11
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/bridge-abstract/AbstractBridge.ts", "../../src/modules/bridge-abstract/AbstractBridgeModuleResolver.ts", "../../src/modules/bridge-abstract/AbstractModuleProxy/AbstractModuleProxy.ts", "../../src/modules/bridge-abstract/AbstractModuleProxy/ModuleProxyResolver.ts", "../../src/modules/bridge-abstract/wrapModuleWithType.ts"],
4
- "sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx, exists, forget,\n} from '@ariestools/sdk'\nimport type {\n Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport { asArchivistInstance } from '#archivist-model'\nimport type {\n AttachableBridgeInstance,\n BridgeExposeOptions,\n BridgeModuleEventData,\n BridgeParams,\n BridgeQueries,\n BridgeUnexposeOptions,\n ModuleFilterPayload,\n} from '#bridge-model'\nimport {\n BridgeConfigSchema,\n BridgeConnectQuerySchema,\n BridgeDisconnectQuerySchema,\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n ModuleFilterPayloadSchema,\n} from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPayload,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleResolverInstance,\n} from '#module-model'\nimport { AddressSchema } from '#module-model'\nimport {\n resolveAddressToInstance,\n resolvePathToAddress,\n transformModuleIdentifier,\n} from '#module-resolver'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport abstract class AbstractBridge<TParams extends BridgeParams = BridgeParams>\n extends AbstractModuleInstance<TParams, BridgeModuleEventData>\n implements AttachableBridgeInstance<TParams, BridgeModuleEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = BridgeConfigSchema\n\n protected _roots?: ModuleInstance[]\n\n override get allowNameResolution(): boolean {\n // we default to false here to prevent name collisions\n return this.params.allowNameResolution ?? true\n }\n\n get discoverRoots(): false | 'start' | 'lazy' {\n return this.config.client?.discoverRoots ?? (this.config.client === undefined ? false : 'start')\n }\n\n override get queries(): Schema[] {\n return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries]\n }\n\n get resolver(): Promisable<ModuleResolverInstance> {\n return assertEx(this.params.resolver, () => 'No resolver provided')\n }\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions): Promise<ModuleInstance[]> {\n this._noOverride('expose')\n assertEx(id !== '*', () => \"Exposing '*' not supported\")\n const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`)\n console.log(`expose: ${addressToExpose}`)\n const modules = await this.exposeHandler(addressToExpose, options)\n await this.emit('exposed', { mod: this, modules })\n return modules\n }\n\n async exposed(): Promise<XyoAddress[]> {\n this._noOverride('exposed')\n return await this.exposedHandler()\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const roots = (this._roots ?? []) as T[]\n const workingSet = (options.direction === 'up' ? [this as ModuleInstance] : [...roots, this]) as T[]\n if (id === '*') {\n const remainingDepth = (options.maxDepth ?? 5) - 1\n return remainingDepth <= 0\n ? workingSet\n : (\n // eslint-disable-next-line @typescript-eslint/await-thenable\n [...workingSet, ...(await Promise.all(roots.map(mod => mod.resolve('*', { ...options, maxDepth: remainingDepth })))).flat()]\n )\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = assertEx(parts.shift(), () => 'Missing module identifier')\n const firstId = await transformModuleIdentifier(first, this.moduleIdentifierTransformers)\n const result = workingSet.find((mod) => {\n return firstId === mod.address || firstId === mod.modName\n })\n return parts.length === 0 ? result : result?.resolve(parts.join(':'), options)\n }\n default: {\n return\n }\n }\n }\n\n override async startHandler(): Promise<void> {\n if (this.discoverRoots === 'lazy') {\n forget(this.getRoots())\n } else if (this.discoverRoots === 'start') {\n await this.getRoots()\n }\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions): Promise<XyoAddress[]> {\n this._noOverride('unexpose')\n const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`)\n const modules = await this.unexposeHandler(addressToUnexpose, options)\n await this.emit('unexposed', { mod: this, modules })\n return modules.map(mod => mod.address)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n query: T,\n payloads?: Payload[],\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<BridgeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case BridgeExposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const modules = await this.expose(id, options)\n for (const mod of modules) {\n const addressPayload: AddressPayload = {\n address: mod.address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n case BridgeUnexposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const moduleAddresses = await this.unexpose(id, options)\n for (const address of moduleAddresses) {\n const addressPayload: AddressPayload = {\n address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolvedAddresses = (\n await Promise.all(\n archivists.map(async archivist =>\n (await Promise.all((await this.parents()).map(parent => resolvePathToAddress(parent, archivist)))).filter(exists)),\n )\n )\n .flat()\n .filter(exists)\n const resolved = (await Promise.all(resolvedAddresses.map(address => resolveAddressToInstance(this, address)))).filter(exists)\n return resolved.map(mod => asArchivistInstance(mod)).filter(exists)\n }\n\n abstract exposeHandler(address: XyoAddress, options?: BridgeExposeOptions): Promisable<ModuleInstance[]>\n\n abstract exposedHandler(): Promisable<XyoAddress[]>\n\n abstract getRoots(force?: boolean): Promise<ModuleInstance[]>\n\n abstract unexposeHandler(address: XyoAddress, options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]>\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type {\n BridgeInstance, QuerySendFinishedEventArgs, QuerySendStartedEventArgs,\n} from '#bridge-model'\nimport type {\n ArchivingModuleConfig,\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport type { ModuleResolverParams } from '#module-resolver'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport type { ModuleProxyParams } from './AbstractModuleProxy/index.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface BridgeModuleResolverParams extends ModuleResolverParams {\n additionalSigners?: AccountInstance[]\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n bridge: BridgeInstance\n cacheConfig?: CacheConfig\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n wrapperAccount: AccountInstance\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport abstract class AbstractBridgeModuleResolver<\n TParams extends BridgeModuleResolverParams = BridgeModuleResolverParams,\n TProxyParams extends ModuleProxyParams = ModuleProxyParams,\n> extends CompositeModuleResolver<TParams> {\n override get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n _params?: Partial<TProxyParams>,\n ): Promise<T[]> {\n if (id === '*') {\n return []\n }\n return await super.resolveHandler(id, options)\n }\n}\n", "import {\n asAddress, assertEx,\n exists,\n forget,\n isAddress, toSafeJsonString,\n} from '@ariestools/sdk'\nimport type {\n AccountInstance, ModuleError, ModuleManifestPayload, NodeManifestPayload,\n Payload, QueryBoundWitness, QueryPayload, Schema, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n Account, BoundWitnessWrapper, isPayloadOfSchemaType, isSchema, ModuleErrorSchema, ModuleManifestPayloadSchema, NodeManifestPayloadSchema, PayloadBuilder,\n QueryBoundWitnessWrapper, QuerySchema,\n} from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type { QuerySendFinishedEventArgs, QuerySendStartedEventArgs } from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPreviousHashPayload,\n AnyConfigSchema,\n ArchivingModuleConfig,\n AttachableModuleInstance,\n ModuleAddressQuery,\n ModuleConfig,\n ModuleEventData,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolver,\n QueryableModule,\n QueryableModuleParams,\n} from '#module-model'\nimport {\n AddressPreviousHashSchema,\n DeadModuleError,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n} from '#module-model'\nimport { ModuleWrapper } from '#module-wrapper'\n\nimport { ModuleProxyResolver } from './ModuleProxyResolver.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface ModuleProxyParams extends QueryableModuleParams\n{\n account: AccountInstance\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n host: ModuleResolver\n manifest?: ModuleManifestPayload\n moduleAddress: XyoAddress\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n state?: Payload[]\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport abstract class AbstractModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends ModuleProxyParams = ModuleProxyParams,\n>\n extends AbstractModuleInstance<TParams, TWrappedModule['eventData']>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static readonly requiredQueries: string[] = [ModuleStateQuerySchema]\n\n protected _config?: TWrappedModule['config']\n protected _publicChildren?: ModuleInstance[]\n protected _state: Payload[] | undefined = undefined\n protected _stateInProcess = false\n\n private _spamTrap = new LRUCache<string, number>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n override get address(): (Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress {\n return this.params.moduleAddress\n }\n\n override get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.params?.archiving\n }\n\n override get config(): TWrappedModule['config'] & { schema: Schema } {\n return { ...this._config, schema: (this._config?.schema ?? ModuleConfigSchema) }\n }\n\n override get queries(): Schema[] {\n const queryPayloads = assertEx(this._state, () => 'Module state not found. Make sure proxy has been started').filter(item =>\n isPayloadOfSchemaType<QueryPayload>(QuerySchema)(item))\n return queryPayloads.map(payload => payload.query)\n }\n\n static hasRequiredQueries(mod: QueryableModule): boolean {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static override isAllowedSchema(schema: Schema): boolean {\n return isSchema(schema)\n }\n\n static missingRequiredQueries(mod: QueryableModule): string[] {\n const moduleQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n static override async paramsHandler<T extends AttachableModuleInstance<QueryableModuleParams, ModuleEventData>>(\n inParams?: Partial<T['params']>,\n ): Promise<T['params']> {\n const superParams = await super.paramsHandler(inParams)\n return {\n ...superParams,\n account: (superParams.account === 'random') ? await Account.random() : superParams.account,\n addToResolvers: superParams.addToResolvers ?? true,\n }\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const result: AddressPreviousHashPayload = assertEx(\n (await this.sendQuery(queryPayload, undefined, this.account)).find(\n isPayloadOfSchemaType<AddressPreviousHashPayload>(AddressPreviousHashSchema),\n ),\n () => 'Result did not include correct payload',\n )\n return result\n }\n\n childAddressByName(name: ModuleName): XyoAddress | undefined {\n const nodeManifests = this._state?.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n const childPairs = nodeManifests?.flatMap(nodeManifest => Object.entries(nodeManifest.status?.children ?? {}) as [XyoAddress, ModuleName | null][])\n return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0])\n }\n\n async childAddressMap(): Promise<Record<XyoAddress, ModuleName | null>> {\n let nodeManifests: NodeManifestPayload[] | undefined\n = isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : undefined\n const result: Record<XyoAddress, ModuleName | null> = {}\n if (nodeManifests === undefined) {\n const state = await this.state()\n nodeManifests = state.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n }\n for (const manifest of nodeManifests ?? []) {\n const children = manifest.modules?.public ?? []\n for (const child of children) {\n if (typeof child === 'object') {\n const address = child.status?.address\n if (isAddress(address)) {\n result[address] = child.config.name ?? null\n }\n }\n }\n }\n return result\n }\n\n override async createHandler(): Promise<void> {\n await super.createHandler()\n let manifest: ModuleManifestPayload | NodeManifestPayload | undefined = this.params.manifest\n if (!manifest) {\n const state = await this.state()\n const manifestPayload = state.find(\n payload => isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(payload)\n || isPayloadOfSchemaType<ModuleManifestPayload>(ModuleManifestPayloadSchema)(payload),\n )\n manifest = assertEx(manifestPayload, () => \"Can't find manifest payload\")\n }\n this.setConfig({ ...manifest.config })\n this.downResolver.addResolver(\n new ModuleProxyResolver({\n childAddressMap: await this.childAddressMap(),\n host: this.params.host,\n mod: this,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n }),\n )\n }\n\n override async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n override async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload))\n }\n\n override async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n override async publicChildren(): Promise<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]> {\n this._publicChildren = this._publicChildren ?? (await super.publicChildren())\n return this._publicChildren\n }\n\n override async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n this._checkDead()\n return await this.busy(async () => {\n try {\n await this.checkSpam(query)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n this.params.onQuerySendStarted?.({ payloads, query })\n const result = await this.proxyQueryHandler<T>(query, payloads)\n this.params.onQuerySendFinished?.({\n payloads, query, result, status: 'success',\n })\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n forget(this.emit('moduleQueried', {\n mod: this, payloads, query, result,\n }))\n return result\n } catch (ex) {\n this.params.onQuerySendFinished?.({\n payloads, query, status: 'failure',\n })\n const error = ex as Error\n this._lastError = error\n // this.status = 'dead'\n const deadError = new DeadModuleError(this.address, error)\n const errorPayload: ModuleError = {\n message: deadError.message,\n name: deadError.name,\n schema: ModuleErrorSchema,\n }\n const sourceQuery = assertEx(QueryBoundWitnessWrapper.unwrap(query), () => 'Invalid query')\n return await this.bindQueryResult(sourceQuery, [], undefined, [errorPayload])\n }\n })\n }\n\n override queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<ModuleQueryHandlerResult> {\n throw new Error('queryHandler should never be called')\n }\n\n override async queryable<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<boolean> {\n return true\n }\n\n override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n return (await this.params.archiving?.resolveArchivists()) ?? []\n }\n\n setConfig(config: TWrappedModule['params']['config']): void {\n this._config = config\n }\n\n setState(state: Payload[]): void {\n this._state = state\n }\n\n override async state(): Promise<Payload[]> {\n if (this._state === undefined) {\n // temporarily add ModuleStateQuerySchema to the schema list so we can wrap it and get the real query list\n const stateQueryPayload: QueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema }\n const manifestQueryPayload: QueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema }\n this._state = [stateQueryPayload, manifestQueryPayload]\n const wrapper = ModuleWrapper.wrap(this, await Account.random())\n this._state = await wrapper.state()\n }\n return this._state\n }\n\n protected filterErrors(result: ModuleQueryResult): ModuleError[] {\n const wrapper = BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n protected override async startHandler(): Promise<void> {\n return await super.startHandler()\n }\n\n // this checks and warns if we are getting spammed by the same query\n private async checkSpam(query: QueryBoundWitness) {\n const hash = await PayloadBuilder.hash(query)\n const previousCount = this._spamTrap.get(hash) ?? 0\n if (previousCount > 0) {\n this.logger?.warn(`Spam trap triggered for query: ${hash} from ${toSafeJsonString(query.addresses)}`)\n }\n this._spamTrap.set(hash, previousCount + 1)\n }\n\n abstract proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(_query: T, _payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n", "import type { Promisable } from '@ariestools/sdk'\nimport { assertEx, exists } from '@ariestools/sdk'\nimport type {\n ModuleManifestPayload, XyoAddress, XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport { Account } from '@xyo-network/sdk-protocol'\n\nimport type {\n AnyConfigSchema,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleName,\n ModuleResolver,\n ModuleResolverInstance,\n ObjectFilterOptions,\n QueryableModuleParams,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport { wrapModuleWithType } from '../wrapModuleWithType.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface ModuleProxyResolverOptions {\n childAddressMap: Record<XyoAddress, ModuleName | null>\n childManifests?: Record<XyoAddress, ModuleManifestPayload>\n childStates?: Record<XyoAddress, ModuleManifestPayload>\n host: ModuleResolver\n mod: ModuleInstance\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport class ModuleProxyResolver<T extends ModuleProxyResolverOptions = ModuleProxyResolverOptions> implements ModuleResolverInstance {\n private downResolver: CompositeModuleResolver\n private options: T\n\n constructor(options: T) {\n this.options = options\n this.downResolver = new CompositeModuleResolver({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root })\n }\n\n get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n get root(): ModuleInstance {\n return this.options.mod\n }\n\n protected get childAddressMap(): Record<(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress, string | null> {\n return this.options.childAddressMap\n }\n\n protected get host(): ModuleResolver<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>> {\n return this.options.host\n }\n\n protected get mod(): ModuleInstance {\n return this.options.mod\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n childManifest(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childManifests?.[address]\n }\n\n childState(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childStates?.[address]\n }\n\n removeResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n // eslint-disable-next-line complexity\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n // console.log(`childAddressMap: ${toSafeJsonString(this.childAddressMap, 10)}`)\n if (id === '*') {\n // get all the child addresses. if they have been resolved before, they should be in downResolver\n const childAddresses = Object.keys(this.childAddressMap)\n const resolvedChildren = await Promise.all(childAddresses.map<Promise<T | undefined>>(address => this.resolve<T>(address, options)))\n return resolvedChildren.filter(exists)\n }\n const direction = options?.direction ?? 'all'\n if (typeof id === 'string') {\n const idParts = id.split(':')\n const firstPart: ModuleIdentifier = assertEx(idParts.shift(), () => 'Invalid module identifier at first position')\n const firstPartAddress = await this.resolveIdentifier(firstPart)\n if (firstPartAddress) {\n const remainingParts = idParts.length > 0 ? idParts.join(':') : undefined\n if (direction === 'down' || direction === 'all') {\n const downResolverModule = await this.downResolver.resolve<T>(firstPartAddress)\n if (downResolverModule) {\n return remainingParts ? downResolverModule.resolve(remainingParts, options) : downResolverModule\n }\n\n console.log(`ModuleProxyResolver: ${firstPartAddress} | ${this.root.address}`)\n if (firstPartAddress === this.root.address) {\n const wrapped = wrapModuleWithType(this.root, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n\n // if it is a known child, create a proxy\n const addressToProxy\n = Object.keys(this.childAddressMap).includes(firstPartAddress)\n ? (firstPartAddress)\n : (Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0] as XyoAddress | undefined)\n if (addressToProxy) {\n const proxy = await this.host.resolve(addressToProxy, { ...options, direction: 'down' })\n if (proxy) {\n const wrapped = wrapModuleWithType(proxy, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n return\n }\n }\n }\n return\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<XyoAddress | undefined> {\n // check if any of the modules have the id as an address\n if (Object.hasOwn(this.childAddressMap, id)) {\n return id as XyoAddress\n }\n\n if (this.root.address === id) {\n return this.root.address\n }\n\n if (this.root.modName === id) {\n return this.root.address\n }\n\n // check if id is a name of one of modules in the resolver\n const addressFromName = Object.entries(this.childAddressMap).find(([, name]) => name === id)?.[0] as XyoAddress | undefined\n if (addressFromName) {\n return addressFromName\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ObjectFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ObjectFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return []\n }\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport { isArchivistModule } from '#archivist-model'\nimport { ArchivistWrapper } from '#archivist-wrapper'\nimport { isDivinerModule } from '#diviner-model'\nimport { DivinerWrapper } from '#diviner-wrapper'\nimport type { QueryableModule } from '#module-model'\nimport type { ModuleWrapper } from '#module-wrapper'\nimport { isNodeModule } from '#node-model'\nimport { NodeWrapper } from '#node-wrapper'\nimport { isSentinelModule } from '#sentinel-model'\nimport { SentinelWrapper } from '#sentinel-wrapper'\nimport { isWitnessModule } from '#witness-model'\nimport { WitnessWrapper } from '#witness-wrapper'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const wrapModuleWithType = (mod: QueryableModule, account: AccountInstance): ModuleWrapper => {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, account)\n }\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, account)\n }\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, account)\n }\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, account)\n }\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, account)\n }\n throw new Error('Failed to wrap')\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx, exists, forget,\n} from '@ariestools/sdk'\nimport type {\n Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, QueryBoundWitnessWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport { asArchivistInstance } from '#archivist-model'\nimport type {\n AttachableBridgeInstance,\n BridgeExposeOptions,\n BridgeModuleEventData,\n BridgeParams,\n BridgeQueries,\n BridgeUnexposeOptions,\n ModuleFilterPayload,\n} from '#bridge-model'\nimport {\n BridgeConfigSchema,\n BridgeConnectQuerySchema,\n BridgeDisconnectQuerySchema,\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n ModuleFilterPayloadSchema,\n} from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPayload,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleResolverInstance,\n} from '#module-model'\nimport { AddressSchema } from '#module-model'\nimport {\n resolveAddressToInstance,\n resolvePathToAddress,\n transformModuleIdentifier,\n} from '#module-resolver'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport abstract class AbstractBridge<TParams extends BridgeParams = BridgeParams>\n extends AbstractModuleInstance<TParams, BridgeModuleEventData>\n implements AttachableBridgeInstance<TParams, BridgeModuleEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = BridgeConfigSchema\n\n protected _roots?: ModuleInstance[]\n\n override get allowNameResolution(): boolean {\n // we default to false here to prevent name collisions\n return this.params.allowNameResolution ?? true\n }\n\n get discoverRoots(): false | 'start' | 'lazy' {\n return this.config.client?.discoverRoots ?? (this.config.client === undefined ? false : 'start')\n }\n\n override get queries(): Schema[] {\n return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries]\n }\n\n get resolver(): Promisable<ModuleResolverInstance> {\n return assertEx(this.params.resolver, () => 'No resolver provided')\n }\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions): Promise<ModuleInstance[]> {\n this._noOverride('expose')\n assertEx(id !== '*', () => \"Exposing '*' not supported\")\n const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`)\n console.log(`expose: ${addressToExpose}`)\n const modules = await this.exposeHandler(addressToExpose, options)\n await this.emit('exposed', { mod: this, modules })\n return modules\n }\n\n async exposed(): Promise<XyoAddress[]> {\n this._noOverride('exposed')\n return await this.exposedHandler()\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const roots = (this._roots ?? []) as T[]\n const workingSet = (options.direction === 'up' ? [this as ModuleInstance] : [...roots, this]) as T[]\n if (id === '*') {\n const remainingDepth = (options.maxDepth ?? 5) - 1\n if (remainingDepth <= 0) return workingSet\n // eslint-disable-next-line @typescript-eslint/await-thenable\n const nested = await Promise.all(roots.map(mod => mod.resolve('*', { ...options, maxDepth: remainingDepth })))\n return [...workingSet, ...nested.flat()]\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = assertEx(parts.shift(), () => 'Missing module identifier')\n const firstId = await transformModuleIdentifier(first, this.moduleIdentifierTransformers)\n const result = workingSet.find((mod) => {\n return firstId === mod.address || firstId === mod.modName\n })\n return parts.length === 0 ? result : result?.resolve(parts.join(':'), options)\n }\n default: {\n return\n }\n }\n }\n\n override async startHandler(): Promise<void> {\n if (this.discoverRoots === 'lazy') {\n forget(this.getRoots())\n } else if (this.discoverRoots === 'start') {\n await this.getRoots()\n }\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions): Promise<XyoAddress[]> {\n this._noOverride('unexpose')\n const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`)\n const modules = await this.unexposeHandler(addressToUnexpose, options)\n await this.emit('unexposed', { mod: this, modules })\n return modules.map(mod => mod.address)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n query: T,\n payloads?: Payload[],\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = QueryBoundWitnessWrapper.parseQuery<BridgeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case BridgeExposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const modules = await this.expose(id, options)\n for (const mod of modules) {\n const addressPayload: AddressPayload = {\n address: mod.address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n case BridgeUnexposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const moduleAddresses = await this.unexpose(id, options)\n for (const address of moduleAddresses) {\n const addressPayload: AddressPayload = {\n address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolvedAddressesNested = await Promise.all(\n archivists.map(async (archivist) => {\n const parents = await this.parents()\n const addresses = await Promise.all(parents.map(parent => resolvePathToAddress(parent, archivist)))\n return addresses.filter(exists)\n }),\n )\n const resolvedAddresses = resolvedAddressesNested\n .flat()\n .filter(exists)\n const resolvedInstances = await Promise.all(resolvedAddresses.map(address => resolveAddressToInstance(this, address)))\n const resolved = resolvedInstances.filter(exists)\n return resolved.map(mod => asArchivistInstance(mod)).filter(exists)\n }\n\n abstract exposeHandler(address: XyoAddress, options?: BridgeExposeOptions): Promisable<ModuleInstance[]>\n\n abstract exposedHandler(): Promisable<XyoAddress[]>\n\n abstract getRoots(force?: boolean): Promise<ModuleInstance[]>\n\n abstract unexposeHandler(address: XyoAddress, options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]>\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type {\n BridgeInstance, QuerySendFinishedEventArgs, QuerySendStartedEventArgs,\n} from '#bridge-model'\nimport type {\n ArchivingModuleConfig,\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport type { ModuleResolverParams } from '#module-resolver'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport type { ModuleProxyParams } from './AbstractModuleProxy/index.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface BridgeModuleResolverParams extends ModuleResolverParams {\n additionalSigners?: AccountInstance[]\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n bridge: BridgeInstance\n cacheConfig?: CacheConfig\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n wrapperAccount: AccountInstance\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport abstract class AbstractBridgeModuleResolver<\n TParams extends BridgeModuleResolverParams = BridgeModuleResolverParams,\n TProxyParams extends ModuleProxyParams = ModuleProxyParams,\n> extends CompositeModuleResolver<TParams> {\n override get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n _params?: Partial<TProxyParams>,\n ): Promise<T[]> {\n if (id === '*') {\n return []\n }\n return await super.resolveHandler(id, options)\n }\n}\n", "import {\n asAddress, assertEx,\n exists,\n forget,\n isAddress, toSafeJsonString,\n} from '@ariestools/sdk'\nimport type {\n AccountInstance, ModuleError, ModuleManifestPayload, NodeManifestPayload,\n Payload, QueryBoundWitness, QueryPayload, Schema, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport {\n Account, BoundWitnessWrapper, isPayloadOfSchemaType, isSchema, ModuleErrorSchema, ModuleManifestPayloadSchema, NodeManifestPayloadSchema, PayloadBuilder,\n QueryBoundWitnessWrapper, QuerySchema,\n} from '@xyo-network/sdk-protocol'\nimport { LRUCache } from 'lru-cache'\n\nimport type { ArchivistInstance } from '#archivist-model'\nimport type { QuerySendFinishedEventArgs, QuerySendStartedEventArgs } from '#bridge-model'\nimport { AbstractModuleInstance } from '#module-abstract'\nimport type {\n AddressPreviousHashPayload,\n AnyConfigSchema,\n ArchivingModuleConfig,\n AttachableModuleInstance,\n ModuleAddressQuery,\n ModuleConfig,\n ModuleEventData,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolver,\n QueryableModule,\n QueryableModuleParams,\n} from '#module-model'\nimport {\n AddressPreviousHashSchema,\n DeadModuleError,\n ModuleAddressQuerySchema,\n ModuleConfigSchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n} from '#module-model'\nimport { ModuleWrapper } from '#module-wrapper'\n\nimport { ModuleProxyResolver } from './ModuleProxyResolver.ts'\n\nconst collectChildAddresses = (manifest: NodeManifestPayload, result: Record<XyoAddress, ModuleName | null>): void => {\n const children = manifest.modules?.public ?? []\n for (const child of children) {\n if (typeof child !== 'object') {\n continue\n }\n const address = child.status?.address\n if (isAddress(address)) {\n result[address] = child.config.name ?? null\n }\n }\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface ModuleProxyParams extends QueryableModuleParams\n{\n account: AccountInstance\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n host: ModuleResolver\n manifest?: ModuleManifestPayload\n moduleAddress: XyoAddress\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n state?: Payload[]\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport abstract class AbstractModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends ModuleProxyParams = ModuleProxyParams,\n>\n extends AbstractModuleInstance<TParams, TWrappedModule['eventData']>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static readonly requiredQueries: string[] = [ModuleStateQuerySchema]\n\n protected _config?: TWrappedModule['config']\n protected _publicChildren?: ModuleInstance[]\n protected _state: Payload[] | undefined = undefined\n protected _stateInProcess = false\n\n private _spamTrap = new LRUCache<string, number>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n override get address(): (Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress {\n return this.params.moduleAddress\n }\n\n override get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.params?.archiving\n }\n\n override get config(): TWrappedModule['config'] & { schema: Schema } {\n return { ...this._config, schema: (this._config?.schema ?? ModuleConfigSchema) }\n }\n\n override get queries(): Schema[] {\n const queryPayloads = assertEx(this._state, () => 'Module state not found. Make sure proxy has been started').filter(item =>\n isPayloadOfSchemaType<QueryPayload>(QuerySchema)(item))\n return queryPayloads.map(payload => payload.query)\n }\n\n static hasRequiredQueries(mod: QueryableModule): boolean {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static override isAllowedSchema(schema: Schema): boolean {\n return isSchema(schema)\n }\n\n static missingRequiredQueries(mod: QueryableModule): string[] {\n const moduleQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n static override async paramsHandler<T extends AttachableModuleInstance<QueryableModuleParams, ModuleEventData>>(\n inParams?: Partial<T['params']>,\n ): Promise<T['params']> {\n const superParams = await super.paramsHandler(inParams)\n return {\n ...superParams,\n account: (superParams.account === 'random') ? await Account.random() : superParams.account,\n addToResolvers: superParams.addToResolvers ?? true,\n }\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const queryResult = await this.sendQuery(queryPayload, undefined, this.account)\n const result: AddressPreviousHashPayload = assertEx(\n queryResult.find(\n isPayloadOfSchemaType<AddressPreviousHashPayload>(AddressPreviousHashSchema),\n ),\n () => 'Result did not include correct payload',\n )\n return result\n }\n\n childAddressByName(name: ModuleName): XyoAddress | undefined {\n const nodeManifests = this._state?.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n const childPairs = nodeManifests?.flatMap(nodeManifest => Object.entries(nodeManifest.status?.children ?? {}) as [XyoAddress, ModuleName | null][])\n return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0])\n }\n\n async childAddressMap(): Promise<Record<XyoAddress, ModuleName | null>> {\n let nodeManifests: NodeManifestPayload[] | undefined\n = isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : undefined\n const result: Record<XyoAddress, ModuleName | null> = {}\n if (nodeManifests === undefined) {\n const state = await this.state()\n nodeManifests = state.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n }\n const manifests = nodeManifests ?? []\n for (const manifest of manifests) {\n collectChildAddresses(manifest, result)\n }\n return result\n }\n\n override async createHandler(): Promise<void> {\n await super.createHandler()\n let manifest: ModuleManifestPayload | NodeManifestPayload | undefined = this.params.manifest\n if (!manifest) {\n const state = await this.state()\n const manifestPayload = state.find(\n payload => isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(payload)\n || isPayloadOfSchemaType<ModuleManifestPayload>(ModuleManifestPayloadSchema)(payload),\n )\n manifest = assertEx(manifestPayload, () => \"Can't find manifest payload\")\n }\n this.setConfig({ ...manifest.config })\n this.downResolver.addResolver(\n new ModuleProxyResolver({\n childAddressMap: await this.childAddressMap(),\n host: this.params.host,\n mod: this,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n }),\n )\n }\n\n override async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth !== undefined && { maxDepth }) }\n const queryResult = await this.sendQuery(queryPayload)\n return queryResult[0] as ModuleManifestPayload\n }\n\n override async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload))\n }\n\n override async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const queryResult = await this.sendQuery(queryPayload)\n return (queryResult.pop() as AddressPreviousHashPayload).previousHash\n }\n\n override async publicChildren(): Promise<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>[]> {\n this._publicChildren ??= (await super.publicChildren())\n return this._publicChildren\n }\n\n override async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n this._checkDead()\n return await this.busy(async () => {\n try {\n await this.checkSpam(query)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n this.params.onQuerySendStarted?.({ payloads, query })\n const result = await this.proxyQueryHandler<T>(query, payloads)\n this.params.onQuerySendFinished?.({\n payloads, query, result, status: 'success',\n })\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n forget(this.emit('moduleQueried', {\n mod: this, payloads, query, result,\n }))\n return result\n } catch (ex) {\n this.params.onQuerySendFinished?.({\n payloads, query, status: 'failure',\n })\n const error = ex as Error\n this._lastError = error\n // this.status = 'dead'\n const deadError = new DeadModuleError(this.address, error)\n const errorPayload: ModuleError = {\n message: deadError.message,\n name: deadError.name,\n schema: ModuleErrorSchema,\n }\n const sourceQuery = assertEx(QueryBoundWitnessWrapper.unwrap(query), () => 'Invalid query')\n return await this.bindQueryResult(sourceQuery, [], undefined, [errorPayload])\n }\n })\n }\n\n override queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<ModuleQueryHandlerResult> {\n throw new Error('queryHandler should never be called')\n }\n\n override async queryable<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<boolean> {\n return true\n }\n\n override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n return (await this.params.archiving?.resolveArchivists()) ?? []\n }\n\n setConfig(config: TWrappedModule['params']['config']): void {\n this._config = config\n }\n\n setState(state: Payload[]): void {\n this._state = state\n }\n\n override async state(): Promise<Payload[]> {\n if (this._state === undefined) {\n // temporarily add ModuleStateQuerySchema to the schema list so we can wrap it and get the real query list\n const stateQueryPayload: QueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema }\n const manifestQueryPayload: QueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema }\n this._state = [stateQueryPayload, manifestQueryPayload]\n const wrapper = ModuleWrapper.wrap(this, await Account.random())\n this._state = await wrapper.state()\n }\n return this._state\n }\n\n protected filterErrors(result: ModuleQueryResult): ModuleError[] {\n const wrapper = BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n protected override async startHandler(): Promise<void> {\n return await super.startHandler()\n }\n\n // this checks and warns if we are getting spammed by the same query\n private async checkSpam(query: QueryBoundWitness) {\n const hash = await PayloadBuilder.hash(query)\n const previousCount = this._spamTrap.get(hash) ?? 0\n if (previousCount > 0) {\n this.logger?.warn(`Spam trap triggered for query: ${hash} from ${toSafeJsonString(query.addresses)}`)\n }\n this._spamTrap.set(hash, previousCount + 1)\n }\n\n abstract proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(_query: T, _payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n", "import type { Promisable } from '@ariestools/sdk'\nimport { assertEx, exists } from '@ariestools/sdk'\nimport type {\n ModuleManifestPayload, XyoAddress, XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport { Account } from '@xyo-network/sdk-protocol'\n\nimport type {\n AnyConfigSchema,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleName,\n ModuleResolver,\n ModuleResolverInstance,\n ObjectFilterOptions,\n QueryableModuleParams,\n} from '#module-model'\nimport { ObjectResolverPriority } from '#module-model'\nimport { CompositeModuleResolver } from '#module-resolver'\n\nimport { wrapModuleWithType } from '../wrapModuleWithType.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface ModuleProxyResolverOptions {\n childAddressMap: Record<XyoAddress, ModuleName | null>\n childManifests?: Record<XyoAddress, ModuleManifestPayload>\n childStates?: Record<XyoAddress, ModuleManifestPayload>\n host: ModuleResolver\n mod: ModuleInstance\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport class ModuleProxyResolver<T extends ModuleProxyResolverOptions = ModuleProxyResolverOptions> implements ModuleResolverInstance {\n private downResolver: CompositeModuleResolver\n private options: T\n\n constructor(options: T) {\n this.options = options\n this.downResolver = new CompositeModuleResolver({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root })\n }\n\n get priority(): 0 {\n return ObjectResolverPriority.VeryLow\n }\n\n get root(): ModuleInstance {\n return this.options.mod\n }\n\n protected get childAddressMap(): Record<(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress, string | null> {\n return this.options.childAddressMap\n }\n\n protected get host(): ModuleResolver<ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>>> {\n return this.options.host\n }\n\n protected get mod(): ModuleInstance {\n return this.options.mod\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n childManifest(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childManifests?.[address]\n }\n\n childState(address: XyoAddress): ModuleManifestPayload | undefined {\n return this.options.childStates?.[address]\n }\n\n removeResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n // eslint-disable-next-line complexity\n async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n // console.log(`childAddressMap: ${toSafeJsonString(this.childAddressMap, 10)}`)\n if (id === '*') {\n // get all the child addresses. if they have been resolved before, they should be in downResolver\n const childAddresses = Object.keys(this.childAddressMap)\n const resolvedChildren = await Promise.all(childAddresses.map<Promise<T | undefined>>(address => this.resolve<T>(address, options)))\n return resolvedChildren.filter(exists)\n }\n const direction = options?.direction ?? 'all'\n if (typeof id === 'string') {\n const idParts = id.split(':')\n const firstPart: ModuleIdentifier = assertEx(idParts.shift(), () => 'Invalid module identifier at first position')\n const firstPartAddress = await this.resolveIdentifier(firstPart)\n if (firstPartAddress) {\n const remainingParts = idParts.length > 0 ? idParts.join(':') : undefined\n if (direction === 'down' || direction === 'all') {\n const downResolverModule = await this.downResolver.resolve<T>(firstPartAddress)\n if (downResolverModule) {\n return remainingParts !== undefined && remainingParts !== '' ? downResolverModule.resolve(remainingParts, options) : downResolverModule\n }\n\n console.log(`ModuleProxyResolver: ${firstPartAddress} | ${this.root.address}`)\n if (firstPartAddress === this.root.address) {\n const wrapped = wrapModuleWithType(this.root, await Account.random()) as unknown as T\n return remainingParts !== undefined && remainingParts !== '' ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n\n // if it is a known child, create a proxy\n const addressToProxy\n = Object.keys(this.childAddressMap).includes(firstPartAddress)\n ? (firstPartAddress)\n : (Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0] as XyoAddress | undefined)\n if (addressToProxy) {\n const proxy = await this.host.resolve(addressToProxy, { ...options, direction: 'down' })\n if (proxy) {\n const wrapped = wrapModuleWithType(proxy, await Account.random()) as unknown as T\n return remainingParts !== undefined && remainingParts !== '' ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n return\n }\n }\n }\n return\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<XyoAddress | undefined> {\n // check if any of the modules have the id as an address\n if (Object.hasOwn(this.childAddressMap, id)) {\n return id as XyoAddress\n }\n\n if (this.root.address === id) {\n return this.root.address\n }\n\n if (this.root.modName === id) {\n return this.root.address\n }\n\n // check if id is a name of one of modules in the resolver\n const addressFromName = Object.entries(this.childAddressMap).find(([, name]) => name === id)?.[0] as XyoAddress | undefined\n if (addressFromName) {\n return addressFromName\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ObjectFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ObjectFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return []\n }\n}\n", "import type { AccountInstance } from '@xyo-network/sdk-protocol'\n\nimport { isArchivistModule } from '#archivist-model'\nimport { ArchivistWrapper } from '#archivist-wrapper'\nimport { isDivinerModule } from '#diviner-model'\nimport { DivinerWrapper } from '#diviner-wrapper'\nimport type { QueryableModule } from '#module-model'\nimport type { ModuleWrapper } from '#module-wrapper'\nimport { isNodeModule } from '#node-model'\nimport { NodeWrapper } from '#node-wrapper'\nimport { isSentinelModule } from '#sentinel-model'\nimport { SentinelWrapper } from '#sentinel-wrapper'\nimport { isWitnessModule } from '#witness-model'\nimport { WitnessWrapper } from '#witness-wrapper'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const wrapModuleWithType = (mod: QueryableModule, account: AccountInstance): ModuleWrapper => {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, account)\n }\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, account)\n }\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, account)\n }\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, account)\n }\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, account)\n }\n throw new Error('Failed to wrap')\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["assertEx", "exists", "forget", "Account", "isPayloadOfSchemaType", "QueryBoundWitnessWrapper", "AbstractModuleInstance", "assertEx", "exists", "ObjectResolverPriority", "CompositeModuleResolver", "CompositeModuleResolver", "ObjectResolverPriority", "exists", "assertEx", "AbstractModuleInstance", "assertEx", "isPayloadOfSchemaType", "exists", "Account", "forget", "QueryBoundWitnessWrapper"]
7
7
  }
@@ -95,9 +95,10 @@ var HttpModuleProxy = class extends AbstractModuleProxy {
95
95
  return result;
96
96
  }
97
97
  async publicChildren() {
98
- return (await Promise.all(
98
+ const children = await Promise.all(
99
99
  Object.values(await this.childAddressMap()).filter(exists).map((address) => this.resolve(address))
100
- )).filter(exists);
100
+ );
101
+ return children.filter(exists);
101
102
  }
102
103
  async resolve(id = "*", options = {}) {
103
104
  if (id === "*") {
@@ -126,7 +127,8 @@ var HttpModuleProxy = class extends AbstractModuleProxy {
126
127
  return void 0;
127
128
  }
128
129
  default: {
129
- return (await ResolveHelper.resolve(config, id, options)).filter((mod) => mod.address !== this.address);
130
+ const resolved = await ResolveHelper.resolve(config, id, options);
131
+ return resolved.filter((mod) => mod.address !== this.address);
130
132
  }
131
133
  }
132
134
  }
@@ -160,7 +162,7 @@ var HttpBridgeModuleResolver = class extends AbstractBridgeModuleResolver {
160
162
  const cachedMod = this._resolvedCache.get(firstPart);
161
163
  if (cachedMod) {
162
164
  if (isModuleInstance(cachedMod)) {
163
- const result2 = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 });
165
+ const result2 = idParts.length === 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 });
164
166
  return result2;
165
167
  }
166
168
  return;
@@ -226,7 +228,7 @@ var HttpBridge = class extends AbstractBridge {
226
228
  return this.config.failureRetryTime ?? HttpBridge.defaultFailureRetryTime;
227
229
  }
228
230
  get fetchClient() {
229
- this._fetchClient = this._fetchClient ?? this.params.fetchClient ?? HttpBridge.fetchClient;
231
+ this._fetchClient ??= this.params.fetchClient ?? HttpBridge.fetchClient;
230
232
  return this._fetchClient;
231
233
  }
232
234
  get maxConnections() {
@@ -236,11 +238,11 @@ var HttpBridge = class extends AbstractBridge {
236
238
  return this.config.maxPayloadSizeWarning ?? HttpBridge.defaultMaxPayloadSizeWarning;
237
239
  }
238
240
  get querySemaphore() {
239
- this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections);
241
+ this._querySemaphore ??= new Semaphore(this.maxConnections);
240
242
  return this._querySemaphore;
241
243
  }
242
244
  get resolver() {
243
- this._resolver = this._resolver ?? new HttpBridgeModuleResolver({
245
+ this._resolver ??= new HttpBridgeModuleResolver({
244
246
  additionalSigners: this.additionalSigners,
245
247
  archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },
246
248
  bridge: this,
@@ -265,12 +267,13 @@ var HttpBridge = class extends AbstractBridge {
265
267
  }
266
268
  async getRoots(force) {
267
269
  return await this._discoverRootsMutex.runExclusive(async () => {
268
- if (this._roots === void 0 || force) {
270
+ if (force === true || this._roots === void 0) {
269
271
  const state = await this.getRootState();
270
272
  this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`);
271
273
  const nodeManifest = state?.find(isPayloadOfSchemaType(NodeManifestPayloadSchema));
272
274
  if (nodeManifest) {
273
- const mods = (await this.resolveRootNode(nodeManifest)).filter(exists2);
275
+ const rootModules = await this.resolveRootNode(nodeManifest);
276
+ const mods = rootModules.filter(exists2);
274
277
  this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`);
275
278
  this._roots = mods;
276
279
  } else {
@@ -326,7 +329,7 @@ var HttpBridge = class extends AbstractBridge {
326
329
  const queryPayload = { schema: ModuleStateQuerySchema };
327
330
  const boundQuery = await this.bindQuery(queryPayload);
328
331
  try {
329
- const response = await this.fetchClient.post(this.clientUrl.toString(), boundQuery);
332
+ const response = await this.fetchClient.post(this.clientUrl, boundQuery);
330
333
  if (response.status === 404) {
331
334
  return [];
332
335
  }
@@ -341,12 +344,13 @@ var HttpBridge = class extends AbstractBridge {
341
344
  }
342
345
  }
343
346
  async resolveRootNode(nodeManifest) {
347
+ const resolvedRoots = await this.resolver.resolveHandler(
348
+ assertEx2(nodeManifest.status?.address, () => "Root has no address"),
349
+ void 0,
350
+ { manifest: nodeManifest }
351
+ );
344
352
  const rootModule = assertEx2(
345
- (await this.resolver.resolveHandler(
346
- assertEx2(nodeManifest.status?.address, () => "Root has no address"),
347
- void 0,
348
- { manifest: nodeManifest }
349
- )).at(0),
353
+ resolvedRoots.at(0),
350
354
  () => `Root not found [${nodeManifest.status?.address}]`
351
355
  );
352
356
  assertEx2(rootModule.constructor.name !== "HttpModuleProxy", () => "rootModule is not a Wrapper");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/bridge-http/HttpBridge.ts", "../../src/modules/bridge-http/HttpBridgeConfig.ts", "../../src/modules/bridge-http/HttpBridgeModuleResolver.ts", "../../src/modules/bridge-http/ModuleProxy/ModuleProxy.ts"],
4
- "sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx,\n exists,\n FetchClientError,\n FetchJsonClient,\n forget,\n toSafeJsonString,\n} from '@ariestools/sdk'\nimport type {\n ModuleManifestPayload, NodeManifestPayload, Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, NodeManifestPayloadSchema } from '@xyo-network/sdk-protocol'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { AbstractBridge } from '#bridge-abstract'\nimport type {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '#bridge-model'\nimport type {\n AnyConfigSchema,\n ModuleInstance,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n} from '#module-model'\nimport {\n creatableModule,\n ModuleStateQuerySchema,\n} from '#module-model'\nimport { asAttachableNodeInstance } from '#node-model'\n\nimport type { HttpBridgeConfig } from './HttpBridgeConfig.ts'\nimport { HttpBridgeConfigSchema } from './HttpBridgeConfig.ts'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver.ts'\nimport type { BridgeQuerySender } from './ModuleProxy/index.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n fetchClient?: FetchJsonClient\n}\n\ninterface HttpQueryEnvelope<T> {\n data?: T\n errors?: unknown[]\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static readonly defaultFailureRetryTime: number = 1000 * 60\n static readonly defaultMaxConnections = 4\n static readonly defaultMaxPayloadSizeWarning: number = 256 * 256\n static readonly fetchClient: FetchJsonClient = new FetchJsonClient()\n static readonly maxFailureCacheSize = 1000\n\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<XyoAddress, number>({ max: HttpBridge.maxFailureCacheSize })\n private _fetchClient?: FetchJsonClient\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get clientUrl(): string {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n get failureRetryTime(): number {\n return this.config.failureRetryTime ?? HttpBridge.defaultFailureRetryTime\n }\n\n get fetchClient(): FetchJsonClient {\n this._fetchClient = this._fetchClient ?? this.params.fetchClient ?? HttpBridge.fetchClient\n return this._fetchClient\n }\n\n get maxConnections(): number {\n return this.config.maxConnections ?? HttpBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning(): number {\n return this.config.maxPayloadSizeWarning ?? HttpBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore(): Semaphore {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver(): HttpBridgeModuleResolver {\n this._resolver\n = this._resolver\n ?? new HttpBridgeModuleResolver({\n additionalSigners: this.additionalSigners,\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n onQuerySendFinished: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => {\n forget(this.emit('querySendFinished', { mod: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => {\n forget(this.emit('querySendStarted', { mod: this, ...args }))\n },\n querySender: this,\n root: this,\n rootUrl: this.clientUrl,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<XyoAddress[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(force?: boolean): Promise<ModuleInstance[]> {\n return await this._discoverRootsMutex.runExclusive(async () => {\n if (this._roots === undefined || force) {\n const state = await this.getRootState()\n this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`)\n const nodeManifest = state?.find(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n if (nodeManifest) {\n const mods = (await this.resolveRootNode(nodeManifest)).filter(exists)\n this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`)\n this._roots = mods\n } else {\n this._roots = []\n }\n }\n return this._roots\n })\n }\n\n moduleUrl(address: XyoAddress): URL {\n return new URL(address, this.clientUrl)\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: XyoAddress,\n query: TQuery,\n payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n const payloadSize = JSON.stringify([query, payloads]).length\n if (payloadSize > this.maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${targetAddress}] [${query.schema}] [${payloads?.length ?? 0}]`,\n )\n }\n const moduleUrl = this.moduleUrl(targetAddress).href\n const result = await this.fetchClient.post<HttpQueryEnvelope<ModuleQueryResult<TOut>>>(moduleUrl, [query, payloads])\n if (result.status === 404) {\n throw new Error(`target module not found [${moduleUrl}] [${result.status}]`)\n }\n if (result.status >= 400) {\n this.logger?.error(`targetQuery failed [${moduleUrl}]`)\n throw new Error(`targetQuery failed [${moduleUrl}] [${result.status}]`)\n }\n return assertEx(result.data?.data, () => `targetQuery returned no data [${moduleUrl}]`)\n } catch (ex) {\n const error = ex instanceof FetchClientError ? ex : (ex as Error)\n this.logger?.error(`Error: ${toSafeJsonString(error)}`)\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n private async getRootState() {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n try {\n const response = await this.fetchClient.post<HttpQueryEnvelope<ModuleQueryResult>>(this.clientUrl.toString(), boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data?.data ?? [undefined, [], []]\n if (errors.length > 0) {\n throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`)\n }\n return payloads\n } catch (ex) {\n const error = ex as Error\n this.logger?.warn(`Unable to connect to remote node: ${error.message} [${this.clientUrl}]`)\n }\n }\n\n private async resolveRootNode(nodeManifest: ModuleManifestPayload): Promise<ModuleInstance[]> {\n const rootModule = assertEx(\n (\n await this.resolver.resolveHandler(\n assertEx(nodeManifest.status?.address, () => 'Root has no address'),\n undefined,\n { manifest: nodeManifest },\n )\n ).at(0),\n () => `Root not found [${nodeManifest.status?.address}]`,\n )\n assertEx(rootModule.constructor.name !== 'HttpModuleProxy', () => 'rootModule is not a Wrapper')\n const rootNode = asAttachableNodeInstance(rootModule, 'Root modules is not a node')\n if (rootNode) {\n this.logger?.debug(`rootNode: ${rootNode.id}`)\n this.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n", "import type { EmptyObject } from '@ariestools/sdk'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport type { Schema } from '@xyo-network/sdk-protocol'\nimport { asSchema } from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { BridgeClientConfig, BridgeConfig } from '#bridge-model'\nimport { BridgeConfigZod } from '#bridge-model'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const HttpBridgeConfigSchema: 'network.xyo.bridge.http.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.bridge.http.config', true)\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpBridgeConfigSchema = typeof HttpBridgeConfigSchema\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const HttpBridgeConfigZod: z.ZodMiniObject<\n Omit<(typeof BridgeConfigZod)['shape'], 'schema' | 'client' | 'host'> & {\n client: z.ZodMiniOptional<z.ZodMiniCustom<BridgeClientConfig & { url: string }, BridgeClientConfig & { url: string }>>\n failureRetryTime: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n failureTimeCacheMax: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n host: z.ZodMiniOptional<z.ZodMiniCustom<{ port: number }, { port: number }>>\n maxConnections: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n maxPayloadSizeWarning: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n schema: z.ZodMiniLiteral<HttpBridgeConfigSchema>\n },\n z.core.$strip\n> = z.extend(BridgeConfigZod, {\n client: z.optional(z.custom<BridgeClientConfig & { url: string }>()),\n failureRetryTime: z.optional(z.number()),\n failureTimeCacheMax: z.optional(z.number()),\n host: z.optional(z.custom<{ port: number }>()),\n maxConnections: z.optional(z.number()),\n maxPayloadSizeWarning: z.optional(z.number()),\n schema: z.literal(HttpBridgeConfigSchema),\n})\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpBridgeConfigBase = z.infer<typeof HttpBridgeConfigZod>\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const isHttpBridgeConfig: ReturnType<typeof zodIsFactory<HttpBridgeConfigBase>> = zodIsFactory(HttpBridgeConfigZod)\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const asHttpBridgeConfig: ReturnType<typeof zodAsFactory<HttpBridgeConfigBase>> = zodAsFactory(HttpBridgeConfigZod, 'asHttpBridgeConfig')\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const toHttpBridgeConfig: ReturnType<typeof zodToFactory<HttpBridgeConfigBase>> = zodToFactory(HttpBridgeConfigZod, 'toHttpBridgeConfig')\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: BridgeConfig['client'] & {\n url: string\n }\n failureRetryTime?: number\n failureTimeCacheMax?: number\n host?: {\n port: number\n }\n maxConnections?: number\n maxPayloadSizeWarning?: number\n schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends Schema ? TSchema : HttpBridgeConfigSchema\n>\n", "import type { CreatableName } from '@ariestools/sdk'\nimport {\n assertEx, isAddress, isDefined,\n} from '@ariestools/sdk'\nimport type {\n ConfigPayload, Payload, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport { Account, ConfigSchema } from '@xyo-network/sdk-protocol'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport type { BridgeModuleResolverParams } from '#bridge-abstract'\nimport { AbstractBridgeModuleResolver, wrapModuleWithType } from '#bridge-abstract'\nimport type {\n AnyConfigSchema,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n QueryableModuleParams,\n} from '#module-model'\nimport {\n asModuleInstance,\n isModuleInstance,\n ModuleConfigSchema,\n} from '#module-model'\nimport { ResolveHelper } from '#module-resolver'\n\nimport type { BridgeQuerySender, HttpModuleProxyParams } from './ModuleProxy/index.ts'\nimport { HttpModuleProxy } from './ModuleProxy/index.ts'\n\nconst NotFoundModule = { notFound: true }\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: BridgeQuerySender\n rootUrl: string\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport class HttpBridgeModuleResolver<\n T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n protected _resolvedCache: LRUCache<(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress, ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>> | {\n notFound: boolean\n }, unknown> = new LRUCache<XyoAddress, ModuleInstance | typeof NotFoundModule>({ max: 1000 })\n\n protected _resolvedCacheMutex: Mutex = new Mutex()\n\n get querySender(): BridgeQuerySender {\n return this.params.querySender\n }\n\n moduleUrl(address: XyoAddress): URL {\n return new URL(address, this.params.rootUrl)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n params?: Partial<HttpModuleProxyParams>,\n ): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult.length > 0) {\n return parentResult\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => 'Missing module identifier')\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const instance: T | undefined = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as XyoAddress)\n if (cachedMod) {\n if (isModuleInstance(cachedMod)) {\n const result = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n }\n // return cached 404\n return\n }\n const account = await Account.random()\n const finalParams: HttpModuleProxyParams = {\n name: 'HttpBridgeModuleResolver' as CreatableName,\n account,\n archiving: this.params.archiving,\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress: firstPart as XyoAddress,\n onQuerySendFinished: this.params.onQuerySendFinished,\n onQuerySendStarted: this.params.onQuerySendStarted,\n querySender: this.params.querySender,\n ...params,\n }\n\n this.logger?.debug(`creating HttpProxy [${firstPart}] ${id}`)\n\n let proxy: HttpModuleProxy | undefined\n\n let state: Payload[] | undefined\n\n try {\n proxy = await HttpModuleProxy.create(finalParams)\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.error(error.message)\n }\n\n if (isDefined(proxy)) {\n if (!state) {\n // cache the fact that it was not found\n this._resolvedCache.set(firstPart as XyoAddress, NotFoundModule)\n return\n }\n\n const configSchema = (state.find(payload => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find(payload => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n\n this.logger?.log(`created HttpProxy [${firstPart}] ${proxy.id}`)\n\n await proxy.start?.()\n const wrapped = wrapModuleWithType(proxy, account) as unknown as T\n assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n this._resolvedCache.set(wrapped.address, wrapped)\n return wrapped\n }\n })\n const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n", "import {\n exists, forget,\n isAddress, isString,\n} from '@ariestools/sdk'\nimport type {\n Payload, QueryBoundWitness, XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport type { ModuleProxyParams } from '#bridge-abstract'\nimport { AbstractModuleProxy } from '#bridge-abstract'\nimport type {\n AttachableModuleInstance,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n} from '#module-model'\nimport { creatableModule } from '#module-model'\nimport type { ResolveHelperConfig } from '#module-resolver'\nimport { ResolveHelper } from '#module-resolver'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface BridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: XyoAddress,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpModuleProxyParams = ModuleProxyParams & {\n querySender: BridgeQuerySender\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\n@creatableModule()\nexport class HttpModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n>\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements AttachableModuleInstance<TParams, TWrappedModule['eventData']> {\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n return (\n await Promise.all(\n Object.values(await this.childAddressMap())\n .filter(exists)\n .map(address => this.resolve(address)),\n )\n ).filter(exists)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n if (id === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] as T[]\n }\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = parts.shift()\n if (isString(first)) {\n const remainingPath = parts.length > 0 ? parts.join(':') : undefined\n const address\n = isAddress(first)\n ? first\n : this.id === first\n ? this.address\n : this.childAddressByName(first)\n if (!isAddress(address)) return undefined\n const firstInstance = (await this.params.host.resolve(address))\n return (isString(remainingPath) ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n return undefined\n }\n default: {\n return (await ResolveHelper.resolve(config, id, options)).filter(mod => mod.address !== this.address)\n }\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { Promisable } from '@ariestools/sdk'\nimport {\n assertEx,\n exists,\n FetchClientError,\n FetchJsonClient,\n forget,\n toSafeJsonString,\n} from '@ariestools/sdk'\nimport type {\n ModuleManifestPayload, NodeManifestPayload, Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\nimport { isPayloadOfSchemaType, NodeManifestPayloadSchema } from '@xyo-network/sdk-protocol'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { AbstractBridge } from '#bridge-abstract'\nimport type {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '#bridge-model'\nimport type {\n AnyConfigSchema,\n ModuleInstance,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n} from '#module-model'\nimport {\n creatableModule,\n ModuleStateQuerySchema,\n} from '#module-model'\nimport { asAttachableNodeInstance } from '#node-model'\n\nimport type { HttpBridgeConfig } from './HttpBridgeConfig.ts'\nimport { HttpBridgeConfigSchema } from './HttpBridgeConfig.ts'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver.ts'\nimport type { BridgeQuerySender } from './ModuleProxy/index.ts'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n fetchClient?: FetchJsonClient\n}\n\ninterface HttpQueryEnvelope<T> {\n data?: T\n errors?: unknown[]\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static readonly defaultFailureRetryTime: number = 1000 * 60\n static readonly defaultMaxConnections = 4\n static readonly defaultMaxPayloadSizeWarning: number = 256 * 256\n static readonly fetchClient: FetchJsonClient = new FetchJsonClient()\n static readonly maxFailureCacheSize = 1000\n\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<XyoAddress, number>({ max: HttpBridge.maxFailureCacheSize })\n private _fetchClient?: FetchJsonClient\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get clientUrl(): string {\n return assertEx(this.config.client?.url, () => 'No Url Set')\n }\n\n get failureRetryTime(): number {\n return this.config.failureRetryTime ?? HttpBridge.defaultFailureRetryTime\n }\n\n get fetchClient(): FetchJsonClient {\n this._fetchClient ??= this.params.fetchClient ?? HttpBridge.fetchClient\n return this._fetchClient\n }\n\n get maxConnections(): number {\n return this.config.maxConnections ?? HttpBridge.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning(): number {\n return this.config.maxPayloadSizeWarning ?? HttpBridge.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore(): Semaphore {\n this._querySemaphore ??= new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver(): HttpBridgeModuleResolver {\n this._resolver\n ??= new HttpBridgeModuleResolver({\n additionalSigners: this.additionalSigners,\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n onQuerySendFinished: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => {\n forget(this.emit('querySendFinished', { mod: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => {\n forget(this.emit('querySendStarted', { mod: this, ...args }))\n },\n querySender: this,\n root: this,\n rootUrl: this.clientUrl,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<XyoAddress[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(force?: boolean): Promise<ModuleInstance[]> {\n return await this._discoverRootsMutex.runExclusive(async () => {\n if (force === true || this._roots === undefined) {\n const state = await this.getRootState()\n this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`)\n const nodeManifest = state?.find(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n if (nodeManifest) {\n const rootModules = await this.resolveRootNode(nodeManifest)\n const mods = rootModules.filter(exists)\n this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`)\n this._roots = mods\n } else {\n this._roots = []\n }\n }\n return this._roots\n })\n }\n\n moduleUrl(address: XyoAddress): URL {\n return new URL(address, this.clientUrl)\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: XyoAddress,\n query: TQuery,\n payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n const payloadSize = JSON.stringify([query, payloads]).length\n if (payloadSize > this.maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${targetAddress}] [${query.schema}] [${payloads?.length ?? 0}]`,\n )\n }\n const moduleUrl = this.moduleUrl(targetAddress).href\n const result = await this.fetchClient.post<HttpQueryEnvelope<ModuleQueryResult<TOut>>>(moduleUrl, [query, payloads])\n if (result.status === 404) {\n throw new Error(`target module not found [${moduleUrl}] [${result.status}]`)\n }\n if (result.status >= 400) {\n this.logger?.error(`targetQuery failed [${moduleUrl}]`)\n throw new Error(`targetQuery failed [${moduleUrl}] [${result.status}]`)\n }\n return assertEx(result.data?.data, () => `targetQuery returned no data [${moduleUrl}]`)\n } catch (ex) {\n const error = ex instanceof FetchClientError ? ex : (ex as Error)\n this.logger?.error(`Error: ${toSafeJsonString(error)}`)\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n private async getRootState() {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n try {\n const response = await this.fetchClient.post<HttpQueryEnvelope<ModuleQueryResult>>(this.clientUrl, boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data?.data ?? [undefined, [], []]\n if (errors.length > 0) {\n throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`)\n }\n return payloads\n } catch (ex) {\n const error = ex as Error\n this.logger?.warn(`Unable to connect to remote node: ${error.message} [${this.clientUrl}]`)\n }\n }\n\n private async resolveRootNode(nodeManifest: ModuleManifestPayload): Promise<ModuleInstance[]> {\n const resolvedRoots = await this.resolver.resolveHandler(\n assertEx(nodeManifest.status?.address, () => 'Root has no address'),\n undefined,\n { manifest: nodeManifest },\n )\n const rootModule = assertEx(\n resolvedRoots.at(0),\n () => `Root not found [${nodeManifest.status?.address}]`,\n )\n assertEx(rootModule.constructor.name !== 'HttpModuleProxy', () => 'rootModule is not a Wrapper')\n const rootNode = asAttachableNodeInstance(rootModule, 'Root modules is not a node')\n if (rootNode) {\n this.logger?.debug(`rootNode: ${rootNode.id}`)\n this.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n", "import type { EmptyObject } from '@ariestools/sdk'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@ariestools/sdk'\nimport type { Schema } from '@xyo-network/sdk-protocol'\nimport { asSchema } from '@xyo-network/sdk-protocol'\nimport * as z from 'zod/mini'\n\nimport type { BridgeClientConfig, BridgeConfig } from '#bridge-model'\nimport { BridgeConfigZod } from '#bridge-model'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const HttpBridgeConfigSchema: 'network.xyo.bridge.http.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.bridge.http.config', true)\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpBridgeConfigSchema = typeof HttpBridgeConfigSchema\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const HttpBridgeConfigZod: z.ZodMiniObject<\n Omit<(typeof BridgeConfigZod)['shape'], 'schema' | 'client' | 'host'> & {\n client: z.ZodMiniOptional<z.ZodMiniCustom<BridgeClientConfig & { url: string }, BridgeClientConfig & { url: string }>>\n failureRetryTime: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n failureTimeCacheMax: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n host: z.ZodMiniOptional<z.ZodMiniCustom<{ port: number }, { port: number }>>\n maxConnections: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n maxPayloadSizeWarning: z.ZodMiniOptional<z.ZodMiniNumber<number>>\n schema: z.ZodMiniLiteral<HttpBridgeConfigSchema>\n },\n z.core.$strip\n> = z.extend(BridgeConfigZod, {\n client: z.optional(z.custom<BridgeClientConfig & { url: string }>()),\n failureRetryTime: z.optional(z.number()),\n failureTimeCacheMax: z.optional(z.number()),\n host: z.optional(z.custom<{ port: number }>()),\n maxConnections: z.optional(z.number()),\n maxPayloadSizeWarning: z.optional(z.number()),\n schema: z.literal(HttpBridgeConfigSchema),\n})\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpBridgeConfigBase = z.infer<typeof HttpBridgeConfigZod>\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const isHttpBridgeConfig: ReturnType<typeof zodIsFactory<HttpBridgeConfigBase>> = zodIsFactory(HttpBridgeConfigZod)\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const asHttpBridgeConfig: ReturnType<typeof zodAsFactory<HttpBridgeConfigBase>> = zodAsFactory(HttpBridgeConfigZod, 'asHttpBridgeConfig')\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport const toHttpBridgeConfig: ReturnType<typeof zodToFactory<HttpBridgeConfigBase>> = zodToFactory(HttpBridgeConfigZod, 'toHttpBridgeConfig')\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: BridgeConfig['client'] & {\n url: string\n }\n failureRetryTime?: number\n failureTimeCacheMax?: number\n host?: {\n port: number\n }\n maxConnections?: number\n maxPayloadSizeWarning?: number\n schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends Schema ? TSchema : HttpBridgeConfigSchema\n>\n", "import type { CreatableName } from '@ariestools/sdk'\nimport {\n assertEx, isAddress, isDefined,\n} from '@ariestools/sdk'\nimport type {\n ConfigPayload, Payload, XyoAddress,\n XyoQuantAddress,\n} from '@xyo-network/sdk-protocol'\nimport { Account, ConfigSchema } from '@xyo-network/sdk-protocol'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport type { BridgeModuleResolverParams } from '#bridge-abstract'\nimport { AbstractBridgeModuleResolver, wrapModuleWithType } from '#bridge-abstract'\nimport type {\n AnyConfigSchema,\n ModuleConfig,\n ModuleEventData,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n QueryableModuleParams,\n} from '#module-model'\nimport {\n asModuleInstance,\n isModuleInstance,\n ModuleConfigSchema,\n} from '#module-model'\nimport { ResolveHelper } from '#module-resolver'\n\nimport type { BridgeQuerySender, HttpModuleProxyParams } from './ModuleProxy/index.ts'\nimport { HttpModuleProxy } from './ModuleProxy/index.ts'\n\nconst NotFoundModule = { notFound: true }\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: BridgeQuerySender\n rootUrl: string\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport class HttpBridgeModuleResolver<\n T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n protected _resolvedCache: LRUCache<(Lowercase<string> & {\n readonly __hex: true\n } & {\n readonly __address: true\n }) | XyoQuantAddress, ModuleInstance<QueryableModuleParams<AnyConfigSchema<ModuleConfig>>, ModuleEventData<object>> | {\n notFound: boolean\n }, unknown> = new LRUCache<XyoAddress, ModuleInstance | typeof NotFoundModule>({ max: 1000 })\n\n protected _resolvedCacheMutex: Mutex = new Mutex()\n\n get querySender(): BridgeQuerySender {\n return this.params.querySender\n }\n\n moduleUrl(address: XyoAddress): URL {\n return new URL(address, this.params.rootUrl)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n params?: Partial<HttpModuleProxyParams>,\n ): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult.length > 0) {\n return parentResult\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => 'Missing module identifier')\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const instance: T | undefined = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as XyoAddress)\n if (cachedMod) {\n if (isModuleInstance(cachedMod)) {\n const result = idParts.length === 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n }\n // return cached 404\n return\n }\n const account = await Account.random()\n const finalParams: HttpModuleProxyParams = {\n name: 'HttpBridgeModuleResolver' as CreatableName,\n account,\n archiving: this.params.archiving,\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress: firstPart as XyoAddress,\n onQuerySendFinished: this.params.onQuerySendFinished,\n onQuerySendStarted: this.params.onQuerySendStarted,\n querySender: this.params.querySender,\n ...params,\n }\n\n this.logger?.debug(`creating HttpProxy [${firstPart}] ${id}`)\n\n let proxy: HttpModuleProxy | undefined\n\n let state: Payload[] | undefined\n\n try {\n proxy = await HttpModuleProxy.create(finalParams)\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.error(error.message)\n }\n\n if (isDefined(proxy)) {\n if (!state) {\n // cache the fact that it was not found\n this._resolvedCache.set(firstPart as XyoAddress, NotFoundModule)\n return\n }\n\n const configSchema = (state.find(payload => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find(payload => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n\n this.logger?.log(`created HttpProxy [${firstPart}] ${proxy.id}`)\n\n await proxy.start?.()\n const wrapped = wrapModuleWithType(proxy, account) as unknown as T\n assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n this._resolvedCache.set(wrapped.address, wrapped)\n return wrapped\n }\n })\n const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n", "import {\n exists, forget,\n isAddress, isString,\n} from '@ariestools/sdk'\nimport type {\n Payload, QueryBoundWitness, XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport type { ModuleProxyParams } from '#bridge-abstract'\nimport { AbstractModuleProxy } from '#bridge-abstract'\nimport type {\n AttachableModuleInstance,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n} from '#module-model'\nimport { creatableModule } from '#module-model'\nimport type { ResolveHelperConfig } from '#module-resolver'\nimport { ResolveHelper } from '#module-resolver'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport interface BridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: XyoAddress,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\nexport type HttpModuleProxyParams = ModuleProxyParams & {\n querySender: BridgeQuerySender\n}\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\n@creatableModule()\nexport class HttpModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n>\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements AttachableModuleInstance<TParams, TWrappedModule['eventData']> {\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n const children = await Promise.all(\n Object.values(await this.childAddressMap())\n .filter(exists)\n .map(address => this.resolve(address)),\n )\n return children.filter(exists)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n if (id === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] as T[]\n }\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n switch (typeof id) {\n case 'string': {\n const parts = id.split(':')\n const first = parts.shift()\n if (isString(first)) {\n const remainingPath = parts.length > 0 ? parts.join(':') : undefined\n const address\n = isAddress(first)\n ? first\n : this.id === first\n ? this.address\n : this.childAddressByName(first)\n if (!isAddress(address)) return undefined\n const firstInstance = (await this.params.host.resolve(address))\n return (isString(remainingPath) ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n return undefined\n }\n default: {\n const resolved = await ResolveHelper.resolve(config, id, options)\n return resolved.filter(mod => mod.address !== this.address)\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["assertEx", "exists", "forget", "Mutex", "LRUCache", "creatableModule", "isAddress", "ResolveHelper", "ResolveHelper", "isAddress", "result", "Mutex", "LRUCache", "assertEx", "forget", "exists", "creatableModule"]
7
7
  }
@@ -27,7 +27,8 @@ var BridgeWrapper = class extends ModuleWrapper {
27
27
  schema: ModuleFilterPayloadSchema,
28
28
  ...options
29
29
  };
30
- const addresses = (await this.sendQuery({ schema: BridgeExposeQuerySchema }, [filterPayload])).map(({ address }) => address);
30
+ const queryResult = await this.sendQuery({ schema: BridgeExposeQuerySchema }, [filterPayload]);
31
+ const addresses = queryResult.map(({ address }) => address);
31
32
  return await Promise.all(addresses.map((address) => this.resolve(address)));
32
33
  }
33
34
  async unexpose(id, options) {
@@ -36,7 +37,8 @@ var BridgeWrapper = class extends ModuleWrapper {
36
37
  schema: ModuleFilterPayloadSchema,
37
38
  ...options
38
39
  };
39
- return (await this.sendQuery({ schema: BridgeUnexposeQuerySchema }, [filterPayload])).map(({ address }) => address);
40
+ const queryResult = await this.sendQuery({ schema: BridgeUnexposeQuerySchema }, [filterPayload]);
41
+ return queryResult.map(({ address }) => address);
40
42
  }
41
43
  };
42
44
  __publicField(BridgeWrapper, "instanceIdentityCheck", isBridgeInstance);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/bridge-wrapper/BridgeWrapper.ts"],
4
- "sourcesContent": ["import type { TypeCheck } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n BridgeConfig,\n BridgeExposeOptions,\n BridgeExposeQuery,\n BridgeInstance,\n BridgeModule,\n BridgeModuleEventData,\n BridgeParams,\n BridgeUnexposeOptions,\n BridgeUnexposeQuery,\n ModuleFilterPayload,\n} from '#bridge-model'\nimport {\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n isBridgeInstance,\n isBridgeModule,\n ModuleFilterPayloadSchema,\n} from '#bridge-model'\nimport type {\n AddressPayload, AnyConfigSchema, ModuleIdentifier, ModuleInstance,\n QueryableModuleTypeCheck,\n} from '#module-model'\nimport { constructableModuleWrapper, ModuleWrapper } from '#module-wrapper'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\n@constructableModuleWrapper()\nexport class BridgeWrapper<TWrappedModule extends BridgeModule = BridgeModule>\n extends ModuleWrapper<TWrappedModule>\n implements BridgeInstance<TWrappedModule['params']> {\n static override readonly instanceIdentityCheck: TypeCheck<BridgeInstance<BridgeParams<AnyConfigSchema<BridgeConfig<void, void, void, void>>>, BridgeModuleEventData>> = isBridgeInstance\n static override readonly moduleIdentityCheck: QueryableModuleTypeCheck<BridgeModule<BridgeParams<AnyConfigSchema<BridgeConfig<void, void, void, void>>>, BridgeModuleEventData>> = isBridgeModule\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions): Promise<ModuleInstance[]> {\n const filterPayload: ModuleFilterPayload = {\n id, schema: ModuleFilterPayloadSchema, ...options,\n }\n const addresses = (\n await this.sendQuery<BridgeExposeQuery, ModuleFilterPayload, AddressPayload>({ schema: BridgeExposeQuerySchema }, [filterPayload])\n ).map(({ address }) => address)\n return await Promise.all((addresses).map(address => this.resolve(address)))\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions): Promise<XyoAddress[]> {\n const filterPayload: ModuleFilterPayload = {\n id, schema: ModuleFilterPayloadSchema, ...options,\n }\n return (\n await this.sendQuery<BridgeUnexposeQuery, ModuleFilterPayload, AddressPayload>({ schema: BridgeUnexposeQuerySchema }, [filterPayload])\n ).map(({ address }) => address)\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;AAeA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP,SAAS,4BAA4B,qBAAqB;AAInD,IAAM,gBAAN,cACG,cAC4C;AAAA,EAIpD,MAAM,OAAO,IAAsB,SAA0D;AAC3F,UAAM,gBAAqC;AAAA,MACzC;AAAA,MAAI,QAAQ;AAAA,MAA2B,GAAG;AAAA,IAC5C;AACA,UAAM,aACJ,MAAM,KAAK,UAAkE,EAAE,QAAQ,wBAAwB,GAAG,CAAC,aAAa,CAAC,GACjI,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO;AAC9B,WAAO,MAAM,QAAQ,IAAK,UAAW,IAAI,aAAW,KAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,SAAS,IAAsB,SAAwD;AAC3F,UAAM,gBAAqC;AAAA,MACzC;AAAA,MAAI,QAAQ;AAAA,MAA2B,GAAG;AAAA,IAC5C;AACA,YACE,MAAM,KAAK,UAAoE,EAAE,QAAQ,0BAA0B,GAAG,CAAC,aAAa,CAAC,GACrI,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO;AAAA,EAChC;AACF;AArBE,cAHW,eAGc,yBAA+I;AACxK,cAJW,eAIc,uBAA0J;AAJxK,gBAAN;AAAA,EADN,2BAA2B;AAAA,GACf;",
4
+ "sourcesContent": ["import type { TypeCheck } from '@ariestools/sdk'\nimport type { XyoAddress } from '@xyo-network/sdk-protocol'\n\nimport type {\n BridgeConfig,\n BridgeExposeOptions,\n BridgeExposeQuery,\n BridgeInstance,\n BridgeModule,\n BridgeModuleEventData,\n BridgeParams,\n BridgeUnexposeOptions,\n BridgeUnexposeQuery,\n ModuleFilterPayload,\n} from '#bridge-model'\nimport {\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n isBridgeInstance,\n isBridgeModule,\n ModuleFilterPayloadSchema,\n} from '#bridge-model'\nimport type {\n AddressPayload, AnyConfigSchema, ModuleIdentifier, ModuleInstance,\n QueryableModuleTypeCheck,\n} from '#module-model'\nimport { constructableModuleWrapper, ModuleWrapper } from '#module-wrapper'\n\n/** @deprecated The Bridge module concept is deprecated and will be removed in the next major version. */\n@constructableModuleWrapper()\nexport class BridgeWrapper<TWrappedModule extends BridgeModule = BridgeModule>\n extends ModuleWrapper<TWrappedModule>\n implements BridgeInstance<TWrappedModule['params']> {\n static override readonly instanceIdentityCheck: TypeCheck<BridgeInstance<BridgeParams<AnyConfigSchema<BridgeConfig<void, void, void, void>>>, BridgeModuleEventData>> = isBridgeInstance\n static override readonly moduleIdentityCheck: QueryableModuleTypeCheck<BridgeModule<BridgeParams<AnyConfigSchema<BridgeConfig<void, void, void, void>>>, BridgeModuleEventData>> = isBridgeModule\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions): Promise<ModuleInstance[]> {\n const filterPayload: ModuleFilterPayload = {\n id, schema: ModuleFilterPayloadSchema, ...options,\n }\n const queryResult = await this.sendQuery<BridgeExposeQuery, ModuleFilterPayload, AddressPayload>({ schema: BridgeExposeQuerySchema }, [filterPayload])\n const addresses = queryResult.map(({ address }) => address)\n return await Promise.all((addresses).map(address => this.resolve(address)))\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions): Promise<XyoAddress[]> {\n const filterPayload: ModuleFilterPayload = {\n id, schema: ModuleFilterPayloadSchema, ...options,\n }\n const queryResult = await this.sendQuery<BridgeUnexposeQuery, ModuleFilterPayload, AddressPayload>({ schema: BridgeUnexposeQuerySchema }, [filterPayload])\n return queryResult.map(({ address }) => address)\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAeA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP,SAAS,4BAA4B,qBAAqB;AAInD,IAAM,gBAAN,cACG,cAC4C;AAAA,EAIpD,MAAM,OAAO,IAAsB,SAA0D;AAC3F,UAAM,gBAAqC;AAAA,MACzC;AAAA,MAAI,QAAQ;AAAA,MAA2B,GAAG;AAAA,IAC5C;AACA,UAAM,cAAc,MAAM,KAAK,UAAkE,EAAE,QAAQ,wBAAwB,GAAG,CAAC,aAAa,CAAC;AACrJ,UAAM,YAAY,YAAY,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO;AAC1D,WAAO,MAAM,QAAQ,IAAK,UAAW,IAAI,aAAW,KAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAM,SAAS,IAAsB,SAAwD;AAC3F,UAAM,gBAAqC;AAAA,MACzC;AAAA,MAAI,QAAQ;AAAA,MAA2B,GAAG;AAAA,IAC5C;AACA,UAAM,cAAc,MAAM,KAAK,UAAoE,EAAE,QAAQ,0BAA0B,GAAG,CAAC,aAAa,CAAC;AACzJ,WAAO,YAAY,IAAI,CAAC,EAAE,QAAQ,MAAM,OAAO;AAAA,EACjD;AACF;AAnBE,cAHW,eAGc,yBAA+I;AACxK,cAJW,eAIc,uBAA0J;AAJxK,gBAAN;AAAA,EADN,2BAA2B;AAAA,GACf;",
6
6
  "names": []
7
7
  }
@@ -49,7 +49,7 @@ var AbstractDiviner = class extends AbstractModuleInstance {
49
49
  this._noOverride("divine");
50
50
  this.isSupportedQuery(DivinerDivineQuerySchema, "divine");
51
51
  return await this.spanAsync("divine", async () => {
52
- if (this.reentrancy?.scope === "global" && this.reentrancy.action === "skip" && this.globalReentrancyMutex?.isLocked()) {
52
+ if (this.reentrancy?.scope === "global" && this.reentrancy.action === "skip" && this.globalReentrancyMutex?.isLocked() === true) {
53
53
  return [];
54
54
  }
55
55
  try {
@@ -73,7 +73,7 @@ var AbstractDiviner = class extends AbstractModuleInstance {
73
73
  outPayloads
74
74
  });
75
75
  if (errors.length > 0) {
76
- throw new Error(`Divine failed with ${errors.length} errors: ${errors.map((e) => e.message).join(", ")}`);
76
+ throw new AggregateError(errors, `Divine failed with ${errors.length} errors: ${errors.map((e) => e.message).join(", ")}`);
77
77
  }
78
78
  return PayloadBuilder.omitPrivateStorageMeta(outPayloads);
79
79
  });