@xyo-network/bridge-worker 3.6.9 → 3.6.10

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,6 +1,6 @@
1
1
  import type { EmptyObject } from '@xylabs/object';
2
2
  import type { BridgeConfig } from '@xyo-network/bridge-model';
3
- export type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config';
4
- export declare const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema;
3
+ export declare const WorkerBridgeConfigSchema: "network.xyo.bridge.worker.config";
4
+ export type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema;
5
5
  export type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>;
6
6
  //# 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;AAE7D,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAA;AACzE,eAAO,MAAM,wBAAwB,EAAE,wBAA6D,CAAA;AAEpG,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,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,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,eAAO,MAAM,wBAAwB,EAAG,kCAA2C,CAAA;AACnF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA"}
@@ -1,5 +1,18 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __reflectGet = Reflect.get;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
15
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
3
16
 
4
17
  // src/defaultNodeManifest.ts
5
18
  import { ArchivistConfigSchema } from "@xyo-network/archivist-model";
@@ -49,11 +62,6 @@ import { forget } from "@xylabs/forget";
49
62
  import { HDWallet } from "@xyo-network/account";
50
63
  import { ManifestWrapper } from "@xyo-network/manifest";
51
64
  var WorkerNodeHost = class {
52
- static {
53
- __name(this, "WorkerNodeHost");
54
- }
55
- node;
56
- logger;
57
65
  constructor(node, logger) {
58
66
  this.node = node;
59
67
  this.logger = logger;
@@ -67,16 +75,13 @@ var WorkerNodeHost = class {
67
75
  return worker;
68
76
  }
69
77
  static start(logger) {
70
- const listener = /* @__PURE__ */ __name(async (event) => {
78
+ const listener = async (event) => {
71
79
  switch (event.data.type) {
72
80
  case "createNode": {
73
81
  const message = event.data;
74
82
  const worker = await this.create(message.manifest);
75
83
  logger?.log(`createNode: ${worker.node.address}`);
76
- const response = {
77
- address: worker.node.address,
78
- type: "nodeCreated"
79
- };
84
+ const response = { address: worker.node.address, type: "nodeCreated" };
80
85
  postMessage(response);
81
86
  break;
82
87
  }
@@ -86,21 +91,24 @@ var WorkerNodeHost = class {
86
91
  break;
87
92
  }
88
93
  }
89
- }, "listener");
94
+ };
90
95
  self.addEventListener("message", (event) => {
91
96
  forget(listener(event));
92
97
  });
93
98
  }
94
99
  attachNode(node) {
95
- const listener = /* @__PURE__ */ __name(async (event) => {
100
+ const listener = async (event) => {
96
101
  const message = event.data;
97
102
  switch (message.type) {
98
103
  case "xyoQuery": {
99
104
  const message2 = event.data;
100
- const { address, msgId, query, payloads } = message2;
101
- const mod = address ? await node.resolve(address, {
102
- direction: "down"
103
- }) : node;
105
+ const {
106
+ address,
107
+ msgId,
108
+ query,
109
+ payloads
110
+ } = message2;
111
+ const mod = address ? await node.resolve(address, { direction: "down" }) : node;
104
112
  if (mod) {
105
113
  const result = {
106
114
  address,
@@ -117,7 +125,7 @@ var WorkerNodeHost = class {
117
125
  break;
118
126
  }
119
127
  }
120
- }, "listener");
128
+ };
121
129
  self.addEventListener("message", (event) => {
122
130
  forget(listener(event));
123
131
  });
@@ -127,38 +135,22 @@ var WorkerNodeHost = class {
127
135
  // src/WorkerBridge.ts
128
136
  import { assertEx } from "@xylabs/assert";
129
137
  import { AbstractBridge } from "@xyo-network/bridge-abstract";
130
- import { creatableModule } from "@xyo-network/module-model";
138
+ import {
139
+ creatableModule
140
+ } from "@xyo-network/module-model";
131
141
  import { LRUCache } from "lru-cache";
132
142
 
133
143
  // src/WorkerBridgeConfig.ts
134
144
  var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
135
145
 
136
146
  // src/WorkerBridge.ts
137
- function _ts_decorate(decorators, target, key, desc) {
138
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
139
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
140
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
141
- return c > 3 && r && Object.defineProperty(target, key, r), r;
142
- }
143
- __name(_ts_decorate, "_ts_decorate");
144
- var WorkerBridge = class _WorkerBridge extends AbstractBridge {
145
- static {
146
- __name(this, "WorkerBridge");
147
- }
148
- static configSchemas = [
149
- ...super.configSchemas,
150
- WorkerBridgeConfigSchema
151
- ];
152
- static defaultConfigSchema = WorkerBridgeConfigSchema;
147
+ var WorkerBridge = class extends AbstractBridge {
153
148
  _discoverCache;
154
149
  _targetConfigs = {};
155
150
  _targetQueries = {};
156
151
  get discoverCache() {
157
152
  const config = this.discoverCacheConfig;
158
- this._discoverCache = this._discoverCache ?? new LRUCache({
159
- ttlAutopurge: true,
160
- ...config
161
- });
153
+ this._discoverCache = this._discoverCache ?? new LRUCache({ ttlAutopurge: true, ...config });
162
154
  return this._discoverCache;
163
155
  }
164
156
  get discoverCacheConfig() {
@@ -174,12 +166,9 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
174
166
  }
175
167
  static async createWorkerNode(manifest = defaultPackageManifest) {
176
168
  const worker = new Worker(new URL("worker/Worker.ts", import.meta?.url ?? __filename));
177
- worker.postMessage({
178
- manifest,
179
- type: "createNode"
180
- });
169
+ worker.postMessage({ manifest, type: "createNode" });
181
170
  await new Promise((resolve, reject) => {
182
- const eventFunc = /* @__PURE__ */ __name((event) => {
171
+ const eventFunc = (event) => {
183
172
  const timeout = setTimeout(() => {
184
173
  console.log("Node creation timeout");
185
174
  worker.removeEventListener("message", eventFunc);
@@ -198,15 +187,10 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
198
187
  break;
199
188
  }
200
189
  }
201
- }, "eventFunc");
190
+ };
202
191
  worker.addEventListener("message", eventFunc);
203
192
  });
204
- const bridge = await _WorkerBridge.create({
205
- config: {
206
- schema: WorkerBridgeConfigSchema
207
- },
208
- worker
209
- });
193
+ const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker });
210
194
  await bridge.start();
211
195
  return bridge;
212
196
  }
@@ -223,7 +207,9 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
223
207
  return [];
224
208
  }
225
209
  };
226
- WorkerBridge = _ts_decorate([
210
+ __publicField(WorkerBridge, "configSchemas", [...__superGet(WorkerBridge, WorkerBridge, "configSchemas"), WorkerBridgeConfigSchema]);
211
+ __publicField(WorkerBridge, "defaultConfigSchema", WorkerBridgeConfigSchema);
212
+ WorkerBridge = __decorateClass([
227
213
  creatableModule()
228
214
  ], WorkerBridge);
229
215
  export {
@@ -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 type { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport { 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 type { Address } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport type { PackageManifestPayload } from '@xyo-network/manifest'\nimport { ManifestWrapper } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\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: 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 {\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 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 {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} 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 {\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 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 type { EmptyObject } from '@xylabs/object'\nimport type { 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 type { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport { 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 type { Address } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport type { PackageManifestPayload } from '@xyo-network/manifest'\nimport { ManifestWrapper } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\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: 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 {\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 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 {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} 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 {\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 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 type { EmptyObject } from '@xylabs/object'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config' as const\nexport type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["message"]}
@@ -1,6 +1,6 @@
1
1
  import type { EmptyObject } from '@xylabs/object';
2
2
  import type { BridgeConfig } from '@xyo-network/bridge-model';
3
- export type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config';
4
- export declare const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema;
3
+ export declare const WorkerBridgeConfigSchema: "network.xyo.bridge.worker.config";
4
+ export type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema;
5
5
  export type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>;
6
6
  //# 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;AAE7D,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAA;AACzE,eAAO,MAAM,wBAAwB,EAAE,wBAA6D,CAAA;AAEpG,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,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,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,eAAO,MAAM,wBAAwB,EAAG,kCAA2C,CAAA;AACnF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA"}
@@ -1,5 +1,18 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __reflectGet = Reflect.get;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
15
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
3
16
 
4
17
  // src/defaultNodeManifest.ts
5
18
  import { ArchivistConfigSchema } from "@xyo-network/archivist-model";
@@ -49,11 +62,6 @@ import { forget } from "@xylabs/forget";
49
62
  import { HDWallet } from "@xyo-network/account";
50
63
  import { ManifestWrapper } from "@xyo-network/manifest";
51
64
  var WorkerNodeHost = class {
52
- static {
53
- __name(this, "WorkerNodeHost");
54
- }
55
- node;
56
- logger;
57
65
  constructor(node, logger) {
58
66
  this.node = node;
59
67
  this.logger = logger;
@@ -67,16 +75,13 @@ var WorkerNodeHost = class {
67
75
  return worker;
68
76
  }
69
77
  static start(logger) {
70
- const listener = /* @__PURE__ */ __name(async (event) => {
78
+ const listener = async (event) => {
71
79
  switch (event.data.type) {
72
80
  case "createNode": {
73
81
  const message = event.data;
74
82
  const worker = await this.create(message.manifest);
75
83
  logger?.log(`createNode: ${worker.node.address}`);
76
- const response = {
77
- address: worker.node.address,
78
- type: "nodeCreated"
79
- };
84
+ const response = { address: worker.node.address, type: "nodeCreated" };
80
85
  postMessage(response);
81
86
  break;
82
87
  }
@@ -86,21 +91,24 @@ var WorkerNodeHost = class {
86
91
  break;
87
92
  }
88
93
  }
89
- }, "listener");
94
+ };
90
95
  self.addEventListener("message", (event) => {
91
96
  forget(listener(event));
92
97
  });
93
98
  }
94
99
  attachNode(node) {
95
- const listener = /* @__PURE__ */ __name(async (event) => {
100
+ const listener = async (event) => {
96
101
  const message = event.data;
97
102
  switch (message.type) {
98
103
  case "xyoQuery": {
99
104
  const message2 = event.data;
100
- const { address, msgId, query, payloads } = message2;
101
- const mod = address ? await node.resolve(address, {
102
- direction: "down"
103
- }) : node;
105
+ const {
106
+ address,
107
+ msgId,
108
+ query,
109
+ payloads
110
+ } = message2;
111
+ const mod = address ? await node.resolve(address, { direction: "down" }) : node;
104
112
  if (mod) {
105
113
  const result = {
106
114
  address,
@@ -117,7 +125,7 @@ var WorkerNodeHost = class {
117
125
  break;
118
126
  }
119
127
  }
120
- }, "listener");
128
+ };
121
129
  self.addEventListener("message", (event) => {
122
130
  forget(listener(event));
123
131
  });
@@ -127,38 +135,22 @@ var WorkerNodeHost = class {
127
135
  // src/WorkerBridge.ts
128
136
  import { assertEx } from "@xylabs/assert";
129
137
  import { AbstractBridge } from "@xyo-network/bridge-abstract";
130
- import { creatableModule } from "@xyo-network/module-model";
138
+ import {
139
+ creatableModule
140
+ } from "@xyo-network/module-model";
131
141
  import { LRUCache } from "lru-cache";
132
142
 
133
143
  // src/WorkerBridgeConfig.ts
134
144
  var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
135
145
 
136
146
  // src/WorkerBridge.ts
137
- function _ts_decorate(decorators, target, key, desc) {
138
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
139
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
140
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
141
- return c > 3 && r && Object.defineProperty(target, key, r), r;
142
- }
143
- __name(_ts_decorate, "_ts_decorate");
144
- var WorkerBridge = class _WorkerBridge extends AbstractBridge {
145
- static {
146
- __name(this, "WorkerBridge");
147
- }
148
- static configSchemas = [
149
- ...super.configSchemas,
150
- WorkerBridgeConfigSchema
151
- ];
152
- static defaultConfigSchema = WorkerBridgeConfigSchema;
147
+ var WorkerBridge = class extends AbstractBridge {
153
148
  _discoverCache;
154
149
  _targetConfigs = {};
155
150
  _targetQueries = {};
156
151
  get discoverCache() {
157
152
  const config = this.discoverCacheConfig;
158
- this._discoverCache = this._discoverCache ?? new LRUCache({
159
- ttlAutopurge: true,
160
- ...config
161
- });
153
+ this._discoverCache = this._discoverCache ?? new LRUCache({ ttlAutopurge: true, ...config });
162
154
  return this._discoverCache;
163
155
  }
164
156
  get discoverCacheConfig() {
@@ -174,12 +166,9 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
174
166
  }
175
167
  static async createWorkerNode(manifest = defaultPackageManifest) {
176
168
  const worker = new Worker(new URL("worker/Worker.ts", import.meta?.url ?? __filename));
177
- worker.postMessage({
178
- manifest,
179
- type: "createNode"
180
- });
169
+ worker.postMessage({ manifest, type: "createNode" });
181
170
  await new Promise((resolve, reject) => {
182
- const eventFunc = /* @__PURE__ */ __name((event) => {
171
+ const eventFunc = (event) => {
183
172
  const timeout = setTimeout(() => {
184
173
  console.log("Node creation timeout");
185
174
  worker.removeEventListener("message", eventFunc);
@@ -198,15 +187,10 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
198
187
  break;
199
188
  }
200
189
  }
201
- }, "eventFunc");
190
+ };
202
191
  worker.addEventListener("message", eventFunc);
203
192
  });
204
- const bridge = await _WorkerBridge.create({
205
- config: {
206
- schema: WorkerBridgeConfigSchema
207
- },
208
- worker
209
- });
193
+ const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker });
210
194
  await bridge.start();
211
195
  return bridge;
212
196
  }
@@ -223,7 +207,9 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
223
207
  return [];
224
208
  }
225
209
  };
226
- WorkerBridge = _ts_decorate([
210
+ __publicField(WorkerBridge, "configSchemas", [...__superGet(WorkerBridge, WorkerBridge, "configSchemas"), WorkerBridgeConfigSchema]);
211
+ __publicField(WorkerBridge, "defaultConfigSchema", WorkerBridgeConfigSchema);
212
+ WorkerBridge = __decorateClass([
227
213
  creatableModule()
228
214
  ], WorkerBridge);
229
215
  export {
@@ -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 type { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport { 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 type { Address } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport type { PackageManifestPayload } from '@xyo-network/manifest'\nimport { ManifestWrapper } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\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: 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 {\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 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 {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} 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 {\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 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 type { EmptyObject } from '@xylabs/object'\nimport type { 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 type { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport { 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 type { Address } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport type { PackageManifestPayload } from '@xyo-network/manifest'\nimport { ManifestWrapper } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\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: 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 {\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 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 {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} 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 {\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 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 type { EmptyObject } from '@xylabs/object'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config' as const\nexport type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["message"]}
@@ -1,6 +1,6 @@
1
1
  import type { EmptyObject } from '@xylabs/object';
2
2
  import type { BridgeConfig } from '@xyo-network/bridge-model';
3
- export type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config';
4
- export declare const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema;
3
+ export declare const WorkerBridgeConfigSchema: "network.xyo.bridge.worker.config";
4
+ export type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema;
5
5
  export type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>;
6
6
  //# 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;AAE7D,MAAM,MAAM,wBAAwB,GAAG,kCAAkC,CAAA;AACzE,eAAO,MAAM,wBAAwB,EAAE,wBAA6D,CAAA;AAEpG,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,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,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,eAAO,MAAM,wBAAwB,EAAG,kCAA2C,CAAA;AACnF,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,WAAW,GAAG,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA"}
@@ -1,5 +1,18 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __reflectGet = Reflect.get;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
15
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
3
16
 
4
17
  // src/defaultNodeManifest.ts
5
18
  import { ArchivistConfigSchema } from "@xyo-network/archivist-model";
@@ -49,11 +62,6 @@ import { forget } from "@xylabs/forget";
49
62
  import { HDWallet } from "@xyo-network/account";
50
63
  import { ManifestWrapper } from "@xyo-network/manifest";
51
64
  var WorkerNodeHost = class {
52
- static {
53
- __name(this, "WorkerNodeHost");
54
- }
55
- node;
56
- logger;
57
65
  constructor(node, logger) {
58
66
  this.node = node;
59
67
  this.logger = logger;
@@ -67,16 +75,13 @@ var WorkerNodeHost = class {
67
75
  return worker;
68
76
  }
69
77
  static start(logger) {
70
- const listener = /* @__PURE__ */ __name(async (event) => {
78
+ const listener = async (event) => {
71
79
  switch (event.data.type) {
72
80
  case "createNode": {
73
81
  const message = event.data;
74
82
  const worker = await this.create(message.manifest);
75
83
  logger?.log(`createNode: ${worker.node.address}`);
76
- const response = {
77
- address: worker.node.address,
78
- type: "nodeCreated"
79
- };
84
+ const response = { address: worker.node.address, type: "nodeCreated" };
80
85
  postMessage(response);
81
86
  break;
82
87
  }
@@ -86,21 +91,24 @@ var WorkerNodeHost = class {
86
91
  break;
87
92
  }
88
93
  }
89
- }, "listener");
94
+ };
90
95
  self.addEventListener("message", (event) => {
91
96
  forget(listener(event));
92
97
  });
93
98
  }
94
99
  attachNode(node) {
95
- const listener = /* @__PURE__ */ __name(async (event) => {
100
+ const listener = async (event) => {
96
101
  const message = event.data;
97
102
  switch (message.type) {
98
103
  case "xyoQuery": {
99
104
  const message2 = event.data;
100
- const { address, msgId, query, payloads } = message2;
101
- const mod = address ? await node.resolve(address, {
102
- direction: "down"
103
- }) : node;
105
+ const {
106
+ address,
107
+ msgId,
108
+ query,
109
+ payloads
110
+ } = message2;
111
+ const mod = address ? await node.resolve(address, { direction: "down" }) : node;
104
112
  if (mod) {
105
113
  const result = {
106
114
  address,
@@ -117,7 +125,7 @@ var WorkerNodeHost = class {
117
125
  break;
118
126
  }
119
127
  }
120
- }, "listener");
128
+ };
121
129
  self.addEventListener("message", (event) => {
122
130
  forget(listener(event));
123
131
  });
@@ -127,38 +135,22 @@ var WorkerNodeHost = class {
127
135
  // src/WorkerBridge.ts
128
136
  import { assertEx } from "@xylabs/assert";
129
137
  import { AbstractBridge } from "@xyo-network/bridge-abstract";
130
- import { creatableModule } from "@xyo-network/module-model";
138
+ import {
139
+ creatableModule
140
+ } from "@xyo-network/module-model";
131
141
  import { LRUCache } from "lru-cache";
132
142
 
133
143
  // src/WorkerBridgeConfig.ts
134
144
  var WorkerBridgeConfigSchema = "network.xyo.bridge.worker.config";
135
145
 
136
146
  // src/WorkerBridge.ts
137
- function _ts_decorate(decorators, target, key, desc) {
138
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
139
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
140
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
141
- return c > 3 && r && Object.defineProperty(target, key, r), r;
142
- }
143
- __name(_ts_decorate, "_ts_decorate");
144
- var WorkerBridge = class _WorkerBridge extends AbstractBridge {
145
- static {
146
- __name(this, "WorkerBridge");
147
- }
148
- static configSchemas = [
149
- ...super.configSchemas,
150
- WorkerBridgeConfigSchema
151
- ];
152
- static defaultConfigSchema = WorkerBridgeConfigSchema;
147
+ var WorkerBridge = class extends AbstractBridge {
153
148
  _discoverCache;
154
149
  _targetConfigs = {};
155
150
  _targetQueries = {};
156
151
  get discoverCache() {
157
152
  const config = this.discoverCacheConfig;
158
- this._discoverCache = this._discoverCache ?? new LRUCache({
159
- ttlAutopurge: true,
160
- ...config
161
- });
153
+ this._discoverCache = this._discoverCache ?? new LRUCache({ ttlAutopurge: true, ...config });
162
154
  return this._discoverCache;
163
155
  }
164
156
  get discoverCacheConfig() {
@@ -174,12 +166,9 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
174
166
  }
175
167
  static async createWorkerNode(manifest = defaultPackageManifest) {
176
168
  const worker = new Worker(new URL("worker/Worker.ts", import.meta?.url ?? __filename));
177
- worker.postMessage({
178
- manifest,
179
- type: "createNode"
180
- });
169
+ worker.postMessage({ manifest, type: "createNode" });
181
170
  await new Promise((resolve, reject) => {
182
- const eventFunc = /* @__PURE__ */ __name((event) => {
171
+ const eventFunc = (event) => {
183
172
  const timeout = setTimeout(() => {
184
173
  console.log("Node creation timeout");
185
174
  worker.removeEventListener("message", eventFunc);
@@ -198,15 +187,10 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
198
187
  break;
199
188
  }
200
189
  }
201
- }, "eventFunc");
190
+ };
202
191
  worker.addEventListener("message", eventFunc);
203
192
  });
204
- const bridge = await _WorkerBridge.create({
205
- config: {
206
- schema: WorkerBridgeConfigSchema
207
- },
208
- worker
209
- });
193
+ const bridge = await WorkerBridge.create({ config: { schema: WorkerBridgeConfigSchema }, worker });
210
194
  await bridge.start();
211
195
  return bridge;
212
196
  }
@@ -223,7 +207,9 @@ var WorkerBridge = class _WorkerBridge extends AbstractBridge {
223
207
  return [];
224
208
  }
225
209
  };
226
- WorkerBridge = _ts_decorate([
210
+ __publicField(WorkerBridge, "configSchemas", [...__superGet(WorkerBridge, WorkerBridge, "configSchemas"), WorkerBridgeConfigSchema]);
211
+ __publicField(WorkerBridge, "defaultConfigSchema", WorkerBridgeConfigSchema);
212
+ WorkerBridge = __decorateClass([
227
213
  creatableModule()
228
214
  ], WorkerBridge);
229
215
  export {
@@ -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 type { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport { 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 type { Address } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport type { PackageManifestPayload } from '@xyo-network/manifest'\nimport { ManifestWrapper } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\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: 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 {\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 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 {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} 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 {\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 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 type { EmptyObject } from '@xylabs/object'\nimport type { 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 type { PackageManifestPayload } from '@xyo-network/manifest-model'\nimport { 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 type { Address } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { HDWallet } from '@xyo-network/account'\nimport type { PackageManifestPayload } from '@xyo-network/manifest'\nimport { ManifestWrapper } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\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: 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 {\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 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 {\n BridgeExposeOptions, BridgeModule, BridgeUnexposeOptions,\n} 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 {\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 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 type { EmptyObject } from '@xylabs/object'\nimport type { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport const WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config' as const\nexport type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema\n\nexport type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>\n"],"mappings":"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","names":["message"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/bridge-worker",
3
- "version": "3.6.9",
3
+ "version": "3.6.10",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -37,30 +37,30 @@
37
37
  "module": "dist/neutral/index.mjs",
38
38
  "types": "dist/neutral/index.d.ts",
39
39
  "dependencies": {
40
- "@scure/bip39": "^1.5.0",
41
- "@xylabs/assert": "^4.4.34",
42
- "@xylabs/forget": "^4.4.34",
43
- "@xylabs/hex": "^4.4.34",
44
- "@xylabs/logger": "^4.4.34",
45
- "@xylabs/object": "^4.4.34",
46
- "@xylabs/promise": "^4.4.34",
47
- "@xyo-network/account": "^3.6.9",
48
- "@xyo-network/archivist-model": "^3.6.9",
49
- "@xyo-network/boundwitness-model": "^3.6.9",
50
- "@xyo-network/bridge-abstract": "^3.6.9",
51
- "@xyo-network/bridge-model": "^3.6.9",
52
- "@xyo-network/manifest": "^3.6.9",
53
- "@xyo-network/manifest-model": "^3.6.9",
54
- "@xyo-network/module-model": "^3.6.9",
55
- "@xyo-network/node-model": "^3.6.9",
56
- "@xyo-network/payload-model": "^3.6.9",
57
- "@xyo-network/sentinel-model": "^3.6.9",
40
+ "@scure/bip39": "^1.5.4",
41
+ "@xylabs/assert": "^4.5.1",
42
+ "@xylabs/forget": "^4.5.1",
43
+ "@xylabs/hex": "^4.5.1",
44
+ "@xylabs/logger": "^4.5.1",
45
+ "@xylabs/object": "^4.5.1",
46
+ "@xylabs/promise": "^4.5.1",
47
+ "@xyo-network/account": "^3.6.10",
48
+ "@xyo-network/archivist-model": "^3.6.10",
49
+ "@xyo-network/boundwitness-model": "^3.6.10",
50
+ "@xyo-network/bridge-abstract": "^3.6.10",
51
+ "@xyo-network/bridge-model": "^3.6.10",
52
+ "@xyo-network/manifest": "^3.6.10",
53
+ "@xyo-network/manifest-model": "^3.6.10",
54
+ "@xyo-network/module-model": "^3.6.10",
55
+ "@xyo-network/node-model": "^3.6.10",
56
+ "@xyo-network/payload-model": "^3.6.10",
57
+ "@xyo-network/sentinel-model": "^3.6.10",
58
58
  "lru-cache": "^11.0.2"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@xylabs/ts-scripts-yarn3": "^4.2.6",
62
62
  "@xylabs/tsconfig": "^4.2.6",
63
- "typescript": "^5.7.2"
63
+ "typescript": "^5.7.3"
64
64
  },
65
65
  "publishConfig": {
66
66
  "access": "public"
@@ -1,7 +1,7 @@
1
1
  import type { EmptyObject } from '@xylabs/object'
2
2
  import type { BridgeConfig } from '@xyo-network/bridge-model'
3
3
 
4
- export type WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'
5
- export const WorkerBridgeConfigSchema: WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config'
4
+ export const WorkerBridgeConfigSchema = 'network.xyo.bridge.worker.config' as const
5
+ export type WorkerBridgeConfigSchema = typeof WorkerBridgeConfigSchema
6
6
 
7
7
  export type WorkerBridgeConfig<TConfig extends EmptyObject = EmptyObject> = BridgeConfig<TConfig, WorkerBridgeConfigSchema>