Skip to content

Integrate logger client into cdp-client with service-based discovery#27

Open
stefanrammo wants to merge 1 commit intomainfrom
logger-client-integration
Open

Integrate logger client into cdp-client with service-based discovery#27
stefanrammo wants to merge 1 commit intomainfrom
logger-client-integration

Conversation

@stefanrammo
Copy link
Copy Markdown
Collaborator

Bundle cdplogger-client as studio.logger and add client.logger() method that discovers loggers via ServicesNotification and connects through proxy transport via makeServiceTransport (CDP 5.1+).

  • client.logger(name, options): auto-discovers logserver proxy service, creates service transport, passes to LoggerClient constructor
  • client.loggers(): returns all discovered logger services as [{name, metadata}] after first ServicesNotification
  • LoggerClient constructor extended to accept service transport object in addition to endpoint string (autoReconnect forced false)
  • Caching by name with eviction on transport close
  • close() disconnects cached loggers and rejects pending promises
  • Logger transports registered in serviceConnections for proper cleanup on primary connection drop
  • Rejects immediately on CDP < 5.1 (no proxy protocol support)
  • Proto files use raw .proto.js format matching studioapi.proto.js, with Node/browser parity via require() and window globals
  • Unit tests adapted from cdplogger-client test suite
  • README.rst updated with Logger Integration API documentation

Bundle cdplogger-client as studio.logger and add client.logger() method
that discovers loggers via ServicesNotification and connects through
proxy transport via makeServiceTransport (CDP 5.1+).

- client.logger(name, options): auto-discovers logserver proxy service,
  creates service transport, passes to LoggerClient constructor
- client.loggers(): returns all discovered logger services as
  [{name, metadata}] after first ServicesNotification
- LoggerClient constructor extended to accept service transport object
  in addition to endpoint string (autoReconnect forced false)
- Caching by name with eviction on transport close
- close() disconnects cached loggers and rejects pending promises
- Logger transports registered in serviceConnections for proper
  cleanup on primary connection drop
- Rejects immediately on CDP < 5.1 (no proxy protocol support)
- Proto files use raw .proto.js format matching studioapi.proto.js,
  with Node/browser parity via require() and window globals
- Unit tests adapted from cdplogger-client test suite
- README.rst updated with Logger Integration API documentation
@stefanrammo
Copy link
Copy Markdown
Collaborator Author

The bundled logger client is adapted from https://github.com/CDPTechnologies/JavascriptCDPLoggerClient with these changes to support integration:

  1. Proto loading: replaced pre-compiled containerPb.js with runtime protobuf.parse() of raw .proto.js files — same format as studioapi.proto.js, Node/browser parity via require() and window globals
  2. Transport mode: constructor accepts a service transport object (duck-typed via typeof send === 'function'), forces autoReconnect = false, wires onopen/onmessage/onerror/onclose handlers — enables tunneling through StudioAPI proxy
  3. disconnected flag: tracks connection state for cache eviction in client.logger()
  4. _rejectIfDisconnected() guard: every public method rejects immediately after disconnect() or transport close
  5. countEvents dispatch: added missing case in _sendQueuedRequests switch

@stefanrammo stefanrammo requested review from Karmo7 and nuubik April 8, 2026 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant