@finsemble/finsemble-electron-adapter 6.2.1 → 6.3.1-beta-1

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.
Files changed (344) hide show
  1. package/dist/app.js +1 -1
  2. package/dist/e2o.js +1 -1
  3. package/dist/e2o_view.js +1 -1
  4. package/dist/exports.js +1 -1
  5. package/dist/grpc/grpc.ts +9 -0
  6. package/exports.js +2 -1
  7. package/node_modules/@grpc/grpc-js/README.md +2 -0
  8. package/node_modules/@grpc/grpc-js/build/src/admin.d.ts +11 -0
  9. package/node_modules/@grpc/grpc-js/build/src/admin.js +31 -0
  10. package/node_modules/@grpc/grpc-js/build/src/admin.js.map +1 -0
  11. package/node_modules/@grpc/grpc-js/build/src/call-credentials-filter.js.map +1 -1
  12. package/node_modules/@grpc/grpc-js/build/src/call-stream.d.ts +14 -5
  13. package/node_modules/@grpc/grpc-js/build/src/call-stream.js +56 -20
  14. package/node_modules/@grpc/grpc-js/build/src/call-stream.js.map +1 -1
  15. package/node_modules/@grpc/grpc-js/build/src/call.js.map +1 -1
  16. package/node_modules/@grpc/grpc-js/build/src/channel-options.js.map +1 -1
  17. package/node_modules/@grpc/grpc-js/build/src/channel.d.ts +16 -7
  18. package/node_modules/@grpc/grpc-js/build/src/channel.js +138 -59
  19. package/node_modules/@grpc/grpc-js/build/src/channel.js.map +1 -1
  20. package/node_modules/@grpc/grpc-js/build/src/channelz.d.ts +122 -0
  21. package/node_modules/@grpc/grpc-js/build/src/channelz.js +568 -0
  22. package/node_modules/@grpc/grpc-js/build/src/channelz.js.map +1 -0
  23. package/node_modules/@grpc/grpc-js/build/src/client-interceptors.js.map +1 -1
  24. package/node_modules/@grpc/grpc-js/build/src/client.js +2 -1
  25. package/node_modules/@grpc/grpc-js/build/src/client.js.map +1 -1
  26. package/node_modules/@grpc/grpc-js/build/src/constants.js.map +1 -1
  27. package/node_modules/@grpc/grpc-js/build/src/deadline-filter.d.ts +3 -0
  28. package/node_modules/@grpc/grpc-js/build/src/deadline-filter.js +19 -5
  29. package/node_modules/@grpc/grpc-js/build/src/deadline-filter.js.map +1 -1
  30. package/node_modules/@grpc/grpc-js/build/src/experimental.d.ts +6 -5
  31. package/node_modules/@grpc/grpc-js/build/src/experimental.js +5 -2
  32. package/node_modules/@grpc/grpc-js/build/src/experimental.js.map +1 -1
  33. package/node_modules/@grpc/grpc-js/build/src/filter-stack.d.ts +4 -0
  34. package/node_modules/@grpc/grpc-js/build/src/filter-stack.js +14 -0
  35. package/node_modules/@grpc/grpc-js/build/src/filter-stack.js.map +1 -1
  36. package/node_modules/@grpc/grpc-js/build/src/filter.d.ts +2 -0
  37. package/node_modules/@grpc/grpc-js/build/src/filter.js +1 -0
  38. package/node_modules/@grpc/grpc-js/build/src/filter.js.map +1 -1
  39. package/node_modules/@grpc/grpc-js/build/src/generated/channelz.d.ts +72 -0
  40. package/node_modules/@grpc/grpc-js/build/src/generated/channelz.js +3 -0
  41. package/node_modules/@grpc/grpc-js/build/src/generated/channelz.js.map +1 -0
  42. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Any.d.ts +10 -0
  43. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Any.js +4 -0
  44. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Any.js.map +1 -0
  45. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/BoolValue.d.ts +6 -0
  46. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/BoolValue.js +4 -0
  47. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/BoolValue.js.map +1 -0
  48. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/BytesValue.d.ts +7 -0
  49. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/BytesValue.js +4 -0
  50. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/BytesValue.js.map +1 -0
  51. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/DoubleValue.d.ts +6 -0
  52. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/DoubleValue.js +4 -0
  53. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/DoubleValue.js.map +1 -0
  54. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Duration.d.ts +10 -0
  55. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Duration.js +4 -0
  56. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Duration.js.map +1 -0
  57. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/FloatValue.d.ts +6 -0
  58. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/FloatValue.js +4 -0
  59. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/FloatValue.js.map +1 -0
  60. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Int32Value.d.ts +6 -0
  61. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Int32Value.js +4 -0
  62. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Int32Value.js.map +1 -0
  63. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Int64Value.d.ts +8 -0
  64. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Int64Value.js +4 -0
  65. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Int64Value.js.map +1 -0
  66. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/StringValue.d.ts +6 -0
  67. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/StringValue.js +4 -0
  68. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/StringValue.js.map +1 -0
  69. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Timestamp.d.ts +10 -0
  70. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Timestamp.js +4 -0
  71. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/Timestamp.js.map +1 -0
  72. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/UInt32Value.d.ts +6 -0
  73. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/UInt32Value.js +4 -0
  74. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/UInt32Value.js.map +1 -0
  75. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/UInt64Value.d.ts +8 -0
  76. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/UInt64Value.js +4 -0
  77. package/node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/UInt64Value.js.map +1 -0
  78. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Address.d.ts +80 -0
  79. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Address.js +4 -0
  80. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Address.js.map +1 -0
  81. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Channel.d.ts +64 -0
  82. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Channel.js +4 -0
  83. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Channel.js.map +1 -0
  84. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelConnectivityState.d.ts +22 -0
  85. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelConnectivityState.js +15 -0
  86. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelConnectivityState.js.map +1 -0
  87. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelData.d.ts +73 -0
  88. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelData.js +4 -0
  89. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelData.js.map +1 -0
  90. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelRef.d.ts +28 -0
  91. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelRef.js +4 -0
  92. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelRef.js.map +1 -0
  93. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelTrace.d.ts +42 -0
  94. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelTrace.js +4 -0
  95. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelTrace.js.map +1 -0
  96. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelTraceEvent.d.ts +66 -0
  97. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelTraceEvent.js +16 -0
  98. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ChannelTraceEvent.js.map +1 -0
  99. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Channelz.d.ts +159 -0
  100. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Channelz.js +4 -0
  101. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Channelz.js.map +1 -0
  102. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetChannelRequest.d.ts +14 -0
  103. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetChannelRequest.js +4 -0
  104. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetChannelRequest.js.map +1 -0
  105. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetChannelResponse.d.ts +15 -0
  106. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetChannelResponse.js +4 -0
  107. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetChannelResponse.js.map +1 -0
  108. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerRequest.d.ts +14 -0
  109. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerRequest.js +4 -0
  110. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerRequest.js.map +1 -0
  111. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerResponse.d.ts +15 -0
  112. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerResponse.js +4 -0
  113. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerResponse.js.map +1 -0
  114. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerSocketsRequest.d.ts +36 -0
  115. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerSocketsRequest.js +4 -0
  116. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerSocketsRequest.js.map +1 -0
  117. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerSocketsResponse.d.ts +29 -0
  118. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerSocketsResponse.js +4 -0
  119. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServerSocketsResponse.js.map +1 -0
  120. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServersRequest.d.ts +34 -0
  121. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServersRequest.js +4 -0
  122. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServersRequest.js.map +1 -0
  123. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServersResponse.d.ts +29 -0
  124. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServersResponse.js +4 -0
  125. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetServersResponse.js.map +1 -0
  126. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSocketRequest.d.ts +26 -0
  127. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSocketRequest.js +4 -0
  128. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSocketRequest.js.map +1 -0
  129. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSocketResponse.d.ts +15 -0
  130. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSocketResponse.js +4 -0
  131. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSocketResponse.js.map +1 -0
  132. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSubchannelRequest.d.ts +14 -0
  133. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSubchannelRequest.js +4 -0
  134. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSubchannelRequest.js.map +1 -0
  135. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSubchannelResponse.d.ts +15 -0
  136. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSubchannelResponse.js +4 -0
  137. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetSubchannelResponse.js.map +1 -0
  138. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetTopChannelsRequest.d.ts +34 -0
  139. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetTopChannelsRequest.js +4 -0
  140. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetTopChannelsRequest.js.map +1 -0
  141. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetTopChannelsResponse.d.ts +29 -0
  142. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetTopChannelsResponse.js +4 -0
  143. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/GetTopChannelsResponse.js.map +1 -0
  144. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Security.d.ts +80 -0
  145. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Security.js +4 -0
  146. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Security.js.map +1 -0
  147. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Server.d.ts +41 -0
  148. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Server.js +4 -0
  149. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Server.js.map +1 -0
  150. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ServerData.d.ts +54 -0
  151. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ServerData.js +4 -0
  152. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ServerData.js.map +1 -0
  153. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ServerRef.d.ts +28 -0
  154. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ServerRef.js +4 -0
  155. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/ServerRef.js.map +1 -0
  156. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Socket.d.ts +66 -0
  157. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Socket.js +4 -0
  158. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Socket.js.map +1 -0
  159. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketData.d.ts +147 -0
  160. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketData.js +4 -0
  161. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketData.js.map +1 -0
  162. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOption.d.ts +43 -0
  163. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOption.js +4 -0
  164. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOption.js.map +1 -0
  165. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionLinger.d.ts +29 -0
  166. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionLinger.js +4 -0
  167. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionLinger.js.map +1 -0
  168. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionTcpInfo.d.ts +70 -0
  169. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionTcpInfo.js +4 -0
  170. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionTcpInfo.js.map +1 -0
  171. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionTimeout.d.ts +15 -0
  172. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionTimeout.js +4 -0
  173. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketOptionTimeout.js.map +1 -0
  174. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketRef.d.ts +28 -0
  175. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketRef.js +4 -0
  176. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SocketRef.js.map +1 -0
  177. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Subchannel.d.ts +66 -0
  178. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Subchannel.js +4 -0
  179. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/Subchannel.js.map +1 -0
  180. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SubchannelRef.d.ts +28 -0
  181. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SubchannelRef.js +4 -0
  182. package/node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/SubchannelRef.js.map +1 -0
  183. package/node_modules/@grpc/grpc-js/build/src/http_proxy.d.ts +1 -1
  184. package/node_modules/@grpc/grpc-js/build/src/http_proxy.js +11 -8
  185. package/node_modules/@grpc/grpc-js/build/src/http_proxy.js.map +1 -1
  186. package/node_modules/@grpc/grpc-js/build/src/index.d.ts +7 -4
  187. package/node_modules/@grpc/grpc-js/build/src/index.js +19 -5
  188. package/node_modules/@grpc/grpc-js/build/src/index.js.map +1 -1
  189. package/node_modules/@grpc/grpc-js/build/src/load-balancer-child-handler.d.ts +1 -1
  190. package/node_modules/@grpc/grpc-js/build/src/load-balancer-child-handler.js +8 -2
  191. package/node_modules/@grpc/grpc-js/build/src/load-balancer-child-handler.js.map +1 -1
  192. package/node_modules/@grpc/grpc-js/build/src/load-balancer-pick-first.d.ts +1 -1
  193. package/node_modules/@grpc/grpc-js/build/src/load-balancer-pick-first.js +56 -49
  194. package/node_modules/@grpc/grpc-js/build/src/load-balancer-pick-first.js.map +1 -1
  195. package/node_modules/@grpc/grpc-js/build/src/load-balancer-round-robin.d.ts +1 -1
  196. package/node_modules/@grpc/grpc-js/build/src/load-balancer-round-robin.js +34 -31
  197. package/node_modules/@grpc/grpc-js/build/src/load-balancer-round-robin.js.map +1 -1
  198. package/node_modules/@grpc/grpc-js/build/src/load-balancer.d.ts +17 -4
  199. package/node_modules/@grpc/grpc-js/build/src/load-balancer.js +36 -13
  200. package/node_modules/@grpc/grpc-js/build/src/load-balancer.js.map +1 -1
  201. package/node_modules/@grpc/grpc-js/build/src/logging.js +35 -4
  202. package/node_modules/@grpc/grpc-js/build/src/logging.js.map +1 -1
  203. package/node_modules/@grpc/grpc-js/build/src/max-message-size-filter.d.ts +3 -3
  204. package/node_modules/@grpc/grpc-js/build/src/max-message-size-filter.js.map +1 -1
  205. package/node_modules/@grpc/grpc-js/build/src/metadata.d.ts +7 -0
  206. package/node_modules/@grpc/grpc-js/build/src/metadata.js +11 -0
  207. package/node_modules/@grpc/grpc-js/build/src/metadata.js.map +1 -1
  208. package/node_modules/@grpc/grpc-js/build/src/picker.d.ts +5 -5
  209. package/node_modules/@grpc/grpc-js/build/src/picker.js +2 -2
  210. package/node_modules/@grpc/grpc-js/build/src/picker.js.map +1 -1
  211. package/node_modules/@grpc/grpc-js/build/src/resolver-dns.js.map +1 -1
  212. package/node_modules/@grpc/grpc-js/build/src/resolver-ip.js +6 -5
  213. package/node_modules/@grpc/grpc-js/build/src/resolver-ip.js.map +1 -1
  214. package/node_modules/@grpc/grpc-js/build/src/resolver.d.ts +3 -2
  215. package/node_modules/@grpc/grpc-js/build/src/resolver.js +1 -10
  216. package/node_modules/@grpc/grpc-js/build/src/resolver.js.map +1 -1
  217. package/node_modules/@grpc/grpc-js/build/src/resolving-load-balancer.d.ts +1 -1
  218. package/node_modules/@grpc/grpc-js/build/src/resolving-load-balancer.js +23 -18
  219. package/node_modules/@grpc/grpc-js/build/src/resolving-load-balancer.js.map +1 -1
  220. package/node_modules/@grpc/grpc-js/build/src/server-call.js +7 -3
  221. package/node_modules/@grpc/grpc-js/build/src/server-call.js.map +1 -1
  222. package/node_modules/@grpc/grpc-js/build/src/server.d.ts +10 -0
  223. package/node_modules/@grpc/grpc-js/build/src/server.js +230 -42
  224. package/node_modules/@grpc/grpc-js/build/src/server.js.map +1 -1
  225. package/node_modules/@grpc/grpc-js/build/src/service-config.d.ts +5 -1
  226. package/node_modules/@grpc/grpc-js/build/src/service-config.js +23 -3
  227. package/node_modules/@grpc/grpc-js/build/src/service-config.js.map +1 -1
  228. package/node_modules/@grpc/grpc-js/build/src/subchannel-address.d.ts +1 -0
  229. package/node_modules/@grpc/grpc-js/build/src/subchannel-address.js +17 -1
  230. package/node_modules/@grpc/grpc-js/build/src/subchannel-address.js.map +1 -1
  231. package/node_modules/@grpc/grpc-js/build/src/subchannel-pool.d.ts +2 -1
  232. package/node_modules/@grpc/grpc-js/build/src/subchannel-pool.js +2 -1
  233. package/node_modules/@grpc/grpc-js/build/src/subchannel-pool.js.map +1 -1
  234. package/node_modules/@grpc/grpc-js/build/src/subchannel.d.ts +30 -19
  235. package/node_modules/@grpc/grpc-js/build/src/subchannel.js +180 -78
  236. package/node_modules/@grpc/grpc-js/build/src/subchannel.js.map +1 -1
  237. package/node_modules/@grpc/grpc-js/node_modules/.bin/proto-loader-gen-types +15 -0
  238. package/node_modules/@grpc/grpc-js/node_modules/.bin/proto-loader-gen-types.cmd +7 -0
  239. package/node_modules/@grpc/grpc-js/package.json +9 -6
  240. package/node_modules/@grpc/grpc-js/proto/channelz.proto +564 -0
  241. package/node_modules/@grpc/grpc-js/src/admin.ts +39 -0
  242. package/node_modules/@grpc/grpc-js/src/call-credentials-filter.ts +3 -1
  243. package/node_modules/@grpc/grpc-js/src/call-stream.ts +75 -23
  244. package/node_modules/@grpc/grpc-js/src/call.ts +8 -4
  245. package/node_modules/@grpc/grpc-js/src/channel-options.ts +1 -0
  246. package/node_modules/@grpc/grpc-js/src/channel.ts +183 -73
  247. package/node_modules/@grpc/grpc-js/src/channelz.ts +727 -0
  248. package/node_modules/@grpc/grpc-js/src/client-interceptors.ts +8 -3
  249. package/node_modules/@grpc/grpc-js/src/client.ts +18 -16
  250. package/node_modules/@grpc/grpc-js/src/connectivity-state.ts +24 -0
  251. package/node_modules/@grpc/grpc-js/src/constants.ts +5 -1
  252. package/node_modules/@grpc/grpc-js/src/deadline-filter.ts +21 -5
  253. package/node_modules/@grpc/grpc-js/src/experimental.ts +36 -12
  254. package/node_modules/@grpc/grpc-js/src/filter-stack.ts +18 -0
  255. package/node_modules/@grpc/grpc-js/src/filter.ts +4 -0
  256. package/node_modules/@grpc/grpc-js/src/generated/channelz.ts +73 -0
  257. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/Any.ts +13 -0
  258. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/BoolValue.ts +10 -0
  259. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/BytesValue.ts +10 -0
  260. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/DoubleValue.ts +10 -0
  261. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/Duration.ts +13 -0
  262. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/FloatValue.ts +10 -0
  263. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/Int32Value.ts +10 -0
  264. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/Int64Value.ts +11 -0
  265. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/StringValue.ts +10 -0
  266. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/Timestamp.ts +13 -0
  267. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/UInt32Value.ts +10 -0
  268. package/node_modules/@grpc/grpc-js/src/generated/google/protobuf/UInt64Value.ts +11 -0
  269. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Address.ts +89 -0
  270. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Channel.ts +68 -0
  271. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ChannelConnectivityState.ts +29 -0
  272. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ChannelData.ts +76 -0
  273. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ChannelRef.ts +31 -0
  274. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ChannelTrace.ts +45 -0
  275. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ChannelTraceEvent.ts +73 -0
  276. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Channelz.ts +178 -0
  277. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetChannelRequest.ts +17 -0
  278. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetChannelResponse.ts +19 -0
  279. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetServerRequest.ts +17 -0
  280. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetServerResponse.ts +19 -0
  281. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetServerSocketsRequest.ts +39 -0
  282. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetServerSocketsResponse.ts +33 -0
  283. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetServersRequest.ts +37 -0
  284. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetServersResponse.ts +33 -0
  285. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetSocketRequest.ts +29 -0
  286. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetSocketResponse.ts +19 -0
  287. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetSubchannelRequest.ts +17 -0
  288. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetSubchannelResponse.ts +19 -0
  289. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetTopChannelsRequest.ts +37 -0
  290. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/GetTopChannelsResponse.ts +33 -0
  291. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Security.ts +87 -0
  292. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Server.ts +45 -0
  293. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ServerData.ts +57 -0
  294. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/ServerRef.ts +31 -0
  295. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Socket.ts +70 -0
  296. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SocketData.ts +150 -0
  297. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SocketOption.ts +47 -0
  298. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SocketOptionLinger.ts +33 -0
  299. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SocketOptionTcpInfo.ts +74 -0
  300. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SocketOptionTimeout.ts +19 -0
  301. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SocketRef.ts +31 -0
  302. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/Subchannel.ts +70 -0
  303. package/node_modules/@grpc/grpc-js/src/generated/grpc/channelz/v1/SubchannelRef.ts +31 -0
  304. package/node_modules/@grpc/grpc-js/src/http_proxy.ts +15 -11
  305. package/node_modules/@grpc/grpc-js/src/index.ts +29 -6
  306. package/node_modules/@grpc/grpc-js/src/load-balancer-child-handler.ts +12 -3
  307. package/node_modules/@grpc/grpc-js/src/load-balancer-pick-first.ts +19 -8
  308. package/node_modules/@grpc/grpc-js/src/load-balancer-round-robin.ts +15 -9
  309. package/node_modules/@grpc/grpc-js/src/load-balancer.ts +60 -21
  310. package/node_modules/@grpc/grpc-js/src/logging.ts +43 -7
  311. package/node_modules/@grpc/grpc-js/src/make-client.ts +1 -1
  312. package/node_modules/@grpc/grpc-js/src/max-message-size-filter.ts +18 -7
  313. package/node_modules/@grpc/grpc-js/src/metadata.ts +12 -0
  314. package/node_modules/@grpc/grpc-js/src/picker.ts +8 -8
  315. package/node_modules/@grpc/grpc-js/src/resolver-dns.ts +8 -2
  316. package/node_modules/@grpc/grpc-js/src/resolver-ip.ts +25 -16
  317. package/node_modules/@grpc/grpc-js/src/resolver-uds.ts +1 -1
  318. package/node_modules/@grpc/grpc-js/src/resolver.ts +5 -12
  319. package/node_modules/@grpc/grpc-js/src/resolving-load-balancer.ts +36 -14
  320. package/node_modules/@grpc/grpc-js/src/server-call.ts +11 -5
  321. package/node_modules/@grpc/grpc-js/src/server.ts +250 -44
  322. package/node_modules/@grpc/grpc-js/src/service-config.ts +35 -6
  323. package/node_modules/@grpc/grpc-js/src/subchannel-address.ts +79 -0
  324. package/node_modules/@grpc/grpc-js/src/subchannel-pool.ts +2 -2
  325. package/node_modules/@grpc/grpc-js/src/subchannel.ts +206 -97
  326. package/node_modules/@grpc/proto-loader/build/bin/proto-loader-gen-types.js +34 -0
  327. package/node_modules/@grpc/proto-loader/build/src/index.js +3 -0
  328. package/node_modules/@grpc/proto-loader/package.json +1 -1
  329. package/node_modules/{yargs/node_modules/y18n → y18n}/CHANGELOG.md +0 -0
  330. package/node_modules/{yargs/node_modules/y18n → y18n}/LICENSE +0 -0
  331. package/node_modules/{yargs/node_modules/y18n → y18n}/README.md +0 -0
  332. package/node_modules/{yargs/node_modules/y18n → y18n}/build/index.cjs +0 -0
  333. package/node_modules/{yargs/node_modules/y18n → y18n}/build/lib/cjs.js +0 -0
  334. package/node_modules/{yargs/node_modules/y18n → y18n}/build/lib/index.js +0 -0
  335. package/node_modules/{yargs/node_modules/y18n → y18n}/build/lib/platform-shims/node.js +0 -0
  336. package/node_modules/{yargs/node_modules/y18n → y18n}/index.mjs +0 -0
  337. package/node_modules/{yargs/node_modules/y18n → y18n}/package.json +0 -0
  338. package/package.json +41 -24
  339. package/dist/e2o.js.LICENSE.txt +0 -12
  340. package/dist/e2o_view.js.LICENSE.txt +0 -12
  341. package/dist/grpc/grpc.js +0 -8
  342. package/node_modules/@grpc/grpc-js/build/src/load-balancer-registry.d.ts +0 -7
  343. package/node_modules/@grpc/grpc-js/build/src/load-balancer-registry.js +0 -83
  344. package/node_modules/@grpc/grpc-js/build/src/load-balancer-registry.js.map +0 -1
