@xyo-network/bridge-worker 2.104.0 → 2.105.0-rc.1

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.
@@ -164,12 +164,8 @@ var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
164
164
  var import_meta = {};
165
165
  function _ts_decorate(decorators, target, key, desc) {
166
166
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
167
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
168
- r = Reflect.decorate(decorators, target, key, desc);
169
- else
170
- for (var i = decorators.length - 1; i >= 0; i--)
171
- if (d = decorators[i])
172
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
167
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
168
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
173
169
  return c > 3 && r && Object.defineProperty(target, key, r), r;
174
170
  }
175
171
  __name(_ts_decorate, "_ts_decorate");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest'\nexport * from './worker'\nexport * from './WorkerBridge'\nexport * from './WorkerBridgeConfig'\n","import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["defaultPackageManifest","nodes","config","name","schema","NodeConfigSchema","modules","private","ArchivistConfigSchema","public","SentinelConfigSchema","PackageManifestPayloadSchema","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest'\nexport * from './worker'\nexport * from './WorkerBridge'\nexport * from './WorkerBridgeConfig'\n","import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["defaultPackageManifest","nodes","config","name","schema","NodeConfigSchema","modules","private","ArchivistConfigSchema","public","SentinelConfigSchema","PackageManifestPayloadSchema","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
@@ -136,12 +136,8 @@ var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
136
136
  // src/WorkerBridge.ts
137
137
  function _ts_decorate(decorators, target, key, desc) {
138
138
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
139
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
140
- r = Reflect.decorate(decorators, target, key, desc);
141
- else
142
- for (var i = decorators.length - 1; i >= 0; i--)
143
- if (d = decorators[i])
144
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
139
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
140
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
145
141
  return c > 3 && r && Object.defineProperty(target, key, r), r;
146
142
  }
147
143
  __name(_ts_decorate, "_ts_decorate");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["ArchivistConfigSchema","PackageManifestPayloadSchema","NodeConfigSchema","SentinelConfigSchema","defaultPackageManifest","nodes","config","name","schema","modules","private","public","generateMnemonic","wordlist","forget","HDWallet","ManifestWrapper","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","assertEx","AbstractBridge","creatableModule","LRUCache","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
1
+ {"version":3,"sources":["../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["ArchivistConfigSchema","PackageManifestPayloadSchema","NodeConfigSchema","SentinelConfigSchema","defaultPackageManifest","nodes","config","name","schema","modules","private","public","generateMnemonic","wordlist","forget","HDWallet","ManifestWrapper","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","assertEx","AbstractBridge","creatableModule","LRUCache","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
@@ -164,12 +164,8 @@ var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
164
164
  var import_meta = {};
165
165
  function _ts_decorate(decorators, target, key, desc) {
166
166
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
167
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
168
- r = Reflect.decorate(decorators, target, key, desc);
169
- else
170
- for (var i = decorators.length - 1; i >= 0; i--)
171
- if (d = decorators[i])
172
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
167
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
168
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
173
169
  return c > 3 && r && Object.defineProperty(target, key, r), r;
174
170
  }
175
171
  __name(_ts_decorate, "_ts_decorate");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest'\nexport * from './worker'\nexport * from './WorkerBridge'\nexport * from './WorkerBridgeConfig'\n","import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["defaultPackageManifest","nodes","config","name","schema","NodeConfigSchema","modules","private","ArchivistConfigSchema","public","SentinelConfigSchema","PackageManifestPayloadSchema","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest'\nexport * from './worker'\nexport * from './WorkerBridge'\nexport * from './WorkerBridgeConfig'\n","import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["defaultPackageManifest","nodes","config","name","schema","NodeConfigSchema","modules","private","ArchivistConfigSchema","public","SentinelConfigSchema","PackageManifestPayloadSchema","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
@@ -136,12 +136,8 @@ var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
136
136
  // src/WorkerBridge.ts
137
137
  function _ts_decorate(decorators, target, key, desc) {
138
138
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
139
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
140
- r = Reflect.decorate(decorators, target, key, desc);
141
- else
142
- for (var i = decorators.length - 1; i >= 0; i--)
143
- if (d = decorators[i])
144
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
139
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
140
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
145
141
  return c > 3 && r && Object.defineProperty(target, key, r), r;
146
142
  }
147
143
  __name(_ts_decorate, "_ts_decorate");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["ArchivistConfigSchema","PackageManifestPayloadSchema","NodeConfigSchema","SentinelConfigSchema","defaultPackageManifest","nodes","config","name","schema","modules","private","public","generateMnemonic","wordlist","forget","HDWallet","ManifestWrapper","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","assertEx","AbstractBridge","creatableModule","LRUCache","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
1
+ {"version":3,"sources":["../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["ArchivistConfigSchema","PackageManifestPayloadSchema","NodeConfigSchema","SentinelConfigSchema","defaultPackageManifest","nodes","config","name","schema","modules","private","public","generateMnemonic","wordlist","forget","HDWallet","ManifestWrapper","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","assertEx","AbstractBridge","creatableModule","LRUCache","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","configSchemas","WorkerBridgeConfigSchema","defaultConfigSchema","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","creatableModule"]}
@@ -20,10 +20,7 @@ var __copyProps = (to, from, except, desc) => {
20
20
  return to;
21
21
  };
22
22
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
- var __publicField = (obj, key, value) => {
24
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
25
- return value;
26
- };
23
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
27
24
  var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
28
25
 
29
26
  // src/index.ts
@@ -172,12 +169,8 @@ var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
172
169
  var import_meta = {};
173
170
  function _ts_decorate(decorators, target, key, desc) {
174
171
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
175
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
176
- r = Reflect.decorate(decorators, target, key, desc);
177
- else
178
- for (var i = decorators.length - 1; i >= 0; i--)
179
- if (d = decorators[i])
180
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
172
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
173
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
181
174
  return c > 3 && r && Object.defineProperty(target, key, r), r;
182
175
  }
183
176
  __name(_ts_decorate, "_ts_decorate");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest'\nexport * from './worker'\nexport * from './WorkerBridge'\nexport * from './WorkerBridgeConfig'\n","import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["defaultPackageManifest","nodes","config","name","schema","NodeConfigSchema","modules","private","ArchivistConfigSchema","public","SentinelConfigSchema","PackageManifestPayloadSchema","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","WorkerBridgeConfigSchema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","configSchemas","defaultConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest'\nexport * from './worker'\nexport * from './WorkerBridge'\nexport * from './WorkerBridgeConfig'\n","import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;ACAA,6BAAsC;AACtC,4BAAqE;AACrE,wBAAiC;AACjC,4BAAqC;AAE9B,IAAMA,yBAAiD;EAC5DC,OAAO;IACL;MACEC,QAAQ;QACNC,MAAM;QACNC,QAAQC;MACV;MACAC,SAAS;QACPC,SAAS;UACP;YACEL,QAAQ;cACNC,MAAM;cACNC,QAAQI;YACV;UACF;;QAEFC,QAAQ;UACN;YACEP,QAAQ;cACNC,MAAM;cACNC,QAAQI;YACV;UACF;UACA;YACEN,QAAQ;cACNC,MAAM;cACNC,QAAQM;YACV;UACF;;MAEJ;IACF;;EAEFN,QAAQO;AACV;;;ACvCA,mBAAiC;AAEjC,qBAAyB;AACzB,oBAAuB;AAGvB,qBAAyB;AACzB,sBAAwD;AAiBjD,IAAMC,kBAAN,MAAMA,gBAAAA;;;EACXC,YACYC,MACAC,QACV;SAFUD,OAAAA;SACAC,SAAAA;EACT;EAEH,aAAaC,OAAOC,QAAgC;AAClD,UAAMC,eAAWC,+BAAiBC,yBAAU,GAAA;AAC5C,UAAMC,WAAW,IAAIC,gCAAgBL,QAAQ,MAAMM,wBAASC,WAAWN,QAAAA,CAAAA;AACvE,UAAM,CAACJ,IAAAA,IAAQ,MAAMO,SAASI,UAAS;AACvC,UAAMC,SAAS,IAAI,KAAKZ,IAAAA;AACxBY,WAAOC,WAAWb,IAAAA;AAClB,WAAOY;EACT;EAEA,OAAOE,MAAMb,QAAiB;AAC5B,UAAMc,WAAW,8BAAOC,UAAAA;AACtB,cAAQA,MAAMC,KAAKC,MAAI;QACrB,KAAK,cAAc;AACjB,gBAAMC,UAA6BH,MAAMC;AACzC,gBAAML,SAAS,MAAM,KAAKV,OAAOiB,QAAQZ,QAAQ;AACjDN,2CAAQmB,IAAI,eAAeR,OAAOZ,KAAKqB,OAAO;AAC9C,gBAAMC,WAA+B;YAAED,SAAST,OAAOZ,KAAKqB;YAASH,MAAM;UAAc;AACzFK,sBAAYD,QAAAA;AACZ;QACF;QACA,SAAS;AACP,gBAAMH,UAAmBH,MAAMC;AAC/BhB,2CAAQuB,MAAM,2BAA2BC,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUP,SAAS,MAAM,CAAA,CAAA;AAClG;QACF;MACF;IACF,GAhBiB;AAkBjBQ,SAAKC,iBAAiB,WAAW,CAACZ,UAAAA;AAChCa,gCAAOd,SAASC,KAAAA,CAAAA;IAClB,CAAA;EACF;EAEQH,WAAWb,MAAoB;AACrC,UAAMe,WAAW,8BAAOC,UAAAA;AAhE5B;AAiEM,YAAMG,UAAUH,MAAMC;AACtB,cAAQE,QAAQD,MAAI;QAClB,KAAK,YAAY;AACf,gBAAMC,WAAwBH,MAAMC;AACpC,gBAAM,EAAEI,SAASS,OAAOC,OAAOC,SAAQ,IAAKb;AAC5C,gBAAMc,UAASZ,UAAU,MAAMrB,KAAKkC,QAAQb,SAAS;YAAEc,WAAW;UAAO,CAAA,IAAKnC;AAC9E,cAAIiC,SAAQ;AACV,kBAAMG,SAA6B;cAAEf;cAASS;cAAOM,QAAQ,MAAMH,QAAOF,MAAMA,OAAOC,QAAAA;YAAU;AACjGL,iBAAKJ,YAAYa,MAAAA;UACnB;AACA;QACF;QACA,SAAS;AACP,gBAAMjB,WAAmBH,MAAMC;AAC/B,qBAAKhB,WAAL,mBAAauB,MAAM,kBAAkBC,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUP,UAAS,MAAM,CAAA,CAAA;AAC9F;QACF;MACF;IACF,GAnBiB;AAqBjBQ,SAAKC,iBAAiB,WAAW,CAACZ,UAAAA;AAChCa,gCAAOd,SAASC,KAAAA,CAAAA;IAClB,CAAA;EACF;AACF;AAjEalB;AAAN,IAAMA,iBAAN;;;ACxBP,oBAAyB;AAIzB,6BAA+B;AAG/B,0BAQO;AAEP,uBAAyB;;;ACblB,IAAMuC,2BAAqD;;;;;;;;;;;AD2C3D,IAAMC,gBAAN,MAAMA,sBAA8EC,sCAAAA;EAIjFC;EACAC,iBAA+C,CAAC;EAChDC,iBAA2C,CAAC;EAEpD,IAAIC,gBAAgB;AAClB,UAAMC,SAAS,KAAKC;AACpB,SAAKL,iBAAiB,KAAKA,kBAAkB,IAAIM,0BAA4B;MAAEC,cAAc;MAAM,GAAGH;IAAO,CAAA;AAC7G,WAAO,KAAKJ;EACd;EAEA,IAAIK,sBAAoE;AACtE,UAAMA,sBAA+C,CAAC;AACtD,WAAO;MAAEG,KAAK;MAAKC,KAAK,MAAO,KAAK;MAAG,GAAGJ;IAAoB;EAChE;EAEA,IAAIK,SAAiB;AACnB,eAAOC,wBAAS,KAAKC,OAAOF,MAAM;EACpC;EAEA,aAAaG,iBAAiBC,WAAmCC,wBAAkD;AACjH,UAAML,SAAS,IAAIM,OAAO,IAAIC,IAAI,qBAAoB,2CAAaC,QAAOC,UAAAA,CAAAA;AAC1ET,WAAOU,YAAY;MAAEN;MAAUO,MAAM;IAAa,CAAA;AAElD,UAAM,IAAIC,QAAQ,CAACC,SAASC,WAAAA;AAC1B,YAAMC,YAAY,wBAACC,UAAAA;AACjB,cAAMC,UAAUC,WAAW,MAAA;AACzBC,kBAAQC,IAAI,uBAAA;AACZpB,iBAAOqB,oBAAoB,WAAWN,SAAAA;AACtCD,iBAAO,SAAA;QACT,GAAG,GAAA;AACH,gBAAQE,MAAMM,KAAKX,MAAI;UACrB,KAAK,eAAe;AAClBY,yBAAaN,OAAAA;AACbjB,mBAAOqB,oBAAoB,WAAWN,SAAAA;AACtCF,oBAAQ,IAAA;AACR;UACF;UACA,SAAS;AACP,kBAAMW,UAAmBR,MAAMM;AAC/BH,oBAAQC,IAAI,yCAAyCK,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUF,SAAS,MAAM,CAAA,CAAA,EAAI;AAClH;UACF;QACF;MACF,GAnBkB;AAoBlBxB,aAAO2B,iBAAiB,WAAWZ,SAAAA;IACrC,CAAA;AAEA,UAAMa,SAAS,MAAMxC,cAAayC,OAAO;MAAEnC,QAAQ;QAAEoC,QAAQC;MAAyB;MAAG/B;IAAO,CAAA;AAChG,UAAM4B,OAAOI,MAAK;AAClB,WAAOJ;EACT;EAESK,cAAcC,KAAaC,UAA0E;AAC5G,WAAO,CAAA;EACT;EAESC,iBAAwC;AAC/C,WAAO,CAAA;EACT;EAESC,SAASC,QAAyD;AACzE,WAAO1B,QAAQC,QAAQ,CAAA,CAAE;EAC3B;EAES0B,gBAAgBL,KAAaC,UAA4E;AAChH,WAAO,CAAA;EACT;AACF;AAvE2F9C;AACzF,cADWD,eACcoD,iBAA0B;KAAI,yCAAMA;EAAeT;;AAC5E,cAFW3C,eAEcqD,uBAA8BV;AAFlD,IAAM3C,eAAN;AAAMA,eAAAA,aAAAA;MADZsD,qCAAAA;GACYtD,YAAAA;","names":["defaultPackageManifest","nodes","config","name","schema","NodeConfigSchema","modules","private","ArchivistConfigSchema","public","SentinelConfigSchema","PackageManifestPayloadSchema","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","WorkerBridgeConfigSchema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","configSchemas","defaultConfigSchema","creatableModule"]}
@@ -3,10 +3,7 @@ var __getProtoOf = Object.getPrototypeOf;
3
3
  var __reflectGet = Reflect.get;
4
4
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- var __publicField = (obj, key, value) => {
7
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- return value;
9
- };
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
7
  var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
11
8
 
12
9
  // src/defaultNodeManifest.ts
@@ -144,12 +141,8 @@ var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
144
141
  // src/WorkerBridge.ts
145
142
  function _ts_decorate(decorators, target, key, desc) {
146
143
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
147
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
148
- r = Reflect.decorate(decorators, target, key, desc);
149
- else
150
- for (var i = decorators.length - 1; i >= 0; i--)
151
- if (d = decorators[i])
152
- r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
144
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
145
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
153
146
  return c > 3 && r && Object.defineProperty(target, key, r), r;
154
147
  }
155
148
  __name(_ts_decorate, "_ts_decorate");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["ArchivistConfigSchema","PackageManifestPayloadSchema","NodeConfigSchema","SentinelConfigSchema","defaultPackageManifest","nodes","config","name","schema","modules","private","public","generateMnemonic","wordlist","forget","HDWallet","ManifestWrapper","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","assertEx","AbstractBridge","creatableModule","LRUCache","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","WorkerBridgeConfigSchema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","configSchemas","defaultConfigSchema","creatableModule"]}
1
+ {"version":3,"sources":["../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { PackageManifestPayload, PackageManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport { SentinelConfigSchema } from '@xyo-network/sentinel-model'\n\nexport const defaultPackageManifest: PackageManifestPayload = {\n nodes: [\n {\n config: {\n name: 'SimpleMemoryDapp',\n schema: NodeConfigSchema,\n },\n modules: {\n private: [\n {\n config: {\n name: 'ScratchArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n ],\n public: [\n {\n config: {\n name: 'SimpleArchivist',\n schema: ArchivistConfigSchema,\n },\n },\n {\n config: {\n name: 'SimpleSentinel',\n schema: SentinelConfigSchema,\n },\n },\n ],\n },\n },\n ],\n schema: PackageManifestPayloadSchema,\n}\n","import { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge'\n\nexport type QueryEvent = MessageEvent<QueryMessage>\n\nexport interface CreateNodeMessage extends Message<'createNode'> {\n manifest: PackageManifestPayload\n}\n\nexport type CreateNodeEvent = MessageEvent<CreateNodeMessage>\n\nexport interface NodeCreatedMessage extends Message<'nodeCreated'> {\n address: Address\n}\n\nexport class WorkerNodeHost {\n constructor(\n protected node: NodeInstance,\n protected logger?: Logger,\n ) {}\n\n static async create(config: PackageManifestPayload) {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic))\n const [node] = await manifest.loadNodes()\n const worker = new this(node)\n worker.attachNode(node)\n return worker\n }\n\n static start(logger?: Logger) {\n const listener = async (event: MessageEvent) => {\n switch (event.data.type) {\n case 'createNode': {\n const message: CreateNodeMessage = event.data\n const worker = await this.create(message.manifest)\n logger?.log(`createNode: ${worker.node.address}`)\n const response: NodeCreatedMessage = { address: worker.node.address, type: 'nodeCreated' }\n postMessage(response)\n break\n }\n default: {\n const message: Message = event.data\n logger?.debug(`Unknown Event (Static) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n\n private attachNode(node: NodeInstance) {\n const listener = async (event: MessageEvent) => {\n const message = event.data as Message\n switch (message.type) {\n case 'xyoQuery': {\n const message: QueryMessage = event.data\n const { address, msgId, query, payloads } = message\n const module = address ? await node.resolve(address, { direction: 'down' }) : node\n if (module) {\n const result: QueryResultMessage = { address, msgId, result: await module.query(query, payloads) }\n self.postMessage(result)\n }\n break\n }\n default: {\n const message: Message = event.data\n this.logger?.debug(`Unknown Event [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n\n self.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address } from '@xylabs/hex'\nimport { Promisable } from '@xylabs/promise'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport { BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n CacheConfig,\n creatableModule,\n ModuleConfig,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig'\n\nexport type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<\n TConfig,\n {\n worker?: Worker\n }\n>\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: Address\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: Address\n msgId?: string\n result: ModuleQueryResult\n}\n\n@creatableModule()\nexport class WorkerBridge<TParams extends WorkerBridgeParams = WorkerBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, WorkerBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = WorkerBridgeConfigSchema\n\n private _discoverCache?: LRUCache<string, Payload[]>\n private _targetConfigs: Record<string, ModuleConfig> = {}\n private _targetQueries: Record<string, string[]> = {}\n\n get discoverCache() {\n const config = this.discoverCacheConfig\n this._discoverCache = this._discoverCache ?? new LRUCache<string, Payload[]>({ ttlAutopurge: true, ...config })\n return this._discoverCache\n }\n\n get discoverCacheConfig(): LRUCache.Options<string, Payload[], unknown> {\n const discoverCacheConfig: CacheConfig | undefined = {}\n return { max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest as PackageManifestPayload) {\n const worker = new Worker(new URL('worker/Worker.ts', import.meta?.url ?? __filename))\n worker.postMessage({ manifest, type: 'createNode' })\n\n await new Promise((resolve, reject) => {\n const eventFunc = (event: MessageEvent) => {\n const timeout = setTimeout(() => {\n console.log('Node creation timeout')\n worker.removeEventListener('message', eventFunc)\n reject('Timeout')\n }, 1000)\n switch (event.data.type) {\n case 'nodeCreated': {\n clearTimeout(timeout)\n worker.removeEventListener('message', eventFunc)\n resolve(true)\n break\n }\n default: {\n const message: Message = event.data\n console.log(`Unknown Event (nodeCreated listener) [${JSON.stringify(event)}]: ${JSON.stringify(message, null, 2)}`)\n break\n }\n }\n }\n worker.addEventListener('message', eventFunc)\n })\n\n const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker })\n await bridge.start()\n return bridge\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<Address[]> {\n return []\n }\n\n override getRoots(_force?: boolean | undefined): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n return []\n }\n}\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\nexport const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["ArchivistConfigSchema","PackageManifestPayloadSchema","NodeConfigSchema","SentinelConfigSchema","defaultPackageManifest","nodes","config","name","schema","modules","private","public","generateMnemonic","wordlist","forget","HDWallet","ManifestWrapper","WorkerNodeHost","constructor","node","logger","create","config","mnemonic","generateMnemonic","wordlist","manifest","ManifestWrapper","HDWallet","fromPhrase","loadNodes","worker","attachNode","start","listener","event","data","type","message","log","address","response","postMessage","debug","JSON","stringify","self","addEventListener","forget","msgId","query","payloads","module","resolve","direction","result","assertEx","AbstractBridge","creatableModule","LRUCache","WorkerBridgeConfigSchema","WorkerBridge","AbstractBridge","_discoverCache","_targetConfigs","_targetQueries","discoverCache","config","discoverCacheConfig","LRUCache","ttlAutopurge","max","ttl","worker","assertEx","params","createWorkerNode","manifest","defaultPackageManifest","Worker","URL","url","__filename","postMessage","type","Promise","resolve","reject","eventFunc","event","timeout","setTimeout","console","log","removeEventListener","data","clearTimeout","message","JSON","stringify","addEventListener","bridge","create","schema","WorkerBridgeConfigSchema","start","exposeHandler","_id","_options","exposedHandler","getRoots","_force","unexposeHandler","configSchemas","defaultConfigSchema","creatableModule"]}
package/package.json CHANGED
@@ -17,22 +17,22 @@
17
17
  "@xylabs/logger": "^3.5.1",
18
18
  "@xylabs/object": "^3.5.1",
19
19
  "@xylabs/promise": "^3.5.1",
20
- "@xyo-network/account": "~2.104.0",
21
- "@xyo-network/archivist-model": "~2.104.0",
22
- "@xyo-network/boundwitness-model": "~2.104.0",
23
- "@xyo-network/bridge-abstract": "~2.104.0",
24
- "@xyo-network/bridge-model": "~2.104.0",
25
- "@xyo-network/manifest": "~2.104.0",
26
- "@xyo-network/manifest-model": "~2.104.0",
27
- "@xyo-network/module-model": "~2.104.0",
28
- "@xyo-network/node-model": "~2.104.0",
29
- "@xyo-network/payload-model": "~2.104.0",
30
- "@xyo-network/sentinel-model": "~2.104.0",
20
+ "@xyo-network/account": "~2.105.0-rc.1",
21
+ "@xyo-network/archivist-model": "~2.105.0-rc.1",
22
+ "@xyo-network/boundwitness-model": "~2.105.0-rc.1",
23
+ "@xyo-network/bridge-abstract": "~2.105.0-rc.1",
24
+ "@xyo-network/bridge-model": "~2.105.0-rc.1",
25
+ "@xyo-network/manifest": "~2.105.0-rc.1",
26
+ "@xyo-network/manifest-model": "~2.105.0-rc.1",
27
+ "@xyo-network/module-model": "~2.105.0-rc.1",
28
+ "@xyo-network/node-model": "~2.105.0-rc.1",
29
+ "@xyo-network/payload-model": "~2.105.0-rc.1",
30
+ "@xyo-network/sentinel-model": "~2.105.0-rc.1",
31
31
  "lru-cache": "^10.2.2"
32
32
  },
33
33
  "devDependencies": {
34
- "@xylabs/ts-scripts-yarn3": "^3.10.4",
35
- "@xylabs/tsconfig": "^3.10.4",
34
+ "@xylabs/ts-scripts-yarn3": "^3.11.2",
35
+ "@xylabs/tsconfig": "^3.11.2",
36
36
  "typescript": "^5.4.5"
37
37
  },
38
38
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -65,6 +65,7 @@
65
65
  "test": "node --experimental-vm-modules ../../../../../../node_modules/.bin/jest ."
66
66
  },
67
67
  "sideEffects": false,
68
- "version": "2.104.0",
69
- "type": "module"
68
+ "version": "2.105.0-rc.1",
69
+ "type": "module",
70
+ "stableVersion": "2.104.1"
70
71
  }