@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
@@ -33,22 +33,23 @@ import { FilterStackFactory } from './filter-stack';
33
33
  import { CallCredentialsFilterFactory } from './call-credentials-filter';
34
34
  import { DeadlineFilterFactory } from './deadline-filter';
35
35
  import { CompressionFilterFactory } from './compression-filter';
36
- import { CallConfig, ConfigSelector, getDefaultAuthority, mapUriDefaultScheme } from './resolver';
36
+ import {
37
+ CallConfig,
38
+ ConfigSelector,
39
+ getDefaultAuthority,
40
+ mapUriDefaultScheme,
41
+ } from './resolver';
37
42
  import { trace, log } from './logging';
38
- import { SubchannelAddress } from './subchannel';
43
+ import { SubchannelAddress } from './subchannel-address';
39
44
  import { MaxMessageSizeFilterFactory } from './max-message-size-filter';
40
45
  import { mapProxyName } from './http_proxy';
41
46
  import { GrpcUri, parseUri, uriToString } from './uri-parser';
42
47
  import { ServerSurfaceCall } from './server-call';
43
48
  import { SurfaceCall } from './call';
49
+ import { Filter } from './filter';
44
50
 
45
- export enum ConnectivityState {
46
- IDLE,
47
- CONNECTING,
48
- READY,
49
- TRANSIENT_FAILURE,
50
- SHUTDOWN,
51
- }
51
+ import { ConnectivityState } from './connectivity-state';
52
+ import { ChannelInfo, ChannelRef, ChannelzCallTracker, ChannelzChildrenTracker, ChannelzTrace, registerChannelzChannel, SubchannelRef, unregisterChannelzRef } from './channelz';
52
53
 
53
54
  /**
54
55
  * See https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args
@@ -104,6 +105,12 @@ export interface Channel {
104
105
  deadline: Date | number,
105
106
  callback: (error?: Error) => void
106
107
  ): void;
108
+ /**
109
+ * Get the channelz reference object for this channel. A request to the
110
+ * channelz service for the id in this object will provide information
111
+ * about this channel.
112
+ */
113
+ getChannelzRef(): ChannelRef;
107
114
  /**
108
115
  * Create a call object. Call is an opaque type that is used by the Client
109
116
  * class. This function is called by the gRPC library when starting a
@@ -148,6 +155,7 @@ export class ChannelImplementation implements Channel {
148
155
  callStream: Http2CallStream;
149
156
  callMetadata: Metadata;
150
157
  callConfig: CallConfig;
158
+ dynamicFilters: Filter[];
151
159
  }> = [];
152
160
  private connectivityStateWatchers: ConnectivityStateWatcher[] = [];
153
161
  private defaultAuthority: string;
@@ -162,6 +170,14 @@ export class ChannelImplementation implements Channel {
162
170
  */
163
171
  private callRefTimer: NodeJS.Timer;
164
172
  private configSelector: ConfigSelector | null = null;
173
+
174
+ // Channelz info
175
+ private originalTarget: string;
176
+ private channelzRef: ChannelRef;
177
+ private channelzTrace: ChannelzTrace;
178
+ private callTracker = new ChannelzCallTracker();
179
+ private childrenTracker = new ChannelzChildrenTracker();
180
+
165
181
  constructor(
166
182
  target: string,
167
183
  private readonly credentials: ChannelCredentials,
@@ -176,20 +192,11 @@ export class ChannelImplementation implements Channel {
176
192
  );
177
193
  }