@@ -16,11 +16,11 @@
16
16
  */
17
17
 
18
18
  import { ChannelOptions, channelOptionsEqual } from './channel-options';
19
+ import { Subchannel } from './subchannel';
19
20
  import {
20
- Subchannel,
21
21
  SubchannelAddress,
22
22
  subchannelAddressEqual,
23
- } from './subchannel';
23
+ } from './subchannel-address';
24
24
  import { ChannelCredentials } from './channel-credentials';
25
25
  import { GrpcUri, uriToString } from './uri-parser';
26
26
 
@@ -18,32 +18,30 @@
18
18
  import * as http2 from 'http2';
19
19
  import { ChannelCredentials } from './channel-credentials';
20
20
  import { Metadata } from './metadata';
21
- import { Http2CallStream } from './call-stream';
21
+ import { Call, Http2CallStream, WriteObject } from './call-stream';
22
22
  import { ChannelOptions } from './channel-options';
23
- import { PeerCertificate, checkServerIdentity } from 'tls';
24
- import { ConnectivityState } from './channel';
23
+ import { PeerCertificate, checkServerIdentity, TLSSocket, CipherNameAndProtocol } from 'tls';
24
+ import { ConnectivityState } from './connectivity-state';
25
25
  import { BackoffTimeout, BackoffOptions } from './backoff-timeout';
