@xyo-network/bridge-worker 6.1.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
import type { EmptyObject } from '@xylabs/sdk-js';
|
|
2
|
+
import { zodAsFactory, zodIsFactory, zodToFactory } from '@xylabs/sdk-js';
|
|
2
3
|
import type { BridgeConfig } from '@xyo-network/bridge-model';
|
|
4
|
+
import { BridgeConfigZod } from '@xyo-network/bridge-model';
|
|
5
|
+
import * as z from 'zod/mini';
|
|
3
6
|
export declare const WorkerBridgeConfigSchema: 'network.xyo.bridge.worker.config' & {
|
|
4
7
|
readonly __schema: true;
|
|
5
8
|
};
|
|
6
9
|
export type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema;
|
|
10
|
+
export declare const WorkerBridgeConfigZod: z.ZodMiniObject<Omit<(typeof BridgeConfigZod)['shape'], 'schema'> & {
|
|
11
|
+
schema: z.ZodMiniLiteral<WorkerBridgeConfigSchema>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type WorkerBridgeConfigBase = z.infer<typeof WorkerBridgeConfigZod>;
|
|
14
|
+
export declare const isWorkerBridgeConfig: ReturnType<typeof zodIsFactory<WorkerBridgeConfigBase>>;
|
|
15
|
+
export declare const asWorkerBridgeConfig: ReturnType<typeof zodAsFactory<WorkerBridgeConfigBase>>;
|
|
16
|
+
export declare const toWorkerBridgeConfig: ReturnType<typeof zodToFactory<WorkerBridgeConfigBase>>;
|
|
7
17
|
export type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>;
|
|
8
18
|
//# sourceMappingURL=WorkerBridgeConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/WorkerBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"WorkerBridgeConfig.d.ts","sourceRoot":"","sources":["../../src/WorkerBridgeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EACL,YAAY,EAAE,YAAY,EAAE,YAAY,EACzC,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,eAAO,MAAM,wBAAwB,EAAE,kCAAkC,GAAG;IAC1E,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAC6B,CAAA;AACtD,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,aAAa,CACjD,IAAI,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAA;CAAE,EAC1G,CAAC,CAAC,IAAI,CAAC,MAAM,CAC+D,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE1E,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,sBAAsB,CAAC,CAAuC,CAAA;AAChI,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,sBAAsB,CAAC,CAA+D,CAAA;AACxJ,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,sBAAsB,CAAC,CAA+D,CAAA;AAExJ,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -142,8 +142,19 @@ import { creatableModule } from "@xyo-network/module-model";
|
|
|
142
142
|
import { LRUCache } from "lru-cache";
|
|
143
143
|
|
|
144
144
|
// src/WorkerBridgeConfig.ts
|
|
145
|
+
import {
|
|
146
|
+
zodAsFactory,
|
|
147
|
+
zodIsFactory,
|
|
148
|
+
zodToFactory
|
|
149
|
+
} from "@xylabs/sdk-js";
|
|
150
|
+
import { BridgeConfigZod } from "@xyo-network/bridge-model";
|
|
145
151
|
import { asSchema } from "@xyo-network/sdk-protocol-js";
|
|
152
|
+
import * as z from "zod/mini";
|
|
146
153
|
var WorkerBridgeConfigSchema = asSchema("network.xyo.bridge.worker.config", true);
|
|
154
|
+
var WorkerBridgeConfigZod = z.extend(BridgeConfigZod, { schema: z.literal(WorkerBridgeConfigSchema) });
|
|
155
|
+
var isWorkerBridgeConfig = zodIsFactory(WorkerBridgeConfigZod);
|
|
156
|
+
var asWorkerBridgeConfig = zodAsFactory(WorkerBridgeConfigZod, "asWorkerBridgeConfig");
|
|
157
|
+
var toWorkerBridgeConfig = zodToFactory(WorkerBridgeConfigZod, "toWorkerBridgeConfig");
|
|
147
158
|
|
|
148
159
|
// src/WorkerBridge.ts
|
|
149
160
|
var WorkerBridge = class extends AbstractBridge {
|
|
@@ -217,7 +228,11 @@ WorkerBridge = __decorateClass([
|
|
|
217
228
|
export {
|
|
218
229
|
WorkerBridge,
|
|
219
230
|
WorkerBridgeConfigSchema,
|
|
231
|
+
WorkerBridgeConfigZod,
|
|
220
232
|
WorkerNodeHost,
|
|
221
|
-
|
|
233
|
+
asWorkerBridgeConfig,
|
|
234
|
+
defaultPackageManifest,
|
|
235
|
+
isWorkerBridgeConfig,
|
|
236
|
+
toWorkerBridgeConfig
|
|
222
237
|
};
|
|
223
238
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/defaultNodeManifest.ts", "../../src/worker/WorkerNodeHost.ts", "../../src/WorkerBridge.ts", "../../src/WorkerBridgeConfig.ts"],
|
|
4
|
-
"sourcesContent": ["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport type { PackageManifestPayload } from '@xyo-network/sdk-protocol-js'\nimport { PackageManifestPayloadSchema } from '@xyo-network/sdk-protocol-js'\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", "/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\nimport { generateMnemonic } from '@scure/bip39'\nimport { wordlist } from '@scure/bip39/wordlists/english.js'\nimport type { Logger } from '@xylabs/sdk-js'\nimport { forget } from '@xylabs/sdk-js'\nimport { ManifestWrapper } from '@xyo-network/manifest-wrapper'\nimport { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'\nimport type { ModuleFactoryLocatorInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport type { PackageManifestPayload, XyoAddress } from '@xyo-network/sdk-protocol-js'\nimport { HDWallet } from '@xyo-network/sdk-protocol-js'\n\nimport type {\n Message, QueryMessage, QueryResultMessage,\n} 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: XyoAddress\n}\n\nexport class WorkerNodeHost {\n protected logger?: Logger\n protected node: NodeInstance\n\n constructor(\n node: NodeInstance,\n logger?: Logger,\n ) {\n this.node = node\n this.logger = logger\n }\n\n static async create(config: PackageManifestPayload, locator: ModuleFactoryLocatorInstance): Promise<WorkerNodeHost> {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic), locator)\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): void {\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, new ModuleFactoryLocator())\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 globalThis.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 {\n address, msgId, query, payloads,\n } = message\n const mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = {\n address, msgId, result: await mod.query(query, payloads),\n }\n globalThis.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 globalThis.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n", "import type { Promisable } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport type {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} from '@xyo-network/bridge-model'\nimport type {\n AnyConfigSchema,\n CacheConfig,\n ModuleConfig,\n ModuleInstance,\n ModuleQueryResult,\n QueryableModuleParams,\n} from '@xyo-network/module-model'\nimport { creatableModule } from '@xyo-network/module-model'\nimport type {\n PackageManifestPayload, Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol-js'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest.ts'\nimport type { WorkerBridgeConfig } from './WorkerBridgeConfig.ts'\nimport { WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\n\nexport interface WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> extends QueryableModuleParams<\n TConfig\n> {\n worker?: Worker\n}\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: XyoAddress\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: XyoAddress\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(): LRUCache<string, Payload[]> {\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 {\n max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig,\n }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest): Promise<WorkerBridge<WorkerBridgeParams<AnyConfigSchema<WorkerBridgeConfig>>>> {\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(new Error('Timeout'))\n }, 1000)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\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): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<XyoAddress[]> {\n return []\n }\n\n override getRoots(_force?: boolean): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]> {\n return []\n }\n}\n", "import type { EmptyObject } from '@xylabs/sdk-js'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\nimport { asSchema } from '@xyo-network/sdk-protocol-js'\n\nexport const WorkerBridgeConfigSchema: 'network.xyo.bridge.worker.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.bridge.worker.config', true)\nexport type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { NodeConfigSchema } from '@xyo-network/node-model'\nimport type { PackageManifestPayload } from '@xyo-network/sdk-protocol-js'\nimport { PackageManifestPayloadSchema } from '@xyo-network/sdk-protocol-js'\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", "/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */\nimport { generateMnemonic } from '@scure/bip39'\nimport { wordlist } from '@scure/bip39/wordlists/english.js'\nimport type { Logger } from '@xylabs/sdk-js'\nimport { forget } from '@xylabs/sdk-js'\nimport { ManifestWrapper } from '@xyo-network/manifest-wrapper'\nimport { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'\nimport type { ModuleFactoryLocatorInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport type { PackageManifestPayload, XyoAddress } from '@xyo-network/sdk-protocol-js'\nimport { HDWallet } from '@xyo-network/sdk-protocol-js'\n\nimport type {\n Message, QueryMessage, QueryResultMessage,\n} 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: XyoAddress\n}\n\nexport class WorkerNodeHost {\n protected logger?: Logger\n protected node: NodeInstance\n\n constructor(\n node: NodeInstance,\n logger?: Logger,\n ) {\n this.node = node\n this.logger = logger\n }\n\n static async create(config: PackageManifestPayload, locator: ModuleFactoryLocatorInstance): Promise<WorkerNodeHost> {\n const mnemonic = generateMnemonic(wordlist, 256)\n const manifest = new ManifestWrapper(config, await HDWallet.fromPhrase(mnemonic), locator)\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): void {\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, new ModuleFactoryLocator())\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 globalThis.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 {\n address, msgId, query, payloads,\n } = message\n const mod = address ? await node.resolve(address, { direction: 'down' }) : node\n if (mod) {\n const result: QueryResultMessage = {\n address, msgId, result: await mod.query(query, payloads),\n }\n globalThis.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 globalThis.addEventListener('message', (event: MessageEvent) => {\n forget(listener(event))\n })\n }\n}\n", "import type { Promisable } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport type {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} from '@xyo-network/bridge-model'\nimport type {\n AnyConfigSchema,\n CacheConfig,\n ModuleConfig,\n ModuleInstance,\n ModuleQueryResult,\n QueryableModuleParams,\n} from '@xyo-network/module-model'\nimport { creatableModule } from '@xyo-network/module-model'\nimport type {\n PackageManifestPayload, Payload, QueryBoundWitness, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol-js'\nimport { LRUCache } from 'lru-cache'\n\nimport { defaultPackageManifest } from './defaultNodeManifest.ts'\nimport type { WorkerBridgeConfig } from './WorkerBridgeConfig.ts'\nimport { WorkerBridgeConfigSchema } from './WorkerBridgeConfig.ts'\n\nexport interface WorkerBridgeParams<TConfig extends AnyConfigSchema<WorkerBridgeConfig> = AnyConfigSchema<WorkerBridgeConfig>> extends QueryableModuleParams<\n TConfig\n> {\n worker?: Worker\n}\n\nexport interface Message<T extends string = string> {\n type: T\n}\n\nexport interface QueryMessage extends Message<'xyoQuery'> {\n address: XyoAddress\n msgId?: string\n payloads?: Payload[]\n query: QueryBoundWitness\n}\n\nexport interface QueryResultMessage {\n address: XyoAddress\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(): LRUCache<string, Payload[]> {\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 {\n max: 100, ttl: 1000 * 60 * 5, ...discoverCacheConfig,\n }\n }\n\n get worker(): Worker {\n return assertEx(this.params.worker)\n }\n\n static async createWorkerNode(manifest: PackageManifestPayload = defaultPackageManifest): Promise<WorkerBridge<WorkerBridgeParams<AnyConfigSchema<WorkerBridgeConfig>>>> {\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(new Error('Timeout'))\n }, 1000)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\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): Promisable<ModuleInstance[]> {\n return []\n }\n\n override exposedHandler(): Promisable<XyoAddress[]> {\n return []\n }\n\n override getRoots(_force?: boolean): Promise<ModuleInstance[]> {\n return Promise.resolve([])\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions): Promisable<ModuleInstance[]> {\n return []\n }\n}\n", "import type { EmptyObject } from '@xylabs/sdk-js'\nimport {\n zodAsFactory, zodIsFactory, zodToFactory,\n} from '@xylabs/sdk-js'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\nimport { BridgeConfigZod } from '@xyo-network/bridge-model'\nimport { asSchema } from '@xyo-network/sdk-protocol-js'\nimport * as z from 'zod/mini'\n\nexport const WorkerBridgeConfigSchema: 'network.xyo.bridge.worker.config' & {\n readonly __schema: true\n} = asSchema('network.xyo.bridge.worker.config', true)\nexport type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema\n\nexport const WorkerBridgeConfigZod: z.ZodMiniObject<\n Omit<(typeof BridgeConfigZod)['shape'], 'schema'> & { schema: z.ZodMiniLiteral<WorkerBridgeConfigSchema> },\n z.core.$strip\n> = z.extend(BridgeConfigZod, { schema: z.literal(WorkerBridgeConfigSchema) })\n\nexport type WorkerBridgeConfigBase = z.infer<typeof WorkerBridgeConfigZod>\n\nexport const isWorkerBridgeConfig: ReturnType<typeof zodIsFactory<WorkerBridgeConfigBase>> = zodIsFactory(WorkerBridgeConfigZod)\nexport const asWorkerBridgeConfig: ReturnType<typeof zodAsFactory<WorkerBridgeConfigBase>> = zodAsFactory(WorkerBridgeConfigZod, 'asWorkerBridgeConfig')\nexport const toWorkerBridgeConfig: ReturnType<typeof zodToFactory<WorkerBridgeConfigBase>> = zodToFactory(WorkerBridgeConfigZod, 'toWorkerBridgeConfig')\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA,SAAS,6BAA6B;AACtC,SAAS,wBAAwB;AAEjC,SAAS,oCAAoC;AAC7C,SAAS,4BAA4B;AAE9B,IAAM,yBAAiD;AAAA,EAC5D,OAAO;AAAA,IACL;AAAA,MACE,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,MACA,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,YACE,QAAQ;AAAA,cACN,MAAM;AAAA,cACN,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,YACE,QAAQ;AAAA,cACN,MAAM;AAAA,cACN,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UACA;AAAA,YACE,QAAQ;AAAA,cACN,MAAM;AAAA,cACN,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AACV;;;ACvCA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,cAAc;AACvB,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AAIrC,SAAS,gBAAgB;AAkBlB,IAAM,iBAAN,MAAqB;AAAA,EAChB;AAAA,EACA;AAAA,EAEV,YACE,MACA,QACA;AACA,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,aAAa,OAAO,QAAgC,SAAgE;AAClH,UAAM,WAAW,iBAAiB,UAAU,GAAG;AAC/C,UAAM,WAAW,IAAI,gBAAgB,QAAQ,MAAM,SAAS,WAAW,QAAQ,GAAG,OAAO;AACzF,UAAM,CAAC,IAAI,IAAI,MAAM,SAAS,UAAU;AACxC,UAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,WAAO,WAAW,IAAI;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,QAAuB;AAClC,UAAM,WAAW,OAAO,UAAwB;AAC9C,cAAQ,MAAM,KAAK,MAAM;AAAA,QACvB,KAAK,cAAc;AACjB,gBAAM,UAA6B,MAAM;AACzC,gBAAM,SAAS,MAAM,KAAK,OAAO,QAAQ,UAAU,IAAI,qBAAqB,CAAC;AAC7E,kBAAQ,IAAI,eAAe,OAAO,KAAK,OAAO,EAAE;AAChD,gBAAM,WAA+B,EAAE,SAAS,OAAO,KAAK,SAAS,MAAM,cAAc;AACzF,sBAAY,QAAQ;AACpB;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAM,UAAmB,MAAM;AAC/B,kBAAQ,MAAM,2BAA2B,KAAK,UAAU,KAAK,CAAC,MAAM,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC,EAAE;AACtG;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,eAAW,iBAAiB,WAAW,CAAC,UAAwB;AAC9D,aAAO,SAAS,KAAK,CAAC;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEQ,WAAW,MAAoB;AACrC,UAAM,WAAW,OAAO,UAAwB;AAC9C,YAAM,UAAU,MAAM;AACtB,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK,YAAY;AACf,gBAAMA,WAAwB,MAAM;AACpC,gBAAM;AAAA,YACJ;AAAA,YAAS;AAAA,YAAO;AAAA,YAAO;AAAA,UACzB,IAAIA;AACJ,gBAAM,MAAM,UAAU,MAAM,KAAK,QAAQ,SAAS,EAAE,WAAW,OAAO,CAAC,IAAI;AAC3E,cAAI,KAAK;AACP,kBAAM,SAA6B;AAAA,cACjC;AAAA,cAAS;AAAA,cAAO,QAAQ,MAAM,IAAI,MAAM,OAAO,QAAQ;AAAA,YACzD;AACA,uBAAW,YAAY,MAAM;AAAA,UAC/B;AACA;AAAA,QACF;AAAA,QACA,SAAS;AACP,gBAAMA,WAAmB,MAAM;AAC/B,eAAK,QAAQ,MAAM,kBAAkB,KAAK,UAAU,KAAK,CAAC,MAAM,KAAK,UAAUA,UAAS,MAAM,CAAC,CAAC,EAAE;AAClG;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,eAAW,iBAAiB,WAAW,CAAC,UAAwB;AAC9D,aAAO,SAAS,KAAK,CAAC;AAAA,IACxB,CAAC;AAAA,EACH;AACF;;;ACtGA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAY/B,SAAS,uBAAuB;AAIhC,SAAS,gBAAgB;;;ACjBzB;AAAA,EACE;AAAA,EAAc;AAAA,EAAc;AAAA,OACvB;AAEP,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AACzB,YAAY,OAAO;AAEZ,IAAM,2BAET,SAAS,oCAAoC,IAAI;AAG9C,IAAM,wBAGP,SAAO,iBAAiB,EAAE,QAAU,UAAQ,wBAAwB,EAAE,CAAC;AAItE,IAAM,uBAAgF,aAAa,qBAAqB;AACxH,IAAM,uBAAgF,aAAa,uBAAuB,sBAAsB;AAChJ,IAAM,uBAAgF,aAAa,uBAAuB,sBAAsB;;;ADyBhJ,IAAM,eAAN,cAAoF,eAAyD;AAAA,EAI1I;AAAA,EACA,iBAA+C,CAAC;AAAA,EAChD,iBAA2C,CAAC;AAAA,EAEpD,IAAI,gBAA6C;AAC/C,UAAM,SAAS,KAAK;AACpB,SAAK,iBAAiB,KAAK,kBAAkB,IAAI,SAA4B,EAAE,cAAc,MAAM,GAAG,OAAO,CAAC;AAC9G,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,sBAAoE;AACtE,UAAM,sBAA+C,CAAC;AACtD,WAAO;AAAA,MACL,KAAK;AAAA,MAAK,KAAK,MAAO,KAAK;AAAA,MAAG,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,IAAI,SAAiB;AACnB,WAAO,SAAS,KAAK,OAAO,MAAM;AAAA,EACpC;AAAA,EAEA,aAAa,iBAAiB,WAAmC,wBAAwG;AACvK,UAAM,SAAS,IAAI,OAAO,IAAI,IAAI,oBAAoB,aAAa,OAAO,UAAU,CAAC;AACrF,WAAO,YAAY,EAAE,UAAU,MAAM,aAAa,CAAC;AAEnD,UAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACrC,YAAM,YAAY,CAAC,UAAwB;AACzC,cAAM,UAAU,WAAW,MAAM;AAC/B,kBAAQ,IAAI,uBAAuB;AACnC,iBAAO,oBAAoB,WAAW,SAAS;AAC/C,iBAAO,IAAI,MAAM,SAAS,CAAC;AAAA,QAC7B,GAAG,GAAI;AAEP,gBAAQ,MAAM,KAAK,MAAM;AAAA,UACvB,KAAK,eAAe;AAClB,yBAAa,OAAO;AACpB,mBAAO,oBAAoB,WAAW,SAAS;AAC/C,oBAAQ,IAAI;AACZ;AAAA,UACF;AAAA,UACA,SAAS;AAEP,kBAAM,UAAmB,MAAM;AAC/B,oBAAQ,IAAI,yCAAyC,KAAK,UAAU,KAAK,CAAC,MAAM,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC,EAAE;AAClH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,iBAAiB,WAAW,SAAS;AAAA,IAC9C,CAAC;AAED,UAAM,SAAS,MAAM,aAAa,OAAO,EAAE,QAAQ,EAAE,QAAQ,yBAAyB,GAAG,OAAO,CAAC;AACjG,UAAM,OAAO,MAAM;AACnB,WAAO;AAAA,EACT;AAAA,EAES,cAAc,KAAa,UAA8D;AAChG,WAAO,CAAC;AAAA,EACV;AAAA,EAES,iBAA2C;AAClD,WAAO,CAAC;AAAA,EACV;AAAA,EAES,SAAS,QAA6C;AAC7D,WAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3B;AAAA,EAES,gBAAgB,KAAa,UAAgE;AACpG,WAAO,CAAC;AAAA,EACV;AACF;AA1EE,cADW,cACc,iBAA0B,CAAC,GAAG,uCAAM,kBAAe,wBAAwB;AACpG,cAFW,cAEc,uBAA8B;AAF5C,eAAN;AAAA,EADN,gBAAgB;AAAA,GACJ;",
|
|
6
6
|
"names": ["message"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/bridge-worker",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -34,33 +34,33 @@
|
|
|
34
34
|
"README.md"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@xyo-network/
|
|
38
|
-
"@xyo-network/
|
|
39
|
-
"@xyo-network/
|
|
40
|
-
"@xyo-network/
|
|
41
|
-
"@xyo-network/module-
|
|
42
|
-
"@xyo-network/
|
|
43
|
-
"@xyo-network/node-model": "~
|
|
44
|
-
"@xyo-network/sentinel-model": "~
|
|
37
|
+
"@xyo-network/bridge-abstract": "~7.0.0",
|
|
38
|
+
"@xyo-network/archivist-model": "~7.0.0",
|
|
39
|
+
"@xyo-network/manifest-wrapper": "~7.0.0",
|
|
40
|
+
"@xyo-network/bridge-model": "~7.0.0",
|
|
41
|
+
"@xyo-network/module-factory-locator": "~7.0.0",
|
|
42
|
+
"@xyo-network/module-model": "~7.0.0",
|
|
43
|
+
"@xyo-network/node-model": "~7.0.0",
|
|
44
|
+
"@xyo-network/sentinel-model": "~7.0.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@bitauth/libauth": "~3.0.0",
|
|
48
48
|
"@metamask/providers": "^22.1.1",
|
|
49
49
|
"@noble/post-quantum": "~0.6.1",
|
|
50
50
|
"@opentelemetry/api": "^1.9.1",
|
|
51
|
-
"@opentelemetry/sdk-trace-base": "^2.
|
|
51
|
+
"@opentelemetry/sdk-trace-base": "^2.8.0",
|
|
52
52
|
"@scure/base": "~2.2.0",
|
|
53
53
|
"@scure/bip39": "~2.2.0",
|
|
54
|
-
"@xylabs/geo": "^6.1.
|
|
55
|
-
"@xylabs/sdk-js": "^6.1.
|
|
56
|
-
"@xylabs/threads": "^6.1.
|
|
54
|
+
"@xylabs/geo": "^6.1.1",
|
|
55
|
+
"@xylabs/sdk-js": "^6.1.1",
|
|
56
|
+
"@xylabs/threads": "^6.1.1",
|
|
57
57
|
"@xylabs/toolchain": "^8.1.20",
|
|
58
58
|
"@xylabs/tsconfig": "^8.1.20",
|
|
59
|
-
"@xyo-network/sdk-protocol-js": "
|
|
59
|
+
"@xyo-network/sdk-protocol-js": "~7.0",
|
|
60
60
|
"ajv": "^8.20.0",
|
|
61
61
|
"async-mutex": "^0.5.0",
|
|
62
62
|
"debug": "~4.4.3",
|
|
63
|
-
"eslint": "^10.
|
|
63
|
+
"eslint": "^10.5.0",
|
|
64
64
|
"ethers": "^6.16.0",
|
|
65
65
|
"hash-wasm": "~4.12.0",
|
|
66
66
|
"idb": "^8.0.3",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"@xylabs/geo": "^6.0",
|
|
83
83
|
"@xylabs/sdk-js": "^6.0",
|
|
84
84
|
"@xylabs/threads": "^6.0",
|
|
85
|
-
"@xyo-network/sdk-protocol-js": "^
|
|
85
|
+
"@xyo-network/sdk-protocol-js": "^7.0",
|
|
86
86
|
"ajv": "^8.20",
|
|
87
87
|
"async-mutex": "^0.5",
|
|
88
88
|
"debug": "~4.4",
|