178
194
  if (options) {
179
- if (
180
- typeof options !== 'object' ||
181
- !Object.values(options).every(
182
- (value) =>
183
- typeof value === 'string' ||
184
- typeof value === 'number' ||
185
- typeof value === 'undefined'
186
- )
187
- ) {
188
- throw new TypeError(
189
- 'Channel options must be an object with string or number values'
190
- );
195
+ if (typeof options !== 'object') {
196
+ throw new TypeError('Channel options must be an object');
191
197
  }
192
198
  }
199
+ this.originalTarget = target;
193
200
  const originalTargetUri = parseUri(target);
194
201
  if (originalTargetUri === null) {
195
202
  throw new Error(`Could not parse target name "${target}"`);
@@ -206,6 +213,10 @@ export class ChannelImplementation implements Channel {
206
213
  this.callRefTimer = setInterval(() => {}, MAX_TIMEOUT_TIME);
207
214
  this.callRefTimer.unref?.();
208
215
 
216
+ this.channelzRef = registerChannelzChannel(target, () => this.getChannelzInfo());
217
+ this.channelzTrace = new ChannelzTrace();
218
+ this.channelzTrace.addTrace('CT_INFO', 'Channel created');
219
+
209
220
  if (this.options['grpc.default_authority']) {
210
221
  this.defaultAuthority = this.options['grpc.default_authority'] as string;
211
222
  } else {
@@ -225,20 +236,22 @@ export class ChannelImplementation implements Channel {
225
236
  subchannelAddress: SubchannelAddress,
226
237
  subchannelArgs: ChannelOptions
227
238
  ) => {
228
- return this.subchannelPool.getOrCreateSubchannel(
239
+ const subchannel = this.subchannelPool.getOrCreateSubchannel(
229
240
  this.target,
230
241
  subchannelAddress,
231
242
  Object.assign({}, this.options, subchannelArgs),
232
243
  this.credentials
233
244
  );
245
+ this.channelzTrace.addTrace('CT_INFO', 'Created subchannel or used existing subchannel', subchannel.getChannelzRef());
246
+ return subchannel;
234
247
  },
235
248
  updateState: (connectivityState: ConnectivityState, picker: Picker) => {
236
249
  this.currentPicker = picker;
237
250
  const queueCopy = this.pickQueue.slice();
238
251
  this.pickQueue = [];
239
252
  this.callRefTimerUnref();
240
- for (const { callStream, callMetadata, callConfig } of queueCopy) {
241
- this.tryPick(callStream, callMetadata, callConfig);
253
+ for (const { callStream, callMetadata, callConfig, dynamicFilters } of queueCopy) {
254
+ this.tryPick(callStream, callMetadata, callConfig, dynamicFilters);
242
255
  }
243
256
  this.updateState(connectivityState);
244
257
  },
@@ -248,36 +261,44 @@ export class ChannelImplementation implements Channel {
248
261
  'Resolving load balancer should never call requestReresolution'
249
262
  );
250
263
  },
264
+ addChannelzChild: (child: ChannelRef | SubchannelRef) => {
265
+ this.childrenTracker.refChild(child);
266
+ },
267
+ removeChannelzChild: (child: ChannelRef | SubchannelRef) => {
268
+ this.childrenTracker.unrefChild(child);
269
+ }
251
270
  };
252
271
  this.resolvingLoadBalancer = new ResolvingLoadBalancer(
253
272
  this.target,
254
273
  channelControlHelper,
255
274
  options,
256
275
  (configSelector) => {
276
+ this.channelzTrace.addTrace('CT_INFO', 'Address resolution succeeded');
257
277
  this.configSelector = configSelector;
258
278
  /* We process the queue asynchronously to ensure that the corresponding
259
279
  * load balancer update has completed. */
260
280
  process.nextTick(() => {
261
281
  const localQueue = this.configSelectionQueue;
262
282
  this.configSelectionQueue = [];
263
- this.callRefTimerUnref()
264
- for (const {callStream, callMetadata} of localQueue) {
283
+ this.callRefTimerUnref();
284
+ for (const { callStream, callMetadata } of localQueue) {
265
285
  this.tryGetConfig(callStream, callMetadata);
266
286
  }
267
287
  this.configSelectionQueue = [];
268
288
  });
269
289
  },
270
290
  (status) => {
291
+ this.channelzTrace.addTrace('CT_WARNING', 'Address resolution failed with code ' + status.code + ' and details "' + status.details + '"');
271
292
  if (this.configSelectionQueue.length > 0) {
272
- trace(LogVerbosity.DEBUG, 'channel', 'Name resolution failed for target ' + uriToString(this.target) + ' with calls queued for config selection');
293
+ this.trace('Name resolution failed with calls queued for config selection');
273
294
  }
274
295
  const localQueue = this.configSelectionQueue;
275
296
  this.configSelectionQueue = [];
276
297
  this.callRefTimerUnref();
277
- for (const {callStream, callMetadata} of localQueue) {
298
+ for (const { callStream, callMetadata } of localQueue) {
278
299
  if (callMetadata.getOptions().waitForReady) {
279
300
  this.callRefTimerRef();
280
- this.configSelectionQueue.push({callStream, callMetadata});
301
+ this.configSelectionQueue.push({ callStream, callMetadata });
281
302
  } else {
282
303
  callStream.cancelWithStatus(status.code, status.details);
283
304
  }
@@ -290,26 +311,56 @@ export class ChannelImplementation implements Channel {
290
311
  new MaxMessageSizeFilterFactory(this.options),
291
312
  new CompressionFilterFactory(this),
292
313
  ]);
314
+ this.trace('Channel constructed with options ' + JSON.stringify(options, undefined, 2));
315
+ }
316
+
317
+ private getChannelzInfo(): ChannelInfo {
318
+ return {
319
+ target: this.originalTarget,
320
+ state: this.connectivityState,
321
+ trace: this.channelzTrace,
322
+ callTracker: this.callTracker,
323
+ children: this.childrenTracker.getChildLists()
324
+ };
325
+ }
326
+
327
+ private trace(text: string, verbosityOverride?: LogVerbosity) {
328
+ trace(verbosityOverride ?? LogVerbosity.DEBUG, 'channel', '(' + this.channelzRef.id + ') ' + uriToString(this.target) + ' ' + text);
293
329
  }
294
330
 
295
331
  private callRefTimerRef() {
296
332
  // If the hasRef function does not exist, always run the code
297
333
  if (!this.callRefTimer.hasRef?.()) {
298
- trace(LogVerbosity.DEBUG, 'channel', 'callRefTimer.ref | configSelectionQueue.length=' + this.configSelectionQueue.length + ' pickQueue.length=' + this.pickQueue.length);
334
+ this.trace(
335
+ 'callRefTimer.ref | configSelectionQueue.length=' +
336
+ this.configSelectionQueue.length +
337
+ ' pickQueue.length=' +
338
+ this.pickQueue.length
339
+ );
299
340
  this.callRefTimer.ref?.();
300
341
  }
301
342
  }
302
343
 
303
344
  private callRefTimerUnref() {
304
345
  // If the hasRef function does not exist, always run the code
305
- if ((!this.callRefTimer.hasRef) || (this.callRefTimer.hasRef())) {
306
- trace(LogVerbosity.DEBUG, 'channel', 'callRefTimer.unref | configSelectionQueue.length=' + this.configSelectionQueue.length + ' pickQueue.length=' + this.pickQueue.length);
346
+ if (!this.callRefTimer.hasRef || this.callRefTimer.hasRef()) {
347
+ this.trace(
348
+ 'callRefTimer.unref | configSelectionQueue.length=' +
349
+ this.configSelectionQueue.length +
350
+ ' pickQueue.length=' +
351
+ this.pickQueue.length
352
+ );
307
353
  this.callRefTimer.unref?.();
308
354
  }
309
355
  }
310
356
 
311
- private pushPick(callStream: Http2CallStream, callMetadata: Metadata, callConfig: CallConfig) {
312
- this.pickQueue.push({ callStream, callMetadata, callConfig });
357
+ private pushPick(
358
+ callStream: Http2CallStream,
359
+ callMetadata: Metadata,
360
+ callConfig: CallConfig,
361
+ dynamicFilters: Filter[]
362
+ ) {
363
+ this.pickQueue.push({ callStream, callMetadata, callConfig, dynamicFilters });
313
364
  this.callRefTimerRef();
314
365
  }
315
366
 
@@ -320,11 +371,17 @@ export class ChannelImplementation implements Channel {
320
371
  * @param callStream
321
372
  * @param callMetadata
322
373
  */
323
- private tryPick(callStream: Http2CallStream, callMetadata: Metadata, callConfig: CallConfig) {
324
- const pickResult = this.currentPicker.pick({ metadata: callMetadata, extraPickInfo: callConfig.pickInformation });
325
- trace(
326
- LogVerbosity.DEBUG,
327
- 'channel',
374
+ private tryPick(
375
+ callStream: Http2CallStream,
376
+ callMetadata: Metadata,
377
+ callConfig: CallConfig,
378
+ dynamicFilters: Filter[]
379
+ ) {
380
+ const pickResult = this.currentPicker.pick({
381
+ metadata: callMetadata,
382
+ extraPickInfo: callConfig.pickInformation,
383
+ });
384
+ this.trace(
328
385
  'Pick result: ' +
329
386
  PickResultType[pickResult.pickResultType] +
330
387
  ' subchannel: ' +
@@ -357,7 +414,7 @@ export class ChannelImplementation implements Channel {
357
414
  ' has state ' +
358
415
  ConnectivityState[pickResult.subchannel!.getConnectivityState()]
359
416
  );
360
- this.pushPick(callStream, callMetadata, callConfig);
417
+ this.pushPick(callStream, callMetadata, callConfig, dynamicFilters);
361
418
  break;
362
419
  }
363
420
  /* We need to clone the callMetadata here because the transparent
@@ -370,10 +427,11 @@ export class ChannelImplementation implements Channel {
370
427
  const subchannelState: ConnectivityState = pickResult.subchannel!.getConnectivityState();
371
428
  if (subchannelState === ConnectivityState.READY) {
372
429
  try {
430
+ const pickExtraFilters = pickResult.extraFilterFactories.map(factory => factory.createFilter(callStream));
373
431
  pickResult.subchannel!.startCallStream(
374
432
  finalMetadata,
375
433
  callStream,
376
- pickResult.extraFilterFactory ?? undefined
434
+ [...dynamicFilters, ...pickExtraFilters]
377
435
  );
378
436
  /* If we reach this point, the call stream has started
379
437
  * successfully */
@@ -397,51 +455,50 @@ export class ChannelImplementation implements Channel {
397
455
  * the stream because the correct behavior may be
398
456
  * re-queueing instead, based on the logic in the rest of
399
457
  * tryPick */
400
- trace(
401
- LogVerbosity.INFO,
402
- 'channel',
458
+ this.trace(
403
459
  'Failed to start call on picked subchannel ' +
404
460
  pickResult.subchannel!.getAddress() +
405
461
  ' with error ' +
406
462
  (error as Error).message +
407
- '. Retrying pick'
463
+ '. Retrying pick',
464
+ LogVerbosity.INFO
408
465
  );
409
- this.tryPick(callStream, callMetadata, callConfig);
466
+ this.tryPick(callStream, callMetadata, callConfig, dynamicFilters);
410
467
  } else {
411
- trace(
412
- LogVerbosity.INFO,
413
- 'channel',
468
+ this.trace(
414
469
  'Failed to start call on picked subchanel ' +
415
470
  pickResult.subchannel!.getAddress() +
416
471
  ' with error ' +
417
472
  (error as Error).message +
418
- '. Ending call'
473
+ '. Ending call',
474
+ LogVerbosity.INFO
419
475
  );
420
476
  callStream.cancelWithStatus(
421
477
  Status.INTERNAL,
422
- `Failed to start HTTP/2 stream with error: ${(error as Error).message}`
478
+ `Failed to start HTTP/2 stream with error: ${
479
+ (error as Error).message
480
+ }`
423
481
  );
424
482
  }
425
483
  }
426
484
  } else {
427
485
  /* The logic for doing this here is the same as in the catch
428
486
  * block above */
429
- trace(
430
- LogVerbosity.INFO,
431
- 'channel',
487
+ this.trace(
432
488
  'Picked subchannel ' +
433
489
  pickResult.subchannel!.getAddress() +
434
490
  ' has state ' +
435
491
  ConnectivityState[subchannelState] +
436
- ' after metadata filters. Retrying pick'
492
+ ' after metadata filters. Retrying pick',
493
+ LogVerbosity.INFO
437
494
  );
438
- this.tryPick(callStream, callMetadata, callConfig);
495
+ this.tryPick(callStream, callMetadata, callConfig, dynamicFilters);
439
496
  }
440
497
  },
441
498
  (error: Error & { code: number }) => {
442
499
  // We assume the error code isn't 0 (Status.OK)
443
500
  callStream.cancelWithStatus(
444
- (typeof error.code === 'number') ? error.code : Status.UNKNOWN,
501
+ typeof error.code === 'number' ? error.code : Status.UNKNOWN,
445
502
  `Getting metadata from plugin failed with error: ${error.message}`
446
503
  );
447
504
  }
@@ -449,11 +506,11 @@ export class ChannelImplementation implements Channel {
449
506
  }
450
507
  break;
451
508
  case PickResultType.QUEUE:
452
- this.pushPick(callStream, callMetadata, callConfig);
509
+ this.pushPick(callStream, callMetadata, callConfig, dynamicFilters);
453
510
  break;
454
511
  case PickResultType.TRANSIENT_FAILURE:
455
512
  if (callMetadata.getOptions().waitForReady) {
456
- this.pushPick(callStream, callMetadata, callConfig);
513
+ this.pushPick(callStream, callMetadata, callConfig, dynamicFilters);
457
514
  } else {
458
515
  callStream.cancelWithStatus(
459
516
  pickResult.status!.code,
@@ -489,17 +546,19 @@ export class ChannelImplementation implements Channel {
489
546
  trace(
490
547
  LogVerbosity.DEBUG,
491
548
  'connectivity_state',
492
- uriToString(this.target) +
549
+ '(' + this.channelzRef.id + ') ' +
550
+ uriToString(this.target) +
493
551
  ' ' +
494
552
  ConnectivityState[this.connectivityState] +
495
553
  ' -> ' +
496
554
  ConnectivityState[newState]
497
555
  );
556
+ this.channelzTrace.addTrace('CT_INFO', ConnectivityState[this.connectivityState] + ' -> ' + ConnectivityState[newState]);
498
557
  this.connectivityState = newState;
499
558
  const watchersCopy = this.connectivityStateWatchers.slice();
500
559
  for (const watcherObject of watchersCopy) {
501
560
  if (newState !== watcherObject.currentState) {
502
- if(watcherObject.timer) {
561
+ if (watcherObject.timer) {
503
562
  clearTimeout(watcherObject.timer);
504
563
  }
505
564
  this.removeConnectivityStateWatcher(watcherObject);
@@ -509,23 +568,64 @@ export class ChannelImplementation implements Channel {
509
568
  }
510
569
 
511
570
  private tryGetConfig(stream: Http2CallStream, metadata: Metadata) {
571
+ if (stream.getStatus() !== null) {
572
+ /* If the stream has a status, it has already finished and we don't need
573
+ * to take any more actions on it. */
574
+ return;
575
+ }
512
576
  if (this.configSelector === null) {
513
577
  /* This branch will only be taken at the beginning of the channel's life,
514
578
  * before the resolver ever returns a result. So, the
515
579
  * ResolvingLoadBalancer may be idle and if so it needs to be kicked
516
580
  * because it now has a pending request. */
517
581
  this.resolvingLoadBalancer.exitIdle();
518
- this.configSelectionQueue.push({
582
+ this.configSelectionQueue.push({
519
583
  callStream: stream,
520
- callMetadata: metadata
584
+ callMetadata: metadata,
521
585
  });
522
586
  this.callRefTimerRef();
523
587
  } else {
524
588
  const callConfig = this.configSelector(stream.getMethod(), metadata);
525
589
  if (callConfig.status === Status.OK) {
526
- this.tryPick(stream, metadata, callConfig);
590
+ if (callConfig.methodConfig.timeout) {
591
+ const deadline = new Date();
592
+ deadline.setSeconds(
593
+ deadline.getSeconds() + callConfig.methodConfig.timeout.seconds
594
+ );
595
+ deadline.setMilliseconds(
596
+ deadline.getMilliseconds() +
597
+ callConfig.methodConfig.timeout.nanos / 1_000_000
598
+ );
599
+ stream.setConfigDeadline(deadline);
600
+ // Refreshing the filters makes the deadline filter pick up the new deadline
601
+ stream.filterStack.refresh();
602
+ }
603
+ if (callConfig.dynamicFilterFactories.length > 0) {
604
+ /* These dynamicFilters are the mechanism for implementing gRFC A39:
605
+ * https://github.com/grpc/proposal/blob/master/A39-xds-http-filters.md
606
+ * We run them here instead of with the rest of the filters because
607
+ * that spec says "the xDS HTTP filters will run in between name
608
+ * resolution and load balancing".
609
+ *
610
+ * We use the filter stack here to simplify the multi-filter async
611
+ * waterfall logic, but we pass along the underlying list of filters
612
+ * to avoid having nested filter stacks when combining it with the
613
+ * original filter stack. We do not pass along the original filter
614
+ * factory list because these filters may need to persist data
615
+ * between sending headers and other operations. */
616
+ const dynamicFilterStackFactory = new FilterStackFactory(callConfig.dynamicFilterFactories);
617
+ const dynamicFilterStack = dynamicFilterStackFactory.createFilter(stream);
618
+ dynamicFilterStack.sendMetadata(Promise.resolve(metadata)).then(filteredMetadata => {
619
+ this.tryPick(stream, filteredMetadata, callConfig, dynamicFilterStack.getFilters());
620
+ });
621
+ } else {
622
+ this.tryPick(stream, metadata, callConfig, []);
623
+ }
527
624
  } else {
528
- stream.cancelWithStatus(callConfig.status, "Failed to route call to method " + stream.getMethod());
625
+ stream.cancelWithStatus(
626
+ callConfig.status,
627
+ 'Failed to route call to method ' + stream.getMethod()
628
+ );
529
629
  }
530
630
  }
531
631
  }
@@ -538,6 +638,7 @@ export class ChannelImplementation implements Channel {
538
638
  this.resolvingLoadBalancer.destroy();
539
639
  this.updateState(ConnectivityState.SHUTDOWN);
540
640
  clearInterval(this.callRefTimer);
641
+ unregisterChannelzRef(this.channelzRef);
541
642
 
542
643
  this.subchannelPool.unrefUnusedSubchannels();
543
644
  }
@@ -563,7 +664,7 @@ export class ChannelImplementation implements Channel {
563
664
  throw new Error('Channel has been shut down');
564
665
  }
565
666
  let timer = null;
566
- if(deadline !== Infinity) {
667
+ if (deadline !== Infinity) {
567
668
  const deadlineDate: Date =
568
669
  deadline instanceof Date ? deadline : new Date(deadline);
569
670
  const now = new Date();
@@ -579,16 +680,20 @@ export class ChannelImplementation implements Channel {
579
680
  callback(
580
681
  new Error('Deadline passed without connectivity state change')
581
682
  );
582
- }, deadlineDate.getTime() - now.getTime())
683
+ }, deadlineDate.getTime() - now.getTime());
583
684
  }
584
685
  const watcherObject = {
585
686
  currentState,
586
687
  callback,
587
- timer
688
+ timer,
588
689
  };
589
690
  this.connectivityStateWatchers.push(watcherObject);
590
691
  }
591
692
 
693
+ getChannelzRef() {
694
+ return this.channelzRef;
695
+ }
696
+
592
697
  createCall(
593
698
  method: string,
594
699
  deadline: Deadline,
@@ -608,11 +713,8 @@ export class ChannelImplementation implements Channel {
608
713
  throw new Error('Channel has been shut down');
609
714
  }
610
715
  const callNumber = getNewCallNumber();
611
- trace(
612
- LogVerbosity.DEBUG,
613
- 'channel',
614
- uriToString(this.target) +
615
- ' createCall [' +
716
+ this.trace(
717
+ 'createCall [' +
616
718
  callNumber +
617
719
  '] method="' +
618
720
  method +
@@ -633,6 +735,14 @@ export class ChannelImplementation implements Channel {
633
735
  this.credentials._getCallCredentials(),
634
736
  callNumber
635
737
  );
738
+ this.callTracker.addCallStarted();
739
+ stream.addStatusWatcher(status => {
740
+ if (status.code === Status.OK) {
741
+ this.callTracker.addCallSucceeded();
742
+ } else {
743
+ this.callTracker.addCallFailed();
744
+ }
745
+ });
636
746
  return stream;
637
747
  }
638
748
  }