26
26
  import { getDefaultAuthority } from './resolver';
27
27
  import * as logging from './logging';
28
- import { LogVerbosity } from './constants';
28
+ import { LogVerbosity, Status } from './constants';
29
29
  import { getProxiedConnection, ProxyConnectionResult } from './http_proxy';
30
30
  import * as net from 'net';
31
31
  import { GrpcUri, parseUri, splitHostPort, uriToString } from './uri-parser';
32
32
  import { ConnectionOptions } from 'tls';
33
- import { FilterFactory, Filter } from './filter';
33
+ import { FilterFactory, Filter, BaseFilter } from './filter';
34
+ import {
35
+ stringToSubchannelAddress,
36
+ SubchannelAddress,
37
+ subchannelAddressToString,
38
+ } from './subchannel-address';
39
+ import { SubchannelRef, ChannelzTrace, ChannelzChildrenTracker, SubchannelInfo, registerChannelzSubchannel, ChannelzCallTracker, SocketInfo, SocketRef, unregisterChannelzRef, registerChannelzSocket, TlsInfo } from './channelz';
34
40
 
35
41
  const clientVersion = require('../../package.json').version;
36
42
 
37
43
  const TRACER_NAME = 'subchannel';
38
44
 
39
- function trace(text: string): void {
40
- logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);
41
- }
42
-
43
- function refTrace(text: string): void {
44
- logging.trace(LogVerbosity.DEBUG, 'subchannel_refcount', text);
45
- }
46
-
47
45
  const MIN_CONNECT_TIMEOUT_MS = 20000;
