@xyo-network/bridge-worker 2.110.16 → 2.110.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/browser/WorkerBridge.d.cts +1 -1
  2. package/dist/browser/WorkerBridge.d.mts +1 -1
  3. package/dist/browser/WorkerBridge.d.ts +1 -1
  4. package/dist/browser/docsEntry.d.cts +3 -3
  5. package/dist/browser/docsEntry.d.mts +3 -3
  6. package/dist/browser/docsEntry.d.ts +3 -3
  7. package/dist/browser/index.cjs.map +1 -1
  8. package/dist/browser/index.d.cts +4 -4
  9. package/dist/browser/index.d.mts +4 -4
  10. package/dist/browser/index.d.ts +4 -4
  11. package/dist/browser/index.js.map +1 -1
  12. package/dist/browser/worker/WorkerNodeHost.d.cts +1 -1
  13. package/dist/browser/worker/WorkerNodeHost.d.mts +1 -1
  14. package/dist/browser/worker/WorkerNodeHost.d.ts +1 -1
  15. package/dist/browser/worker/index.d.cts +1 -1
  16. package/dist/browser/worker/index.d.mts +1 -1
  17. package/dist/browser/worker/index.d.ts +1 -1
  18. package/dist/neutral/WorkerBridge.d.cts +1 -1
  19. package/dist/neutral/WorkerBridge.d.mts +1 -1
  20. package/dist/neutral/WorkerBridge.d.ts +1 -1
  21. package/dist/neutral/docsEntry.d.cts +3 -3
  22. package/dist/neutral/docsEntry.d.mts +3 -3
  23. package/dist/neutral/docsEntry.d.ts +3 -3
  24. package/dist/neutral/index.cjs.map +1 -1
  25. package/dist/neutral/index.d.cts +4 -4
  26. package/dist/neutral/index.d.mts +4 -4
  27. package/dist/neutral/index.d.ts +4 -4
  28. package/dist/neutral/index.js.map +1 -1
  29. package/dist/neutral/worker/WorkerNodeHost.d.cts +1 -1
  30. package/dist/neutral/worker/WorkerNodeHost.d.mts +1 -1
  31. package/dist/neutral/worker/WorkerNodeHost.d.ts +1 -1
  32. package/dist/neutral/worker/index.d.cts +1 -1
  33. package/dist/neutral/worker/index.d.mts +1 -1
  34. package/dist/neutral/worker/index.d.ts +1 -1
  35. package/dist/node/WorkerBridge.d.cts +1 -1
  36. package/dist/node/WorkerBridge.d.mts +1 -1
  37. package/dist/node/WorkerBridge.d.ts +1 -1
  38. package/dist/node/docsEntry.d.cts +3 -3
  39. package/dist/node/docsEntry.d.mts +3 -3
  40. package/dist/node/docsEntry.d.ts +3 -3
  41. package/dist/node/index.cjs.map +1 -1
  42. package/dist/node/index.d.cts +4 -4
  43. package/dist/node/index.d.mts +4 -4
  44. package/dist/node/index.d.ts +4 -4
  45. package/dist/node/index.js.map +1 -1
  46. package/dist/node/worker/WorkerNodeHost.d.cts +1 -1
  47. package/dist/node/worker/WorkerNodeHost.d.mts +1 -1
  48. package/dist/node/worker/WorkerNodeHost.d.ts +1 -1
  49. package/dist/node/worker/index.d.cts +1 -1
  50. package/dist/node/worker/index.d.mts +1 -1
  51. package/dist/node/worker/index.d.ts +1 -1
  52. package/package.json +12 -12
  53. package/src/WorkerBridge.ts +2 -2
  54. package/src/docsEntry.ts +3 -3
  55. package/src/index.ts +4 -4
  56. package/src/worker/Worker.ts +1 -1
  57. package/src/worker/WorkerNodeHost.ts +1 -1
  58. package/src/worker/index.ts +1 -1
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -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.js'\nexport * from './worker/index.js'\nexport * from './WorkerBridge.js'\nexport * from './WorkerBridgeConfig.js'\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'\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.js'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.js'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'\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","mod","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"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest.ts'\nexport * from './worker/index.ts'\nexport * from './WorkerBridge.ts'\nexport * from './WorkerBridgeConfig.ts'\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'\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.ts'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.ts'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\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","mod","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"]}
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -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'\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.js'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.js'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'\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","mod","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"]}
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'\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.ts'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.ts'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\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,SAASA,6BAA6B;AACtC,SAAiCC,oCAAoC;AACrE,SAASC,wBAAwB;AACjC,SAASC,4BAA4B;AAE9B,IAAMC,yBAAiD;EAC5DC,OAAO;IACL;MACEC,QAAQ;QACNC,MAAM;QACNC,QAAQN;MACV;MACAO,SAAS;QACPC,SAAS;UACP;YACEJ,QAAQ;cACNC,MAAM;cACNC,QAAQR;YACV;UACF;;QAEFW,QAAQ;UACN;YACEL,QAAQ;cACNC,MAAM;cACNC,QAAQR;YACV;UACF;UACA;YACEM,QAAQ;cACNC,MAAM;cACNC,QAAQL;YACV;UACF;;MAEJ;IACF;;EAEFK,QAAQP;AACV;;;ACvCA,SAASW,wBAAwB;AACjC,SAASC,gBAAgB;AACzB,SAASC,cAAc;AAGvB,SAASC,gBAAgB;AACzB,SAASC,uBAA+C;AAiBjD,IAAMC,iBAAN,MAAMA;EAvBb,OAuBaA;;;;;EACXC,YACYC,MACAC,QACV;SAFUD,OAAAA;SACAC,SAAAA;EACT;EAEH,aAAaC,OAAOC,QAAgC;AAClD,UAAMC,WAAWC,iBAAiBC,UAAU,GAAA;AAC5C,UAAMC,WAAW,IAAIC,gBAAgBL,QAAQ,MAAMM,SAASC,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,kBAAQmB,IAAI,eAAeR,OAAOZ,KAAKqB,OAAO,EAAE;AAChD,gBAAMC,WAA+B;YAAED,SAAST,OAAOZ,KAAKqB;YAASH,MAAM;UAAc;AACzFK,sBAAYD,QAAAA;AACZ;QACF;QACA,SAAS;AACP,gBAAMH,UAAmBH,MAAMC;AAC/BhB,kBAAQuB,MAAM,2BAA2BC,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUP,SAAS,MAAM,CAAA,CAAA,EAAI;AACtG;QACF;MACF;IACF,GAhBiB;AAkBjBQ,SAAKC,iBAAiB,WAAW,CAACZ,UAAAA;AAChCa,aAAOd,SAASC,KAAAA,CAAAA;IAClB,CAAA;EACF;EAEQH,WAAWb,MAAoB;AACrC,UAAMe,WAAW,8BAAOC,UAAAA;AACtB,YAAMG,UAAUH,MAAMC;AACtB,cAAQE,QAAQD,MAAI;QAClB,KAAK,YAAY;AACf,gBAAMC,WAAwBH,MAAMC;AACpC,gBAAM,EAAEI,SAASS,OAAOC,OAAOC,SAAQ,IAAKb;AAC5C,gBAAMc,MAAMZ,UAAU,MAAMrB,KAAKkC,QAAQb,SAAS;YAAEc,WAAW;UAAO,CAAA,IAAKnC;AAC3E,cAAIiC,KAAK;AACP,kBAAMG,SAA6B;cAAEf;cAASS;cAAOM,QAAQ,MAAMH,IAAIF,MAAMA,OAAOC,QAAAA;YAAU;AAC9FL,iBAAKJ,YAAYa,MAAAA;UACnB;AACA;QACF;QACA,SAAS;AACP,gBAAMjB,WAAmBH,MAAMC;AAC/B,eAAKhB,QAAQuB,MAAM,kBAAkBC,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUP,UAAS,MAAM,CAAA,CAAA,EAAI;AAClG;QACF;MACF;IACF,GAnBiB;AAqBjBQ,SAAKC,iBAAiB,WAAW,CAACZ,UAAAA;AAChCa,aAAOd,SAASC,KAAAA,CAAAA;IAClB,CAAA;EACF;AACF;;;ACxFA,SAASqB,gBAAgB;AAIzB,SAASC,sBAAsB;AAG/B,SAGEC,uBAKK;AAEP,SAASC,gBAAgB;;;ACblB,IAAMC,2BAAqD;;;;;;;;;;AD2C3D,IAAMC,eAAN,MAAMA,sBAA8EC,eAAAA;SAAAA;;;EACzF,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EAE/CE;EACAC,iBAA+C,CAAC;EAChDC,iBAA2C,CAAC;EAEpD,IAAIC,gBAAgB;AAClB,UAAMC,SAAS,KAAKC;AACpB,SAAKL,iBAAiB,KAAKA,kBAAkB,IAAIM,SAA4B;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,WAAOC,SAAS,KAAKC,OAAOF,MAAM;EACpC;EAEA,aAAaG,iBAAiBC,WAAmCC,wBAAkD;AACjH,UAAML,SAAS,IAAIM,OAAO,IAAIC,IAAI,oBAAoB,aAAaC,OAAOC,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,MAAM3C,cAAa4C,OAAO;MAAEnC,QAAQ;QAAEoC,QAAQ1C;MAAyB;MAAGY;IAAO,CAAA;AAChG,UAAM4B,OAAOG,MAAK;AAClB,WAAOH;EACT;EAESI,cAAcC,KAAaC,UAA0E;AAC5G,WAAO,CAAA;EACT;EAESC,iBAAwC;AAC/C,WAAO,CAAA;EACT;EAESC,SAASC,QAAyD;AACzE,WAAOzB,QAAQC,QAAQ,CAAA,CAAE;EAC3B;EAESyB,gBAAgBL,KAAaC,UAA4E;AAChH,WAAO,CAAA;EACT;AACF;;;;","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","mod","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"]}
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -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.js'\nexport * from './worker/index.js'\nexport * from './WorkerBridge.js'\nexport * from './WorkerBridgeConfig.js'\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'\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.js'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.js'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'\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","mod","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"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest.ts'\nexport * from './worker/index.ts'\nexport * from './WorkerBridge.ts'\nexport * from './WorkerBridgeConfig.ts'\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'\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.ts'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.ts'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\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","mod","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"]}
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -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'\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.js'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.js'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'\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","mod","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"]}
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'\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.ts'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.ts'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\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,SAASA,6BAA6B;AACtC,SAAiCC,oCAAoC;AACrE,SAASC,wBAAwB;AACjC,SAASC,4BAA4B;AAE9B,IAAMC,yBAAiD;EAC5DC,OAAO;IACL;MACEC,QAAQ;QACNC,MAAM;QACNC,QAAQN;MACV;MACAO,SAAS;QACPC,SAAS;UACP;YACEJ,QAAQ;cACNC,MAAM;cACNC,QAAQR;YACV;UACF;;QAEFW,QAAQ;UACN;YACEL,QAAQ;cACNC,MAAM;cACNC,QAAQR;YACV;UACF;UACA;YACEM,QAAQ;cACNC,MAAM;cACNC,QAAQL;YACV;UACF;;MAEJ;IACF;;EAEFK,QAAQP;AACV;;;ACvCA,SAASW,wBAAwB;AACjC,SAASC,gBAAgB;AACzB,SAASC,cAAc;AAGvB,SAASC,gBAAgB;AACzB,SAASC,uBAA+C;AAiBjD,IAAMC,iBAAN,MAAMA;EAvBb,OAuBaA;;;;;EACXC,YACYC,MACAC,QACV;SAFUD,OAAAA;SACAC,SAAAA;EACT;EAEH,aAAaC,OAAOC,QAAgC;AAClD,UAAMC,WAAWC,iBAAiBC,UAAU,GAAA;AAC5C,UAAMC,WAAW,IAAIC,gBAAgBL,QAAQ,MAAMM,SAASC,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,kBAAQmB,IAAI,eAAeR,OAAOZ,KAAKqB,OAAO,EAAE;AAChD,gBAAMC,WAA+B;YAAED,SAAST,OAAOZ,KAAKqB;YAASH,MAAM;UAAc;AACzFK,sBAAYD,QAAAA;AACZ;QACF;QACA,SAAS;AACP,gBAAMH,UAAmBH,MAAMC;AAC/BhB,kBAAQuB,MAAM,2BAA2BC,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUP,SAAS,MAAM,CAAA,CAAA,EAAI;AACtG;QACF;MACF;IACF,GAhBiB;AAkBjBQ,SAAKC,iBAAiB,WAAW,CAACZ,UAAAA;AAChCa,aAAOd,SAASC,KAAAA,CAAAA;IAClB,CAAA;EACF;EAEQH,WAAWb,MAAoB;AACrC,UAAMe,WAAW,8BAAOC,UAAAA;AACtB,YAAMG,UAAUH,MAAMC;AACtB,cAAQE,QAAQD,MAAI;QAClB,KAAK,YAAY;AACf,gBAAMC,WAAwBH,MAAMC;AACpC,gBAAM,EAAEI,SAASS,OAAOC,OAAOC,SAAQ,IAAKb;AAC5C,gBAAMc,MAAMZ,UAAU,MAAMrB,KAAKkC,QAAQb,SAAS;YAAEc,WAAW;UAAO,CAAA,IAAKnC;AAC3E,cAAIiC,KAAK;AACP,kBAAMG,SAA6B;cAAEf;cAASS;cAAOM,QAAQ,MAAMH,IAAIF,MAAMA,OAAOC,QAAAA;YAAU;AAC9FL,iBAAKJ,YAAYa,MAAAA;UACnB;AACA;QACF;QACA,SAAS;AACP,gBAAMjB,WAAmBH,MAAMC;AAC/B,eAAKhB,QAAQuB,MAAM,kBAAkBC,KAAKC,UAAUV,KAAAA,CAAAA,MAAYS,KAAKC,UAAUP,UAAS,MAAM,CAAA,CAAA,EAAI;AAClG;QACF;MACF;IACF,GAnBiB;AAqBjBQ,SAAKC,iBAAiB,WAAW,CAACZ,UAAAA;AAChCa,aAAOd,SAASC,KAAAA,CAAAA;IAClB,CAAA;EACF;AACF;;;ACxFA,SAASqB,gBAAgB;AAIzB,SAASC,sBAAsB;AAG/B,SAGEC,uBAKK;AAEP,SAASC,gBAAgB;;;ACblB,IAAMC,2BAAqD;;;;;;;;;;AD2C3D,IAAMC,eAAN,MAAMA,sBAA8EC,eAAAA;SAAAA;;;EACzF,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EAE/CE;EACAC,iBAA+C,CAAC;EAChDC,iBAA2C,CAAC;EAEpD,IAAIC,gBAAgB;AAClB,UAAMC,SAAS,KAAKC;AACpB,SAAKL,iBAAiB,KAAKA,kBAAkB,IAAIM,SAA4B;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,WAAOC,SAAS,KAAKC,OAAOF,MAAM;EACpC;EAEA,aAAaG,iBAAiBC,WAAmCC,wBAAkD;AACjH,UAAML,SAAS,IAAIM,OAAO,IAAIC,IAAI,oBAAoB,aAAaC,OAAOC,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,MAAM3C,cAAa4C,OAAO;MAAEnC,QAAQ;QAAEoC,QAAQ1C;MAAyB;MAAGY;IAAO,CAAA;AAChG,UAAM4B,OAAOG,MAAK;AAClB,WAAOH;EACT;EAESI,cAAcC,KAAaC,UAA0E;AAC5G,WAAO,CAAA;EACT;EAESC,iBAAwC;AAC/C,WAAO,CAAA;EACT;EAESC,SAASC,QAAyD;AACzE,WAAOzB,QAAQC,QAAQ,CAAA,CAAE;EAC3B;EAESyB,gBAAgBL,KAAaC,UAA4E;AAChH,WAAO,CAAA;EACT;AACF;;;;","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","mod","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"]}
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -7,7 +7,7 @@ import { PackageManifestPayload } from '@xyo-network/manifest-model';
7
7
  import { AnyConfigSchema, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
8
8
  import { Payload, Schema } from '@xyo-network/payload-model';
9
9
  import { LRUCache } from 'lru-cache';
10
- import { WorkerBridgeConfig } from './WorkerBridgeConfig.js';
10
+ import { WorkerBridgeConfig } from './WorkerBridgeConfig.ts';
11
11
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<TConfig, {
12
12
  worker?: Worker;
13
13
  }>;
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './WorkerBridge.js';
3
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './WorkerBridge.ts';
3
+ export * from './WorkerBridgeConfig.ts';
4
4
  //# sourceMappingURL=docsEntry.d.ts.map
@@ -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.js'\nexport * from './worker/index.js'\nexport * from './WorkerBridge.js'\nexport * from './WorkerBridgeConfig.js'\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'\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.js'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.js'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'\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","mod","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"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/defaultNodeManifest.ts","../../src/worker/WorkerNodeHost.ts","../../src/WorkerBridge.ts","../../src/WorkerBridgeConfig.ts"],"sourcesContent":["export * from './defaultNodeManifest.ts'\nexport * from './worker/index.ts'\nexport * from './WorkerBridge.ts'\nexport * from './WorkerBridgeConfig.ts'\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'\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.ts'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.ts'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\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","mod","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"]}
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
- export * from './defaultNodeManifest.js';
2
- export * from './worker/index.js';
3
- export * from './WorkerBridge.js';
4
- export * from './WorkerBridgeConfig.js';
1
+ export * from './defaultNodeManifest.ts';
2
+ export * from './worker/index.ts';
3
+ export * from './WorkerBridge.ts';
4
+ export * from './WorkerBridgeConfig.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -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'\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.js'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.js'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'\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","mod","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"]}
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'\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.ts'\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 mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = { address, msgId, result: await mod.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.ts'\nimport { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\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","mod","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"]}
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -2,7 +2,7 @@ import { Address } from '@xylabs/hex';
2
2
  import { Logger } from '@xylabs/logger';
3
3
  import { PackageManifestPayload } from '@xyo-network/manifest';
4
4
  import { NodeInstance } from '@xyo-network/node-model';
5
- import { Message, QueryMessage } from '../WorkerBridge.js';
5
+ import { Message, QueryMessage } from '../WorkerBridge.ts';
6
6
  export type QueryEvent = MessageEvent<QueryMessage>;
7
7
  export interface CreateNodeMessage extends Message<'createNode'> {
8
8
  manifest: PackageManifestPayload;
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './WorkerNodeHost.js';
1
+ export * from './WorkerNodeHost.ts';
2
2
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -17,17 +17,17 @@
17
17
  "@xylabs/logger": "^3.6.6",
18
18
  "@xylabs/object": "^3.6.6",
19
19
  "@xylabs/promise": "^3.6.6",
20
- "@xyo-network/account": "^2.110.16",
21
- "@xyo-network/archivist-model": "^2.110.16",
22
- "@xyo-network/boundwitness-model": "^2.110.16",
23
- "@xyo-network/bridge-abstract": "^2.110.16",
24
- "@xyo-network/bridge-model": "^2.110.16",
25
- "@xyo-network/manifest": "^2.110.16",
26
- "@xyo-network/manifest-model": "^2.110.16",
27
- "@xyo-network/module-model": "^2.110.16",
28
- "@xyo-network/node-model": "^2.110.16",
29
- "@xyo-network/payload-model": "^2.110.16",
30
- "@xyo-network/sentinel-model": "^2.110.16",
20
+ "@xyo-network/account": "^2.110.17",
21
+ "@xyo-network/archivist-model": "^2.110.17",
22
+ "@xyo-network/boundwitness-model": "^2.110.17",
23
+ "@xyo-network/bridge-abstract": "^2.110.17",
24
+ "@xyo-network/bridge-model": "^2.110.17",
25
+ "@xyo-network/manifest": "^2.110.17",
26
+ "@xyo-network/manifest-model": "^2.110.17",
27
+ "@xyo-network/module-model": "^2.110.17",
28
+ "@xyo-network/node-model": "^2.110.17",
29
+ "@xyo-network/payload-model": "^2.110.17",
30
+ "@xyo-network/sentinel-model": "^2.110.17",
31
31
  "lru-cache": "^11.0.0"
32
32
  },
33
33
  "devDependencies": {
@@ -66,6 +66,6 @@
66
66
  "test": "node --experimental-vm-modules ../../../../../../node_modules/.bin/jest ."
67
67
  },
68
68
  "sideEffects": false,
69
- "version": "2.110.16",
69
+ "version": "2.110.17",
70
70
  "type": "module"
71
71
  }
@@ -17,8 +17,8 @@ import {
17
17
  import { Payload, Schema } from '@xyo-network/payload-model'
18
18
  import { LRUCache } from 'lru-cache'
19
19
 
20
- import { defaultPackageManifest } from './defaultNodeManifest.js'
21
- import { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.js'
20
+ import { defaultPackageManifest } from './defaultNodeManifest.ts'
21
+ import { WorkerBridgeConfig, WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'
22
22
 
23
23
  export type WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> = ModuleParams<
24
24
  TConfig,
package/src/docsEntry.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /* Used to exclude the worker code for typedoc */
2
- export * from './defaultNodeManifest.js'
3
- export * from './WorkerBridge.js'
4
- export * from './WorkerBridgeConfig.js'
2
+ export * from './defaultNodeManifest.ts'
3
+ export * from './WorkerBridge.ts'
4
+ export * from './WorkerBridgeConfig.ts'
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './defaultNodeManifest.js'
2
- export * from './worker/index.js'
3
- export * from './WorkerBridge.js'
4
- export * from './WorkerBridgeConfig.js'
1
+ export * from './defaultNodeManifest.ts'
2
+ export * from './worker/index.ts'
3
+ export * from './WorkerBridge.ts'
4
+ export * from './WorkerBridgeConfig.ts'
@@ -1,3 +1,3 @@
1
- import { WorkerNodeHost } from './WorkerNodeHost.js'
1
+ import { WorkerNodeHost } from './WorkerNodeHost.ts'
2
2
 
3
3
  WorkerNodeHost.start()
@@ -7,7 +7,7 @@ import { HDWallet } from '@xyo-network/account'
7
7
  import { ManifestWrapper, PackageManifestPayload } from '@xyo-network/manifest'
8
8
  import { NodeInstance } from '@xyo-network/node-model'
9
9
 
10
- import { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge.js'
10
+ import { Message, QueryMessage, QueryResultMessage } from '../WorkerBridge.ts'
11
11
 
12
12
  export type QueryEvent = MessageEvent<QueryMessage>
13
13
 
@@ -1 +1 @@
1
- export * from './WorkerNodeHost.js'
1
+ export * from './WorkerNodeHost.ts'