@onerjs/shared-ui-components 8.50.3 → 8.50.5

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.
@@ -15,10 +15,10 @@ export type ModularBridgeOptions = {
15
15
  */
16
16
  name?: string;
17
17
  /**
18
- * Whether the bridge should automatically start trying to connect.
19
- * Defaults to false.
18
+ * Whether the bridge should automatically enable trying to connect.
19
+ * Defaults to true.
20
20
  */
21
- autoStart?: boolean;
21
+ autoEnable?: boolean;
22
22
  /**
23
23
  * Additional service definitions to register with the bridge container.
24
24
  */
@@ -18,7 +18,7 @@ export function MakeModularBridge(options) {
18
18
  get name() {
19
19
  return options?.name ?? (typeof document !== "undefined" ? document.title : "Babylon.js Scene");
20
20
  },
21
- autoStart: options?.autoStart ?? false,
21
+ autoEnable: options?.autoEnable ?? true,
22
22
  });
23
23
  const allDefinitions = [bridgeDefinition];
24
24
  if (options?.serviceDefinitions) {
@@ -1 +1 @@
1
- {"version":3,"file":"modularBridge.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/modularTool/modularBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAqC,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,WAAW,GAAG,IAAI,CAAC;AAgDzB;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA8B;IAC5D,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;QACjD,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,WAAW;QAClC,IAAI,IAAI;YACJ,OAAO,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpG,CAAC;QACD,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,KAAK;KACzC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAmC,CAAC,gBAAgB,CAAC,CAAC;IAC1E,IAAI,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAED,gBAAgB,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC;IAEhD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO;QACH,IAAI,gBAAgB;YAChB,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QACD,IAAI,UAAU;YACV,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO;YACH,QAAQ,GAAG,IAAI,CAAC;YAChB,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["import { type IDisposable } from \"core/index\";\r\nimport { type WeaklyTypedServiceDefinition, ServiceContainer } from \"./modularity/serviceContainer\";\r\nimport { MakeBridgeServiceDefinition } from \"./services/cli/bridgeService\";\r\n\r\nconst DefaultPort = 4400;\r\n\r\n/**\r\n * Options for creating a modular bridge container.\r\n * @experimental\r\n * @internal\r\n */\r\nexport type ModularBridgeOptions = {\r\n /**\r\n * WebSocket port for the bridge's browser port. Defaults to 4400.\r\n */\r\n port?: number;\r\n\r\n /**\r\n * Session display name reported to the bridge. Defaults to `document.title`.\r\n */\r\n name?: string;\r\n\r\n /**\r\n * Whether the bridge should automatically start trying to connect.\r\n * Defaults to false.\r\n */\r\n autoStart?: boolean;\r\n\r\n /**\r\n * Additional service definitions to register with the bridge container.\r\n */\r\n serviceDefinitions?: readonly WeaklyTypedServiceDefinition[];\r\n};\r\n\r\n/**\r\n * A token returned by {@link MakeModularBridge} that owns the headless\r\n * {@link ServiceContainer}. Dispose it to tear down the bridge and all services.\r\n * @experimental\r\n * @internal\r\n */\r\nexport type ModularBridgeToken = IDisposable & {\r\n /**\r\n * The headless ServiceContainer that hosts the bridge.\r\n */\r\n readonly serviceContainer: ServiceContainer;\r\n\r\n /**\r\n * Whether this token has been disposed.\r\n */\r\n readonly isDisposed: boolean;\r\n};\r\n\r\n/**\r\n * Creates a headless {@link ServiceContainer} that hosts a bridge service.\r\n *\r\n * The returned token owns the container. Dispose it to tear down the bridge.\r\n *\r\n * @param options Optional configuration for the bridge.\r\n * @returns A {@link ModularBridgeToken} that owns the container.\r\n * @experimental\r\n * @internal\r\n */\r\nexport function MakeModularBridge(options?: ModularBridgeOptions): ModularBridgeToken {\r\n const serviceContainer = new ServiceContainer(\"ModularBridgeContainer\");\r\n\r\n const bridgeDefinition = MakeBridgeServiceDefinition({\r\n port: options?.port ?? DefaultPort,\r\n get name() {\r\n return options?.name ?? (typeof document !== \"undefined\" ? document.title : \"Babylon.js Scene\");\r\n },\r\n autoStart: options?.autoStart ?? false,\r\n });\r\n\r\n const allDefinitions: WeaklyTypedServiceDefinition[] = [bridgeDefinition];\r\n if (options?.serviceDefinitions) {\r\n allDefinitions.push(...options.serviceDefinitions);\r\n }\r\n\r\n serviceContainer.addServices(...allDefinitions);\r\n\r\n let disposed = false;\r\n\r\n return {\r\n get serviceContainer() {\r\n return serviceContainer;\r\n },\r\n get isDisposed() {\r\n return disposed;\r\n },\r\n dispose() {\r\n disposed = true;\r\n serviceContainer.dispose();\r\n },\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"modularBridge.js","sourceRoot":"","sources":["../../../../dev/sharedUiComponents/src/modularTool/modularBridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAqC,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,WAAW,GAAG,IAAI,CAAC;AAgDzB;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA8B;IAC5D,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;QACjD,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,WAAW;QAClC,IAAI,IAAI;YACJ,OAAO,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACpG,CAAC;QACD,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;KAC1C,CAAC,CAAC;IAEH,MAAM,cAAc,GAAmC,CAAC,gBAAgB,CAAC,CAAC;IAC1E,IAAI,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAED,gBAAgB,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC;IAEhD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,OAAO;QACH,IAAI,gBAAgB;YAChB,OAAO,gBAAgB,CAAC;QAC5B,CAAC;QACD,IAAI,UAAU;YACV,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO;YACH,QAAQ,GAAG,IAAI,CAAC;YAChB,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["import { type IDisposable } from \"core/index\";\r\nimport { type WeaklyTypedServiceDefinition, ServiceContainer } from \"./modularity/serviceContainer\";\r\nimport { MakeBridgeServiceDefinition } from \"./services/cli/bridgeService\";\r\n\r\nconst DefaultPort = 4400;\r\n\r\n/**\r\n * Options for creating a modular bridge container.\r\n * @experimental\r\n * @internal\r\n */\r\nexport type ModularBridgeOptions = {\r\n /**\r\n * WebSocket port for the bridge's browser port. Defaults to 4400.\r\n */\r\n port?: number;\r\n\r\n /**\r\n * Session display name reported to the bridge. Defaults to `document.title`.\r\n */\r\n name?: string;\r\n\r\n /**\r\n * Whether the bridge should automatically enable trying to connect.\r\n * Defaults to true.\r\n */\r\n autoEnable?: boolean;\r\n\r\n /**\r\n * Additional service definitions to register with the bridge container.\r\n */\r\n serviceDefinitions?: readonly WeaklyTypedServiceDefinition[];\r\n};\r\n\r\n/**\r\n * A token returned by {@link MakeModularBridge} that owns the headless\r\n * {@link ServiceContainer}. Dispose it to tear down the bridge and all services.\r\n * @experimental\r\n * @internal\r\n */\r\nexport type ModularBridgeToken = IDisposable & {\r\n /**\r\n * The headless ServiceContainer that hosts the bridge.\r\n */\r\n readonly serviceContainer: ServiceContainer;\r\n\r\n /**\r\n * Whether this token has been disposed.\r\n */\r\n readonly isDisposed: boolean;\r\n};\r\n\r\n/**\r\n * Creates a headless {@link ServiceContainer} that hosts a bridge service.\r\n *\r\n * The returned token owns the container. Dispose it to tear down the bridge.\r\n *\r\n * @param options Optional configuration for the bridge.\r\n * @returns A {@link ModularBridgeToken} that owns the container.\r\n * @experimental\r\n * @internal\r\n */\r\nexport function MakeModularBridge(options?: ModularBridgeOptions): ModularBridgeToken {\r\n const serviceContainer = new ServiceContainer(\"ModularBridgeContainer\");\r\n\r\n const bridgeDefinition = MakeBridgeServiceDefinition({\r\n port: options?.port ?? DefaultPort,\r\n get name() {\r\n return options?.name ?? (typeof document !== \"undefined\" ? document.title : \"Babylon.js Scene\");\r\n },\r\n autoEnable: options?.autoEnable ?? true,\r\n });\r\n\r\n const allDefinitions: WeaklyTypedServiceDefinition[] = [bridgeDefinition];\r\n if (options?.serviceDefinitions) {\r\n allDefinitions.push(...options.serviceDefinitions);\r\n }\r\n\r\n serviceContainer.addServices(...allDefinitions);\r\n\r\n let disposed = false;\r\n\r\n return {\r\n get serviceContainer() {\r\n return serviceContainer;\r\n },\r\n get isDisposed() {\r\n return disposed;\r\n },\r\n dispose() {\r\n disposed = true;\r\n serviceContainer.dispose();\r\n },\r\n };\r\n}\r\n"]}
@@ -18,9 +18,9 @@ export type BridgeServiceOptions = {
18
18
  */
19
19
  name: string;
20
20
  /**
21
- * Whether to automatically start connecting when the service is created.
21
+ * Whether to automatically enable connecting when the service is created.
22
22
  */
23
- autoStart: boolean;
23
+ autoEnable: boolean;
24
24
  };
25
25
  /**
26
26
  * Creates the service definition for the CLI Bridge Service.
@@ -18,7 +18,7 @@ export function MakeBridgeServiceDefinition(options) {
18
18
  let ws = null;
19
19
  let reconnectTimer = null;
20
20
  let disposed = false;
21
- let enabled = options.autoStart;
21
+ let enabled = options.autoEnable;
22
22
  let connected = false;
23
23
  const onConnectionStatusChanged = new Observable();
24
24
  function notifyStatusChanged() {
@@ -1 +1 @@
1
- {"version":3,"file":"bridgeService.js","sourceRoot":"","sources":["../../../../../../dev/sharedUiComponents/src/modularTool/services/cli/bridgeService.ts"],"names":[],"mappings":"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","sourcesContent":["import { type IDisposable } from \"core/index\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { type BrowserRequest, type BrowserResponse, type CommandInfo } from \"./protocol\";\r\nimport { type ServiceDefinition } from \"../../modularity/serviceDefinition\";\r\nimport { type ICliConnectionStatus, CliConnectionStatusIdentity } from \"./bridgeConnectionStatus\";\r\nimport { type IBridgeCommandRegistry, type BridgeCommandDescriptor, BridgeCommandRegistryIdentity } from \"./bridgeCommandRegistry\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Options for the CLI bridge service.\r\n * @experimental\r\n * @internal\r\n */\r\nexport type BridgeServiceOptions = {\r\n /**\r\n * The WebSocket port for the bridge's browser port.\r\n */\r\n port: number;\r\n\r\n /**\r\n * The session display name sent to the bridge.\r\n * Can be a getter to provide a dynamic value that is re-read\r\n * each time the bridge queries session information.\r\n */\r\n name: string;\r\n\r\n /**\r\n * Whether to automatically start connecting when the service is created.\r\n */\r\n autoStart: boolean;\r\n};\r\n\r\n/**\r\n * Creates the service definition for the CLI Bridge Service.\r\n * @param options The options for connecting to the bridge.\r\n * @returns A service definition that produces an IBridgeCommandRegistry and ICliConnectionStatus.\r\n * @experimental\r\n * @internal\r\n */\r\nexport function MakeBridgeServiceDefinition(options: BridgeServiceOptions): ServiceDefinition<[IBridgeCommandRegistry, ICliConnectionStatus], []> {\r\n return {\r\n friendlyName: \"CLI Bridge Service\",\r\n produces: [BridgeCommandRegistryIdentity, CliConnectionStatusIdentity],\r\n factory: () => {\r\n const commands = new Map<string, BridgeCommandDescriptor>();\r\n let ws: WebSocket | null = null;\r\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\r\n let disposed = false;\r\n let enabled = options.autoStart;\r\n let connected = false;\r\n const onConnectionStatusChanged = new Observable<void>();\r\n\r\n function notifyStatusChanged() {\r\n onConnectionStatusChanged.notifyObservers();\r\n }\r\n\r\n function setConnected(value: boolean) {\r\n if (connected !== value) {\r\n connected = value;\r\n notifyStatusChanged();\r\n }\r\n }\r\n\r\n function sendToBridge(message: BrowserRequest) {\r\n ws?.send(JSON.stringify(message));\r\n }\r\n\r\n function connect() {\r\n if (disposed || !enabled) {\r\n return;\r\n }\r\n\r\n // Close any existing WebSocket to avoid orphaned connections that\r\n // keep a stale session alive on the bridge.\r\n if (ws) {\r\n const oldWs = ws;\r\n oldWs.onopen = null;\r\n oldWs.onclose = null;\r\n oldWs.onmessage = null;\r\n oldWs.onerror = null;\r\n oldWs.close();\r\n ws = null;\r\n }\r\n\r\n try {\r\n // NOTE: The browser unconditionally logs a console error for failed WebSocket\r\n // connections at the network level. This cannot be suppressed from JavaScript.\r\n ws = new WebSocket(`ws://127.0.0.1:${options.port}`);\r\n } catch {\r\n ws = null;\r\n setConnected(false);\r\n Logger.Warn(`CLIBridgeService: Failed to create WebSocket connection on port ${options.port}.`);\r\n scheduleReconnect();\r\n return;\r\n }\r\n\r\n ws.onopen = () => {\r\n setConnected(true);\r\n sendToBridge({ type: \"register\", name: options.name });\r\n };\r\n\r\n ws.onmessage = (event) => {\r\n try {\r\n const message = JSON.parse(event.data as string);\r\n void handleMessage(message);\r\n } catch {\r\n Logger.Warn(\"CLIBridgeService: Failed to parse message from bridge.\");\r\n }\r\n };\r\n\r\n ws.onclose = () => {\r\n ws = null;\r\n setConnected(false);\r\n scheduleReconnect();\r\n };\r\n\r\n ws.onerror = () => {\r\n // onclose will fire after onerror, which handles reconnection.\r\n };\r\n }\r\n\r\n function disconnect() {\r\n if (reconnectTimer !== null) {\r\n clearTimeout(reconnectTimer);\r\n reconnectTimer = null;\r\n }\r\n if (ws) {\r\n ws.onclose = null;\r\n ws.close();\r\n ws = null;\r\n }\r\n setConnected(false);\r\n }\r\n\r\n function scheduleReconnect() {\r\n if (disposed || !enabled || reconnectTimer !== null) {\r\n return;\r\n }\r\n reconnectTimer = setTimeout(() => {\r\n reconnectTimer = null;\r\n connect();\r\n }, 3000);\r\n }\r\n\r\n async function handleMessage(message: BrowserResponse) {\r\n switch (message.type) {\r\n case \"listCommands\": {\r\n const commandList: CommandInfo[] = Array.from(commands.values()).map((cmd) => ({\r\n id: cmd.id,\r\n description: cmd.description,\r\n args: cmd.args,\r\n }));\r\n sendToBridge({\r\n type: \"commandListResponse\",\r\n requestId: message.requestId,\r\n commands: commandList,\r\n });\r\n break;\r\n }\r\n case \"getInfo\": {\r\n sendToBridge({\r\n type: \"infoResponse\",\r\n requestId: message.requestId,\r\n name: options.name,\r\n });\r\n break;\r\n }\r\n case \"execCommand\": {\r\n const command = commands.get(message.commandId);\r\n if (!command) {\r\n sendToBridge({\r\n type: \"commandResponse\",\r\n requestId: message.requestId,\r\n error: `Unknown command: ${message.commandId}`,\r\n });\r\n break;\r\n }\r\n try {\r\n const result = await command.executeAsync(message.args);\r\n sendToBridge({\r\n type: \"commandResponse\",\r\n requestId: message.requestId,\r\n result,\r\n });\r\n } catch (error: unknown) {\r\n sendToBridge({\r\n type: \"commandResponse\",\r\n requestId: message.requestId,\r\n error: String(error),\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (enabled) {\r\n connect();\r\n }\r\n\r\n const registry: IBridgeCommandRegistry & ICliConnectionStatus & IDisposable = {\r\n addCommand(descriptor: BridgeCommandDescriptor): IDisposable {\r\n if (commands.has(descriptor.id)) {\r\n throw new Error(`Command '${descriptor.id}' is already registered.`);\r\n }\r\n commands.set(descriptor.id, descriptor);\r\n return {\r\n dispose: () => {\r\n commands.delete(descriptor.id);\r\n },\r\n };\r\n },\r\n get isEnabled() {\r\n return enabled;\r\n },\r\n set isEnabled(value: boolean) {\r\n if (enabled !== value) {\r\n enabled = value;\r\n if (enabled) {\r\n connect();\r\n } else {\r\n disconnect();\r\n }\r\n notifyStatusChanged();\r\n }\r\n },\r\n get isConnected() {\r\n return connected;\r\n },\r\n onConnectionStatusChanged,\r\n dispose: () => {\r\n disposed = true;\r\n enabled = false;\r\n disconnect();\r\n commands.clear();\r\n onConnectionStatusChanged.clear();\r\n },\r\n };\r\n\r\n return registry;\r\n },\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"bridgeService.js","sourceRoot":"","sources":["../../../../../../dev/sharedUiComponents/src/modularTool/services/cli/bridgeService.ts"],"names":[],"mappings":"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","sourcesContent":["import { type IDisposable } from \"core/index\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { type BrowserRequest, type BrowserResponse, type CommandInfo } from \"./protocol\";\r\nimport { type ServiceDefinition } from \"../../modularity/serviceDefinition\";\r\nimport { type ICliConnectionStatus, CliConnectionStatusIdentity } from \"./bridgeConnectionStatus\";\r\nimport { type IBridgeCommandRegistry, type BridgeCommandDescriptor, BridgeCommandRegistryIdentity } from \"./bridgeCommandRegistry\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\n/**\r\n * Options for the CLI bridge service.\r\n * @experimental\r\n * @internal\r\n */\r\nexport type BridgeServiceOptions = {\r\n /**\r\n * The WebSocket port for the bridge's browser port.\r\n */\r\n port: number;\r\n\r\n /**\r\n * The session display name sent to the bridge.\r\n * Can be a getter to provide a dynamic value that is re-read\r\n * each time the bridge queries session information.\r\n */\r\n name: string;\r\n\r\n /**\r\n * Whether to automatically enable connecting when the service is created.\r\n */\r\n autoEnable: boolean;\r\n};\r\n\r\n/**\r\n * Creates the service definition for the CLI Bridge Service.\r\n * @param options The options for connecting to the bridge.\r\n * @returns A service definition that produces an IBridgeCommandRegistry and ICliConnectionStatus.\r\n * @experimental\r\n * @internal\r\n */\r\nexport function MakeBridgeServiceDefinition(options: BridgeServiceOptions): ServiceDefinition<[IBridgeCommandRegistry, ICliConnectionStatus], []> {\r\n return {\r\n friendlyName: \"CLI Bridge Service\",\r\n produces: [BridgeCommandRegistryIdentity, CliConnectionStatusIdentity],\r\n factory: () => {\r\n const commands = new Map<string, BridgeCommandDescriptor>();\r\n let ws: WebSocket | null = null;\r\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\r\n let disposed = false;\r\n let enabled = options.autoEnable;\r\n let connected = false;\r\n const onConnectionStatusChanged = new Observable<void>();\r\n\r\n function notifyStatusChanged() {\r\n onConnectionStatusChanged.notifyObservers();\r\n }\r\n\r\n function setConnected(value: boolean) {\r\n if (connected !== value) {\r\n connected = value;\r\n notifyStatusChanged();\r\n }\r\n }\r\n\r\n function sendToBridge(message: BrowserRequest) {\r\n ws?.send(JSON.stringify(message));\r\n }\r\n\r\n function connect() {\r\n if (disposed || !enabled) {\r\n return;\r\n }\r\n\r\n // Close any existing WebSocket to avoid orphaned connections that\r\n // keep a stale session alive on the bridge.\r\n if (ws) {\r\n const oldWs = ws;\r\n oldWs.onopen = null;\r\n oldWs.onclose = null;\r\n oldWs.onmessage = null;\r\n oldWs.onerror = null;\r\n oldWs.close();\r\n ws = null;\r\n }\r\n\r\n try {\r\n // NOTE: The browser unconditionally logs a console error for failed WebSocket\r\n // connections at the network level. This cannot be suppressed from JavaScript.\r\n ws = new WebSocket(`ws://127.0.0.1:${options.port}`);\r\n } catch {\r\n ws = null;\r\n setConnected(false);\r\n Logger.Warn(`CLIBridgeService: Failed to create WebSocket connection on port ${options.port}.`);\r\n scheduleReconnect();\r\n return;\r\n }\r\n\r\n ws.onopen = () => {\r\n setConnected(true);\r\n sendToBridge({ type: \"register\", name: options.name });\r\n };\r\n\r\n ws.onmessage = (event) => {\r\n try {\r\n const message = JSON.parse(event.data as string);\r\n void handleMessage(message);\r\n } catch {\r\n Logger.Warn(\"CLIBridgeService: Failed to parse message from bridge.\");\r\n }\r\n };\r\n\r\n ws.onclose = () => {\r\n ws = null;\r\n setConnected(false);\r\n scheduleReconnect();\r\n };\r\n\r\n ws.onerror = () => {\r\n // onclose will fire after onerror, which handles reconnection.\r\n };\r\n }\r\n\r\n function disconnect() {\r\n if (reconnectTimer !== null) {\r\n clearTimeout(reconnectTimer);\r\n reconnectTimer = null;\r\n }\r\n if (ws) {\r\n ws.onclose = null;\r\n ws.close();\r\n ws = null;\r\n }\r\n setConnected(false);\r\n }\r\n\r\n function scheduleReconnect() {\r\n if (disposed || !enabled || reconnectTimer !== null) {\r\n return;\r\n }\r\n reconnectTimer = setTimeout(() => {\r\n reconnectTimer = null;\r\n connect();\r\n }, 3000);\r\n }\r\n\r\n async function handleMessage(message: BrowserResponse) {\r\n switch (message.type) {\r\n case \"listCommands\": {\r\n const commandList: CommandInfo[] = Array.from(commands.values()).map((cmd) => ({\r\n id: cmd.id,\r\n description: cmd.description,\r\n args: cmd.args,\r\n }));\r\n sendToBridge({\r\n type: \"commandListResponse\",\r\n requestId: message.requestId,\r\n commands: commandList,\r\n });\r\n break;\r\n }\r\n case \"getInfo\": {\r\n sendToBridge({\r\n type: \"infoResponse\",\r\n requestId: message.requestId,\r\n name: options.name,\r\n });\r\n break;\r\n }\r\n case \"execCommand\": {\r\n const command = commands.get(message.commandId);\r\n if (!command) {\r\n sendToBridge({\r\n type: \"commandResponse\",\r\n requestId: message.requestId,\r\n error: `Unknown command: ${message.commandId}`,\r\n });\r\n break;\r\n }\r\n try {\r\n const result = await command.executeAsync(message.args);\r\n sendToBridge({\r\n type: \"commandResponse\",\r\n requestId: message.requestId,\r\n result,\r\n });\r\n } catch (error: unknown) {\r\n sendToBridge({\r\n type: \"commandResponse\",\r\n requestId: message.requestId,\r\n error: String(error),\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (enabled) {\r\n connect();\r\n }\r\n\r\n const registry: IBridgeCommandRegistry & ICliConnectionStatus & IDisposable = {\r\n addCommand(descriptor: BridgeCommandDescriptor): IDisposable {\r\n if (commands.has(descriptor.id)) {\r\n throw new Error(`Command '${descriptor.id}' is already registered.`);\r\n }\r\n commands.set(descriptor.id, descriptor);\r\n return {\r\n dispose: () => {\r\n commands.delete(descriptor.id);\r\n },\r\n };\r\n },\r\n get isEnabled() {\r\n return enabled;\r\n },\r\n set isEnabled(value: boolean) {\r\n if (enabled !== value) {\r\n enabled = value;\r\n if (enabled) {\r\n connect();\r\n } else {\r\n disconnect();\r\n }\r\n notifyStatusChanged();\r\n }\r\n },\r\n get isConnected() {\r\n return connected;\r\n },\r\n onConnectionStatusChanged,\r\n dispose: () => {\r\n disposed = true;\r\n enabled = false;\r\n disconnect();\r\n commands.clear();\r\n onConnectionStatusChanged.clear();\r\n },\r\n };\r\n\r\n return registry;\r\n },\r\n };\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onerjs/shared-ui-components",
3
- "version": "8.50.3",
3
+ "version": "8.50.5",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",