48
46
  const INITIAL_BACKOFF_MS = 1000;
49
47
  const BACKOFF_MULTIPLIER = 1.6;
@@ -62,6 +60,11 @@ export type ConnectivityStateListener = (
62
60
  newState: ConnectivityState
63
61
  ) => void;
64
62
 
63
+ export interface SubchannelCallStatsTracker {
64
+ addMessageSent(): void;
65
+ addMessageReceived(): void;
66
+ }
67
+
65
68
  const {
66
69
  HTTP2_HEADER_AUTHORITY,
67
70
  HTTP2_HEADER_CONTENT_TYPE,
@@ -82,52 +85,6 @@ function uniformRandom(min: number, max: number) {
82
85
 
83
86
  const tooManyPingsData: Buffer = Buffer.from('too_many_pings', 'ascii');
84
87
 
85
- export interface TcpSubchannelAddress {
86
- port: number;
87
- host: string;
88
- }
89
-
90
- export interface IpcSubchannelAddress {
91
- path: string;
92
- }
93
-
94
- /**
95
- * This represents a single backend address to connect to. This interface is a
96
- * subset of net.SocketConnectOpts, i.e. the options described at
97
- * https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener.
98
- * Those are in turn a subset of the options that can be passed to http2.connect.
99
- */
100
- export type SubchannelAddress = TcpSubchannelAddress | IpcSubchannelAddress;
101
-
102
- export function isTcpSubchannelAddress(
103
- address: SubchannelAddress
104
- ): address is TcpSubchannelAddress {
105
- return 'port' in address;
106
- }
107
-
108
- export function subchannelAddressEqual(
109
- address1: SubchannelAddress,
110
- address2: SubchannelAddress
111
- ): boolean {
112
- if (isTcpSubchannelAddress(address1)) {
113
- return (
114
- isTcpSubchannelAddress(address2) &&
115
- address1.host === address2.host &&
116
- address1.port === address2.port
117
- );
118
- } else {
119
- return !isTcpSubchannelAddress(address2) && address1.path === address2.path;
120
- }
121
- }
122
-
123
- export function subchannelAddressToString(address: SubchannelAddress): string {
124
- if (isTcpSubchannelAddress(address)) {
125
- return address.host + ':' + address.port;
126
- } else {
127
- return address.path;
128
- }
129
- }
130
-
131
88
  export class Subchannel {
132
89
  /**
133
90
  * The subchannel's current connectivity state. Invariant: `session` === `null`
@@ -183,7 +140,7 @@ export class Subchannel {
183
140
  /**
184
141
  * Indicates whether keepalive pings should be sent without any active calls
185
142
  */
186
- private keepaliveWithoutCalls: boolean = false;
143
+ private keepaliveWithoutCalls = false;
187
144
 
188
145
  /**
189
146
  * Tracks calls with references to this subchannel
@@ -199,6 +156,26 @@ export class Subchannel {
199
156
  */
200
157
  private subchannelAddressString: string;
201
158
 
159
+ // Channelz info
160
+ private channelzRef: SubchannelRef;
161
+ private channelzTrace: ChannelzTrace;
162
+ private callTracker = new ChannelzCallTracker();
163
+ private childrenTracker = new ChannelzChildrenTracker();
164
+
165
+ // Channelz socket info
166
+ private channelzSocketRef: SocketRef | null = null;
167
+ /**
168
+ * Name of the remote server, if it is not the same as the subchannel
169
+ * address, i.e. if connecting through an HTTP CONNECT proxy.
170
+ */
171
+ private remoteName: string | null = null;
172
+ private streamTracker = new ChannelzCallTracker();
173
+ private keepalivesSent = 0;
174
+ private messagesSent = 0;
175
+ private messagesReceived = 0;
176
+ private lastMessageSentTimestamp: Date | null = null;
177
+ private lastMessageReceivedTimestamp: Date | null = null;
178
+
202
179
  /**
203
180
  * A class representing a connection to a single backend.
204
181
  * @param channelTarget The target string for the channel as a whole
@@ -231,7 +208,8 @@ export class Subchannel {
231
208
  this.keepaliveTimeoutMs = options['grpc.keepalive_timeout_ms']!;
232
209
  }
233
210
  if ('grpc.keepalive_permit_without_calls' in options) {
234
- this.keepaliveWithoutCalls = options['grpc.keepalive_permit_without_calls'] === 1;
211
+ this.keepaliveWithoutCalls =
212
+ options['grpc.keepalive_permit_without_calls'] === 1;
235
213
  } else {
236
214
  this.keepaliveWithoutCalls = false;
237
215
  }
@@ -247,6 +225,87 @@ export class Subchannel {
247
225
  this.handleBackoffTimer();
248
226
  }, backoffOptions);
249
227
  this.subchannelAddressString = subchannelAddressToString(subchannelAddress);
228
+
229
+ this.channelzRef = registerChannelzSubchannel(this.subchannelAddressString, () => this.getChannelzInfo());
230
+ this.channelzTrace = new ChannelzTrace();
231
+ this.channelzTrace.addTrace('CT_INFO', 'Subchannel created');
232
+ this.trace('Subchannel constructed with options ' + JSON.stringify(options, undefined, 2));
233
+ }
234
+
235
+ private getChannelzInfo(): SubchannelInfo {
236
+ return {
237
+ state: this.connectivityState,
238
+ trace: this.channelzTrace,
239
+ callTracker: this.callTracker,
240
+ children: this.childrenTracker.getChildLists(),
241
+ target: this.subchannelAddressString
242
+ };
243
+ }
244
+
245
+ private getChannelzSocketInfo(): SocketInfo | null {
246
+ if (this.session === null) {
247
+ return null;
248
+ }
249
+ const sessionSocket = this.session.socket;
250
+ const remoteAddress = sessionSocket.remoteAddress ? stringToSubchannelAddress(sessionSocket.remoteAddress, sessionSocket.remotePort) : null;
251
+ const localAddress = stringToSubchannelAddress(sessionSocket.localAddress, sessionSocket.localPort);
252
+ let tlsInfo: TlsInfo | null;
253
+ if (this.session.encrypted) {
254
+ const tlsSocket: TLSSocket = sessionSocket as TLSSocket;
255
+ const cipherInfo: CipherNameAndProtocol & {standardName?: string} = tlsSocket.getCipher();
256
+ const certificate = tlsSocket.getCertificate();
257
+ const peerCertificate = tlsSocket.getPeerCertificate();
258
+ tlsInfo = {
259
+ cipherSuiteStandardName: cipherInfo.standardName ?? null,
260
+ cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,
261
+ localCertificate: (certificate && 'raw' in certificate) ? certificate.raw : null,
262
+ remoteCertificate: (peerCertificate && 'raw' in peerCertificate) ? peerCertificate.raw : null
263
+ };
264
+ } else {
265
+ tlsInfo = null;
266
+ }
267
+ const socketInfo: SocketInfo = {
268
+ remoteAddress: remoteAddress,
269
+ localAddress: localAddress,
270
+ security: tlsInfo,
271
+ remoteName: this.remoteName,
272
+ streamsStarted: this.streamTracker.callsStarted,
273
+ streamsSucceeded: this.streamTracker.callsSucceeded,
274
+ streamsFailed: this.streamTracker.callsFailed,
275
+ messagesSent: this.messagesSent,
276
+ messagesReceived: this.messagesReceived,
277
+ keepAlivesSent: this.keepalivesSent,
278
+ lastLocalStreamCreatedTimestamp: this.streamTracker.lastCallStartedTimestamp,
279
+ lastRemoteStreamCreatedTimestamp: null,
280
+ lastMessageSentTimestamp: this.lastMessageSentTimestamp,
281
+ lastMessageReceivedTimestamp: this.lastMessageReceivedTimestamp,
282
+ localFlowControlWindow: this.session.state.localWindowSize ?? null,
283
+ remoteFlowControlWindow: this.session.state.remoteWindowSize ?? null
284
+ };
285
+ return socketInfo;
286
+ }
287
+
288
+ private resetChannelzSocketInfo() {
289
+ if (this.channelzSocketRef) {
290
+ unregisterChannelzRef(this.channelzSocketRef);
291
+ this.childrenTracker.unrefChild(this.channelzSocketRef);
292
+ this.channelzSocketRef = null;
293
+ }
294
+ this.remoteName = null;
295
+ this.streamTracker = new ChannelzCallTracker();
296
+ this.keepalivesSent = 0;
297
+ this.messagesSent = 0;
298
+ this.messagesReceived = 0;
299
+ this.lastMessageSentTimestamp = null;
300
+ this.lastMessageReceivedTimestamp = null;
301
+ }
302
+
303
+ private trace(text: string): void {
304
+ logging.trace(LogVerbosity.DEBUG, TRACER_NAME, '(' + this.channelzRef.id + ') ' + this.subchannelAddressString + ' ' + text);
305
+ }
306
+
307
+ private refTrace(text: string): void {
308
+ logging.trace(LogVerbosity.DEBUG, 'subchannel_refcount', '(' + this.channelzRef.id + ') ' + this.subchannelAddressString + ' ' + text);
250
309
  }
251
310
 
252
311
  private handleBackoffTimer() {
@@ -276,7 +335,13 @@ export class Subchannel {
276
335
  }
277
336
 
278
337
  private sendPing() {
279
- logging.trace(LogVerbosity.DEBUG, 'keepalive', 'Sending ping to ' + this.subchannelAddressString);
338
+ this.keepalivesSent += 1;
339
+ logging.trace(
340
+ LogVerbosity.DEBUG,
341
+ 'keepalive',
342
+ '(' + this.channelzRef.id + ') ' + this.subchannelAddressString + ' ' +
343
+ 'Sending ping'
344
+ );
280
345
  this.keepaliveTimeoutId = setTimeout(() => {
281
346
  this.transitionToState([ConnectivityState.READY], ConnectivityState.IDLE);
282
347
  }, this.keepaliveTimeoutMs);
@@ -292,7 +357,7 @@ export class Subchannel {
292
357
  this.keepaliveIntervalId = setInterval(() => {
293
358
  this.sendPing();
294
359
  }, this.keepaliveTimeMs);
295
- this.keepaliveIntervalId.unref?.()
360
+ this.keepaliveIntervalId.unref?.();
296
361
  /* Don't send a ping immediately because whatever caused us to start
297
362
  * sending pings should also involve some network activity. */
298
363
  }
@@ -304,9 +369,11 @@ export class Subchannel {
304
369
 
305
370
  private createSession(proxyConnectionResult: ProxyConnectionResult) {
306
371
  if (proxyConnectionResult.realTarget) {
307
- trace(this.subchannelAddressString + ' creating HTTP/2 session through proxy to ' + proxyConnectionResult.realTarget);
372
+ this.remoteName = uriToString(proxyConnectionResult.realTarget);
373
+ this.trace('creating HTTP/2 session through proxy to ' + proxyConnectionResult.realTarget);
308
374
  } else {
309
- trace(this.subchannelAddressString + ' creating HTTP/2 session');
375
+ this.remoteName = null;
376
+ this.trace('creating HTTP/2 session');
310
377
  }
311
378
  const targetAuthority = getDefaultAuthority(
312
379
  proxyConnectionResult.realTarget ?? this.channelTarget
@@ -315,7 +382,9 @@ export class Subchannel {
315
382
  this.credentials._getConnectionOptions() || {};
316
383
  connectionOptions.maxSendHeaderBlockLength = Number.MAX_SAFE_INTEGER;
317
384
  if ('grpc-node.max_session_memory' in this.options) {
318
- connectionOptions.maxSessionMemory = this.options['grpc-node.max_session_memory'];
385
+ connectionOptions.maxSessionMemory = this.options[
386
+ 'grpc-node.max_session_memory'
387
+ ];
319
388
  }
320
389
  let addressScheme = 'http://';
321
390
  if ('secureContext' in connectionOptions) {
@@ -393,6 +462,8 @@ export class Subchannel {
393
462
  connectionOptions
394
463
  );
395
464
  this.session = session;
465
+ this.channelzSocketRef = registerChannelzSocket(this.subchannelAddressString, () => this.getChannelzSocketInfo()!);
466
+ this.childrenTracker.refChild(this.channelzSocketRef);
396
467
  session.unref();
397
468
  /* For all of these events, check if the session at the time of the event
398
469
  * is the same one currently attached to this subchannel, to ensure that
@@ -408,7 +479,7 @@ export class Subchannel {
408
479
  });
409
480
  session.once('close', () => {
410
481
  if (this.session === session) {
411
- trace(this.subchannelAddressString + ' connection closed');
482
+ this.trace('connection closed');
412
483
  this.transitionToState(
413
484
  [ConnectivityState.CONNECTING],
414
485
  ConnectivityState.TRANSIENT_FAILURE
@@ -438,12 +509,15 @@ export class Subchannel {
438
509
  );
439
510
  logging.log(
440
511
  LogVerbosity.ERROR,
441
- `Connection to ${uriToString(this.channelTarget)} at ${this.subchannelAddressString} rejected by server because of excess pings. Increasing ping interval to ${this.keepaliveTimeMs} ms`
512
+ `Connection to ${uriToString(this.channelTarget)} at ${
513
+ this.subchannelAddressString
514
+ } rejected by server because of excess pings. Increasing ping interval to ${
515
+ this.keepaliveTimeMs
516
+ } ms`
442
517
  );
443
518
  }
444
- trace(
445
- this.subchannelAddressString +
446
- ' connection closed by GOAWAY with code ' +
519
+ this.trace(
520
+ 'connection closed by GOAWAY with code ' +
447
521
  errorCode
448
522
  );
449
523
  this.transitionToState(
@@ -456,12 +530,12 @@ export class Subchannel {
456
530
  session.once('error', (error) => {
457
531
  /* Do nothing here. Any error should also trigger a close event, which is
458
532
  * where we want to handle that. */
459
- trace(
460
- this.subchannelAddressString +
461
- ' connection closed with error ' +
533
+ this.trace(
534
+ 'connection closed with error ' +
462
535
  (error as Error).message
463
536
  );
464
537
  });
538
+ registerChannelzSocket(this.subchannelAddressString, () => this.getChannelzSocketInfo()!);
465
539
  }
466
540
 
467
541
  private startConnectingInternal() {
@@ -536,13 +610,12 @@ export class Subchannel {
536
610
  if (oldStates.indexOf(this.connectivityState) === -1) {
537
611
  return false;
538
612
  }
539
- trace(
540
- this.subchannelAddressString +
541
- ' ' +
542
- ConnectivityState[this.connectivityState] +
613
+ this.trace(
614
+ ConnectivityState[this.connectivityState] +
543
615
  ' -> ' +
544
616
  ConnectivityState[newState]
545
617
  );
618
+ this.channelzTrace.addTrace('CT_INFO', ConnectivityState[this.connectivityState] + ' -> ' + ConnectivityState[newState]);
546
619
  const previousState = this.connectivityState;
547
620
  this.connectivityState = newState;
548
621
  switch (newState) {
@@ -567,6 +640,7 @@ export class Subchannel {
567
640
  this.session.close();
568
641
  }
569
642
  this.session = null;
643
+ this.resetChannelzSocketInfo();
570
644
  this.stopKeepalivePings();
571
645
  /* If the backoff timer has already ended by the time we get to the
572
646
  * TRANSIENT_FAILURE state, we want to immediately transition out of
@@ -582,6 +656,7 @@ export class Subchannel {
582
656
  this.session.close();
583
657
  }
584
658
  this.session = null;
659
+ this.resetChannelzSocketInfo();
585
660
  this.stopKeepalivePings();
586
661
  break;
587
662
  default:
@@ -603,20 +678,18 @@ export class Subchannel {
603
678
  /* If no calls, channels, or subchannel pools have any more references to
604
679
  * this subchannel, we can be sure it will never be used again. */
605
680
  if (this.callRefcount === 0 && this.refcount === 0) {
681
+ this.channelzTrace.addTrace('CT_INFO', 'Shutting down');
606
682
  this.transitionToState(
607
- [
608
- ConnectivityState.CONNECTING,
609
- ConnectivityState.READY,
610
- ],
683
+ [ConnectivityState.CONNECTING, ConnectivityState.READY],
611
684
  ConnectivityState.TRANSIENT_FAILURE
612
685
  );
686
+ unregisterChannelzRef(this.channelzRef);
613
687
  }
614
688
  }
615
689
 
616
690
  callRef() {
617
- refTrace(
618
- this.subchannelAddressString +
619
- ' callRefcount ' +
691
+ this.refTrace(
692
+ 'callRefcount ' +
620
693
  this.callRefcount +
621
694
  ' -> ' +
622
695
  (this.callRefcount + 1)
@@ -634,9 +707,8 @@ export class Subchannel {
634
707
  }
635
708
 
636
709
  callUnref() {
637
- refTrace(
638
- this.subchannelAddressString +
639
- ' callRefcount ' +
710
+ this.refTrace(
711
+ 'callRefcount ' +
640
712
  this.callRefcount +
641
713
  ' -> ' +
642
714
  (this.callRefcount - 1)
@@ -655,9 +727,8 @@ export class Subchannel {
655
727
  }
656
728
 
657
729
  ref() {
658
- refTrace(
659
- this.subchannelAddressString +
660
- ' refcount ' +
730
+ this.refTrace(
731
+ 'refcount ' +
661
732
  this.refcount +
662
733
  ' -> ' +
663
734
  (this.refcount + 1)
@@ -666,9 +737,8 @@ export class Subchannel {
666
737
  }
667
738
 
668
739
  unref() {
669
- refTrace(
670
- this.subchannelAddressString +
671
- ' refcount ' +
740
+ this.refTrace(
741
+ 'refcount ' +
672
742
  this.refcount +
673
743
  ' -> ' +
674
744
  (this.refcount - 1)
@@ -695,7 +765,7 @@ export class Subchannel {
695
765
  startCallStream(
696
766
  metadata: Metadata,
697
767
  callStream: Http2CallStream,
698
- extraFilterFactory?: FilterFactory<Filter>
768
+ extraFilters: Filter[]
699
769
  ) {
700
770
  const headers = metadata.toHttp2Headers();
701
771
  headers[HTTP2_HEADER_AUTHORITY] = callStream.getHost();
@@ -726,8 +796,43 @@ export class Subchannel {
726
796
  for (const header of Object.keys(headers)) {
727
797
  headersString += '\t\t' + header + ': ' + headers[header] + '\n';
728
798
  }
729
- logging.trace(LogVerbosity.DEBUG, 'call_stream', 'Starting stream on subchannel ' + this.subchannelAddressString + ' with headers\n' + headersString);
730
- callStream.attachHttp2Stream(http2Stream, this, extraFilterFactory);
799
+ logging.trace(
800
+ LogVerbosity.DEBUG,
801
+ 'call_stream',
802
+ 'Starting stream on subchannel ' +
803
+ '(' + this.channelzRef.id + ') ' +
804
+ this.subchannelAddressString +
805
+ ' with headers\n' +
806
+ headersString
807
+ );
808
+ this.callTracker.addCallStarted();
809
+ callStream.addStatusWatcher(status => {
810
+ if (status.code === Status.OK) {
811
+ this.callTracker.addCallSucceeded();
812
+ } else {
813
+ this.callTracker.addCallFailed();
814
+ }
815
+ });
816
+ const streamSession = this.session;
817
+ this.streamTracker.addCallStarted();
818
+ callStream.addStreamEndWatcher(success => {
819
+ if (streamSession === this.session) {
820
+ if (success) {
821
+ this.streamTracker.addCallSucceeded();
822
+ } else {
823
+ this.streamTracker.addCallFailed();
824
+ }
825
+ }
826
+ });
827
+ callStream.attachHttp2Stream(http2Stream, this, extraFilters, {
828
+ addMessageSent: () => {
829
+ this.messagesSent += 1;
830
+ this.lastMessageSentTimestamp = new Date();
831
+ },
832
+ addMessageReceived: () => {
833
+ this.messagesReceived += 1;
834
+ }
835
+ });
731
836
  }
732
837
 
733
838
  /**
@@ -806,4 +911,8 @@ export class Subchannel {
806
911
  getAddress(): string {
807
912
  return this.subchannelAddressString;
808
913
  }
914
+
915
+ getChannelzRef(): SubchannelRef {
916
+ return this.channelzRef;
917
+ }
809
918
  }
@@ -444,6 +444,37 @@ function generateEnumInterface(formatter, enumType, options, nameOverride) {
444
444
  formatter.unindent();
445
445
  formatter.writeLine('}');
446
446
  }
447
+ /**
448
+ * This is a list of methods that are exist in the generic Client class in the
449
+ * gRPC libraries. TypeScript has a problem with methods in subclasses with the
450
+ * same names as methods in the superclass, but with mismatched APIs. So, we
451
+ * avoid generating methods with these names in the service client interfaces.
452
+ * We always generate two service client methods per service method: one camel
453
+ * cased, and one with the original casing. So we will still generate one
454
+ * service client method for any conflicting name.
455
+ *
456
+ * Technically, at runtime conflicting name in the service client method
457
+ * actually shadows the original method, but TypeScript does not have a good
458
+ * way to represent that. So this change is not 100% accurate, but it gets the
459
+ * generated code to compile.
460
+ *
461
+ * This is just a list of the methods in the Client class definitions in
462
+ * grpc@1.24.11 and @grpc/grpc-js@1.4.0.
463
+ */
464
+ const CLIENT_RESERVED_METHOD_NAMES = new Set([
465
+ 'close',
466
+ 'getChannel',
467
+ 'waitForReady',
468
+ 'makeUnaryRequest',
469
+ 'makeClientStreamRequest',
470
+ 'makeServerStreamRequest',
471
+ 'makeBidiStreamRequest',
472
+ 'resolveCallInterceptors',
473
+ /* These methods are private, but TypeScript is not happy with overriding even
474
+ * private methods with mismatched APIs. */
475
+ 'checkOptionalUnaryResponseArguments',
476
+ 'checkMetadataAndOptions'
477
+ ]);
447
478
  function generateServiceClientInterface(formatter, serviceType, options) {
448
479
  if (options.includeComments) {
449
480
  formatComment(formatter, serviceType.comment);
@@ -453,6 +484,9 @@ function generateServiceClientInterface(formatter, serviceType, options) {
453
484
  for (const methodName of Object.keys(serviceType.methods).sort()) {
454
485
  const method = serviceType.methods[methodName];
455
486
  for (const name of [methodName, camelCase(methodName)]) {
487
+ if (CLIENT_RESERVED_METHOD_NAMES.has(name)) {
488
+ continue;
489
+ }
456
490
  if (options.includeComments) {
457
491
  formatComment(formatter, method.comment);
458
492
  }
@@ -72,6 +72,9 @@ function createDeserializer(cls, options) {
72
72
  }
73
73
  function createSerializer(cls) {
74
74
  return function serialize(arg) {
75
+ if (Array.isArray(arg)) {
76
+ throw new Error(`Failed to serialize message: expected object with ${cls.name} structure, got array instead`);
77
+ }
75
78
  const message = cls.fromObject(arg);
76
79
  return cls.encode(message).finish();
77
80
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grpc/proto-loader",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "author": "Google Inc.",
5
5
  "contributors": [
6
6
  {