mirror of
https://github.com/appium/appium.git
synced 2026-10-20 07:38:02 +08:00
97c879cdd0
* feat: add IPC channels per session for drivers and plugins to communicate (fix #22206) * lint * export AppiumIpc * fix test issues * import AppiumIpc directly from basedriver * fakedriver is used directly outside of appium so can't rely on existence of IPC * make ipc functions async with lock and better types * fix assignIpc types * deduplicate session object deletion * ipcGuard -> withIpc * address various review comments * lint * address copilot and other review comments * store only last message. change model to use subscription object and async generator * enforce max message size in bytes * fix tests and call the message payload 'data' for clarity * lint * make assignIpc optional on drivers for backwards compatibility * add error handling in startClock since it is usually not awaited * add docs * remove todo comment * apply copilot and eglitise suggestions * add typedoc * add error handling to onIpcInit * apply more suggestions * fix schema unit test * apply more suggestions * add links to ipc examples * make minimum ipc message size 1 instead of 0 * ensure publisher names are friendly to consumers * fix ipc message time unit * use already included sizeof for objs * just pass error obj to log * be more typescriptey about our ipc guard * make max obj size part of opts for appiumipc * let unsubscribe return whether it worked * improve ipc types and shapes * apply master package-lock.json * update schema config * use javascript naming conventions * clarify distinction between message and payload (data) * ensure async iterator loop ends when unsubscribe is called * ensure the right things happen when you unsubscribe * make require ipc more ergonomic * remove unnecessary async locks and de-asyncify methods * simplify interface and just use subscriber/plugin names * fix docs * fix lint * document isActive * add note about topic namespace * use sleep instead of delay * restrict the ipc payload data type to something that can be cloned * clarify topic namespacing recommendation * make sure listeners and promises are cleaned up in async iterator * clean up ipc internal names * readonly * address review comments * make ipcmessage readonly * readonly cause why not