@metamask-previews/network-controller 36.0.0-preview-8bfa290fb → 37.0.0-preview-0a30e47

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 (158) hide show
  1. package/CHANGELOG.md +24 -3
  2. package/dist/{NetworkController-method-action-types.d.mts → NetworkController-method-action-types.d.ts} +2 -2
  3. package/dist/NetworkController-method-action-types.d.ts.map +1 -0
  4. package/dist/{NetworkController-method-action-types.mjs → NetworkController-method-action-types.js} +1 -1
  5. package/dist/NetworkController-method-action-types.js.map +1 -0
  6. package/dist/{NetworkController.d.cts → NetworkController.d.ts} +37 -29
  7. package/dist/NetworkController.d.ts.map +1 -0
  8. package/dist/{NetworkController.mjs → NetworkController.js} +717 -615
  9. package/dist/NetworkController.js.map +1 -0
  10. package/dist/{constants.d.cts → constants.d.ts} +1 -1
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/{constants.mjs → constants.js} +1 -1
  13. package/dist/constants.js.map +1 -0
  14. package/dist/{create-auto-managed-network-client.d.cts → create-auto-managed-network-client.d.ts} +7 -7
  15. package/dist/create-auto-managed-network-client.d.ts.map +1 -0
  16. package/dist/{create-auto-managed-network-client.mjs → create-auto-managed-network-client.js} +4 -4
  17. package/dist/create-auto-managed-network-client.js.map +1 -0
  18. package/dist/{create-network-client.d.cts → create-network-client.d.ts} +7 -7
  19. package/dist/create-network-client.d.ts.map +1 -0
  20. package/dist/{create-network-client.mjs → create-network-client.js} +17 -14
  21. package/dist/create-network-client.js.map +1 -0
  22. package/dist/{index.d.cts → index.d.ts} +16 -16
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +6 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/logger.d.ts +4 -0
  27. package/dist/logger.d.ts.map +1 -0
  28. package/dist/logger.js +4 -0
  29. package/dist/logger.js.map +1 -0
  30. package/dist/rpc-service/{abstract-rpc-service.d.cts → abstract-rpc-service.d.ts} +2 -2
  31. package/dist/rpc-service/abstract-rpc-service.d.ts.map +1 -0
  32. package/dist/rpc-service/abstract-rpc-service.js +2 -0
  33. package/dist/rpc-service/abstract-rpc-service.js.map +1 -0
  34. package/dist/rpc-service/{rpc-service-chain.d.cts → rpc-service-chain.d.ts} +6 -6
  35. package/dist/rpc-service/rpc-service-chain.d.ts.map +1 -0
  36. package/dist/rpc-service/{rpc-service-chain.mjs → rpc-service-chain.js} +57 -70
  37. package/dist/rpc-service/rpc-service-chain.js.map +1 -0
  38. package/dist/rpc-service/{rpc-service-requestable.d.cts → rpc-service-requestable.d.ts} +4 -4
  39. package/dist/rpc-service/rpc-service-requestable.d.ts.map +1 -0
  40. package/dist/rpc-service/rpc-service-requestable.js +2 -0
  41. package/dist/rpc-service/rpc-service-requestable.js.map +1 -0
  42. package/dist/rpc-service/{rpc-service.d.mts → rpc-service.d.ts} +6 -6
  43. package/dist/rpc-service/rpc-service.d.ts.map +1 -0
  44. package/dist/rpc-service/{rpc-service.mjs → rpc-service.js} +206 -197
  45. package/dist/rpc-service/rpc-service.js.map +1 -0
  46. package/dist/rpc-service/{shared.d.cts → shared.d.ts} +2 -2
  47. package/dist/rpc-service/shared.d.ts.map +1 -0
  48. package/dist/rpc-service/shared.js +2 -0
  49. package/dist/rpc-service/shared.js.map +1 -0
  50. package/dist/{rpc-service-analytics.d.mts → rpc-service-analytics.d.ts} +3 -3
  51. package/dist/rpc-service-analytics.d.ts.map +1 -0
  52. package/dist/{rpc-service-analytics.mjs → rpc-service-analytics.js} +4 -4
  53. package/dist/rpc-service-analytics.js.map +1 -0
  54. package/dist/{selectors.d.mts → selectors.d.ts} +2 -2
  55. package/dist/selectors.d.ts.map +1 -0
  56. package/dist/{selectors.mjs → selectors.js} +1 -1
  57. package/dist/selectors.js.map +1 -0
  58. package/dist/{types.d.cts → types.d.ts} +5 -5
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/{types.mjs → types.js} +1 -1
  61. package/dist/types.js.map +1 -0
  62. package/package.json +26 -30
  63. package/dist/NetworkController-method-action-types.cjs +0 -7
  64. package/dist/NetworkController-method-action-types.cjs.map +0 -1
  65. package/dist/NetworkController-method-action-types.d.cts +0 -268
  66. package/dist/NetworkController-method-action-types.d.cts.map +0 -1
  67. package/dist/NetworkController-method-action-types.d.mts.map +0 -1
  68. package/dist/NetworkController-method-action-types.mjs.map +0 -1
  69. package/dist/NetworkController.cjs +0 -1599
  70. package/dist/NetworkController.cjs.map +0 -1
  71. package/dist/NetworkController.d.cts.map +0 -1
  72. package/dist/NetworkController.d.mts +0 -956
  73. package/dist/NetworkController.d.mts.map +0 -1
  74. package/dist/NetworkController.mjs.map +0 -1
  75. package/dist/constants.cjs +0 -46
  76. package/dist/constants.cjs.map +0 -1
  77. package/dist/constants.d.cts.map +0 -1
  78. package/dist/constants.d.mts +0 -42
  79. package/dist/constants.d.mts.map +0 -1
  80. package/dist/constants.mjs.map +0 -1
  81. package/dist/create-auto-managed-network-client.cjs +0 -149
  82. package/dist/create-auto-managed-network-client.cjs.map +0 -1
  83. package/dist/create-auto-managed-network-client.d.cts.map +0 -1
  84. package/dist/create-auto-managed-network-client.d.mts +0 -74
  85. package/dist/create-auto-managed-network-client.d.mts.map +0 -1
  86. package/dist/create-auto-managed-network-client.mjs.map +0 -1
  87. package/dist/create-network-client.cjs +0 -439
  88. package/dist/create-network-client.cjs.map +0 -1
  89. package/dist/create-network-client.d.cts.map +0 -1
  90. package/dist/create-network-client.d.mts +0 -60
  91. package/dist/create-network-client.d.mts.map +0 -1
  92. package/dist/create-network-client.mjs.map +0 -1
  93. package/dist/index.cjs +0 -31
  94. package/dist/index.cjs.map +0 -1
  95. package/dist/index.d.cts.map +0 -1
  96. package/dist/index.d.mts +0 -16
  97. package/dist/index.d.mts.map +0 -1
  98. package/dist/index.mjs +0 -6
  99. package/dist/index.mjs.map +0 -1
  100. package/dist/logger.cjs +0 -7
  101. package/dist/logger.cjs.map +0 -1
  102. package/dist/logger.d.cts +0 -5
  103. package/dist/logger.d.cts.map +0 -1
  104. package/dist/logger.d.mts +0 -5
  105. package/dist/logger.d.mts.map +0 -1
  106. package/dist/logger.mjs +0 -4
  107. package/dist/logger.mjs.map +0 -1
  108. package/dist/rpc-service/abstract-rpc-service.cjs +0 -3
  109. package/dist/rpc-service/abstract-rpc-service.cjs.map +0 -1
  110. package/dist/rpc-service/abstract-rpc-service.d.cts.map +0 -1
  111. package/dist/rpc-service/abstract-rpc-service.d.mts +0 -17
  112. package/dist/rpc-service/abstract-rpc-service.d.mts.map +0 -1
  113. package/dist/rpc-service/abstract-rpc-service.mjs +0 -2
  114. package/dist/rpc-service/abstract-rpc-service.mjs.map +0 -1
  115. package/dist/rpc-service/rpc-service-chain.cjs +0 -304
  116. package/dist/rpc-service/rpc-service-chain.cjs.map +0 -1
  117. package/dist/rpc-service/rpc-service-chain.d.cts.map +0 -1
  118. package/dist/rpc-service/rpc-service-chain.d.mts +0 -169
  119. package/dist/rpc-service/rpc-service-chain.d.mts.map +0 -1
  120. package/dist/rpc-service/rpc-service-chain.mjs.map +0 -1
  121. package/dist/rpc-service/rpc-service-requestable.cjs +0 -3
  122. package/dist/rpc-service/rpc-service-requestable.cjs.map +0 -1
  123. package/dist/rpc-service/rpc-service-requestable.d.cts.map +0 -1
  124. package/dist/rpc-service/rpc-service-requestable.d.mts +0 -63
  125. package/dist/rpc-service/rpc-service-requestable.d.mts.map +0 -1
  126. package/dist/rpc-service/rpc-service-requestable.mjs +0 -2
  127. package/dist/rpc-service/rpc-service-requestable.mjs.map +0 -1
  128. package/dist/rpc-service/rpc-service.cjs +0 -540
  129. package/dist/rpc-service/rpc-service.cjs.map +0 -1
  130. package/dist/rpc-service/rpc-service.d.cts +0 -247
  131. package/dist/rpc-service/rpc-service.d.cts.map +0 -1
  132. package/dist/rpc-service/rpc-service.d.mts.map +0 -1
  133. package/dist/rpc-service/rpc-service.mjs.map +0 -1
  134. package/dist/rpc-service/shared.cjs +0 -3
  135. package/dist/rpc-service/shared.cjs.map +0 -1
  136. package/dist/rpc-service/shared.d.cts.map +0 -1
  137. package/dist/rpc-service/shared.d.mts +0 -32
  138. package/dist/rpc-service/shared.d.mts.map +0 -1
  139. package/dist/rpc-service/shared.mjs +0 -2
  140. package/dist/rpc-service/shared.mjs.map +0 -1
  141. package/dist/rpc-service-analytics.cjs +0 -180
  142. package/dist/rpc-service-analytics.cjs.map +0 -1
  143. package/dist/rpc-service-analytics.d.cts +0 -85
  144. package/dist/rpc-service-analytics.d.cts.map +0 -1
  145. package/dist/rpc-service-analytics.d.mts.map +0 -1
  146. package/dist/rpc-service-analytics.mjs.map +0 -1
  147. package/dist/selectors.cjs +0 -16
  148. package/dist/selectors.cjs.map +0 -1
  149. package/dist/selectors.d.cts +0 -22
  150. package/dist/selectors.d.cts.map +0 -1
  151. package/dist/selectors.d.mts.map +0 -1
  152. package/dist/selectors.mjs.map +0 -1
  153. package/dist/types.cjs +0 -12
  154. package/dist/types.cjs.map +0 -1
  155. package/dist/types.d.cts.map +0 -1
  156. package/dist/types.d.mts +0 -49
  157. package/dist/types.d.mts.map +0 -1
  158. package/dist/types.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-network-client.mjs","sourceRoot":"","sources":["../src/create-network-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0CAA0C;AAE1E,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACpB,mCAAmC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,oCAAoC;AAClE,OAAO,EAAE,sBAAsB,EAAE,sCAAsC;AACvE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,+BAA+B,EAC/B,qCAAqC,EACrC,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC7B,0CAA0C;AAC3C,OAAO,EAAE,gBAAgB,EAAE,wCAAwC;AACnE,OAAO,EAAE,wBAAwB,EAAE,wCAAwC;AAC3E,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,EACL,wBAAwB,EACxB,eAAe,EAChB,qCAAqC;AAKtC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,wBAAwB;AAQ3D,OAAO,EAAE,eAAe,EAAE,4CAA2C;AAErE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACf,sCAAqC;AAOtC,OAAO,EAAE,iBAAiB,EAAE,oBAAmB;AAE/C,MAAM,MAAM,GAAG,IAAI,CAAC;AAkBpB;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAmBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,EAAE,EACF,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,MAAM,GAaP;IACC,MAAM,kBAAkB,GACtB,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;QAC7C,CAAC,CAAC,WAAW,aAAa,CAAC,OAAO,iBAAiB,aAAa,CAAC,eAAe,EAAE;QAClF,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;IAC3B,MAAM,eAAe,GAAG,qBAAqB,CAAC;QAC5C,EAAE;QACF,kBAAkB;QAClB,aAAa;QACb,oBAAoB;QACpB,SAAS;QACT,eAAe;QACf,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,gBAAkC,CAAC;IACvC,IAAI,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACpD,gBAAgB,GAAG,cAAc,CAC/B,sBAAsB,CAAC;YACrB,UAAU,EAAE,eAAe;YAC3B,OAAO,EAAE;gBACP,MAAM,EAAE,UAAU;aACnB;SACF,CAAC,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG,qBAAqB,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,WAAW,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,iBAAiB,EAAE,aAAa,CAAC,IAAI;QACrC,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,WAAW;KACtB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GACrB,aAAa,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;QAC7C,CAAC,CAAC,6BAA6B,CAAC;YAC5B,YAAY;YACZ,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,WAAW;YACX,gBAAgB;SACjB,CAAC;QACJ,CAAC,CAAC,6BAA6B,CAAC;YAC5B,YAAY;YACZ,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,gBAAgB;SACjB,CAAC,CAAC;IAET,MAAM,QAAQ,GAAa,IAAI,gBAAgB,CAAC;QAC9C,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;YAC7B,UAAU,EAAE,CAAC,iBAAiB,CAAC;SAChC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,gFAAgF;QAChF,mEAAmE;QACnE,YAAY,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CAAC,EAC7B,kBAAkB,EAClB,eAAe,EACf,eAAe,GAKhB;IACC,MAAM,iBAAiB,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9D,GAAG;QACH,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC,CAAC;IACJ,gHAAgH;IAChH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE7E,IACE,eAAe,KAAK,QAAQ;QAC5B,QAAQ;QACR,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAC5B,CAAC;QACD,4EAA4E;QAC5E,0EAA0E;QAC1E,2DAA2D;QAC3D,4EAA4E;QAC5E,sDAAsD;QACtD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,IAAI,eAAe,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;QAC9C,OAAO;YACL,EAAE,GAAG,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE;YAC9C,GAAG,iBAAiB;SACrB,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,qBAAqB,CAAC,EAC7B,EAAE,EACF,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,MAAM,GAWP;IACC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;QAC/C,kBAAkB;QAClB,eAAe,EAAE,aAAa,CAAC,eAAe;QAC9C,eAAe;KAChB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,GAAY,EAAE;QAC9B,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC5E,OAAO,CACL,iBAAiB,CAAC,kBAAkB,KAAK,qBAAqB,CAAC,OAAO,CACvE,CAAC;IACJ,CAAC,CAAC;IAEF,mEAAmE;IACnE,2DAA2D;IAC3D,EAAE;IACF,iEAAiE;IACjE,uEAAuE;IACvE,kBAAkB;IAClB,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;IAEhE,+DAA+D;IAC/D,2BAA2B;IAC3B,EAAE;IACF,mEAAmE;IACnE,kEAAkE;IAClE,wCAAwC;IACxC,MAAM,8BAA8B,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAEtE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnE,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACxC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACtC,SAAS;YACT,aAAa,EAAE;gBACb,UAAU,EAAE,mBAAmB;gBAC/B,oBAAoB,EAAE,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;gBACzD,sBAAsB,EAAE,QAAQ,CAAC,UAAU;oBACzC,CAAC,CAAC,8BAA8B;oBAChC,CAAC,CAAC,sBAAsB;gBAC1B,GAAG,CAAC,iBAAiB,CAAC,aAAa,IAAI,EAAE,CAAC;aAC3C;YACD,GAAG,iBAAiB;YACpB,WAAW,EAAE,QAAQ,CAAC,GAAG;YACzB,MAAM;SACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,QAAQ,GAAG,CACf,KAA6D,EAChC,EAAE;QAC/B,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC;QAC1C,wBAAwB,CAAC,CAAC,CAAC;QAC3B,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;KACrC,CAAC,CAAC;IAEH,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,2EAA2E;YAC3E,oEAAoE;YACpE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,+CAA+C,EAAE;YACjE,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,eAAe,EAAE,EAAE;YACnB,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,cAAc,CAC5B,CAAC,EACC,WAAW,EACX,kBAAkB,EAAE,2BAA2B,EAC/C,GAAG,IAAI,EACR,EAAE,EAAE;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,2EAA2E;YAC3E,oEAAoE;YACpE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,0CAA0C,EAAE;YAC5D,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,eAAe,EAAE,EAAE;YACnB,kBAAkB,EAAE,2BAA2B;YAC/C,WAAW;YACX,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,eAAe,CAAC,UAAU,CACxB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC7D,SAAS,CAAC,OAAO,CAAC,4CAA4C,EAAE;YAC9D,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,eAAe,EAAE,EAAE;YACnB,KAAK;YACL,aAAa;YACb,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,WAAW,EACT,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,eAAe,CAAC,iBAAiB,CAC/B,CAAC,EACC,WAAW,EACX,kBAAkB,EAAE,2BAA2B,EAC/C,aAAa,EACb,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,EACR,EAAE,EAAE;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,IAAI,GACR,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAE7D,SAAS,CAAC,OAAO,CAAC,uCAAuC,EAAE;YACzD,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,eAAe,EAAE,EAAE;YACnB,kBAAkB,EAAE,2BAA2B;YAC/C,WAAW;YACX,KAAK;YACL,aAAa;YACb,QAAQ;YACR,OAAO;YACP,IAAI;YACJ,WAAW,EACT,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/B,SAAS,CAAC,OAAO,CAAC,6CAA6C,EAAE;YAC/D,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,eAAe,EAAE,EAAE;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,cAAc,CAC5B,CAAC,EACC,OAAO,EACP,WAAW,EACX,kBAAkB,EAAE,2BAA2B,GAChD,EAAE,EAAE;QACH,SAAS,CAAC,OAAO,CAAC,sCAAsC,EAAE;YACxD,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,eAAe,EAAE,EAAE;YACnB,kBAAkB,EAAE,2BAA2B;YAC/C,WAAW;YACX,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CAAC,EAC1B,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,QAAQ,GAQT;IACC,MAAM,cAAc,GAAG;QACrB,eAAe;QACb,sBAAsB;QACtB,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,MAAM;YACnE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;YACpC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;QACzC,YAAY,EAAE,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC;KAClD,CAAC;IAEF,OAAO,IAAI,mBAAmB,CAAC;QAC7B,GAAG,cAAc;QACjB,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1B,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,6BAA6B,CAAC,EACrC,YAAY,EACZ,OAAO,EACP,WAAW,EACX,gBAAgB,GAMjB;IAKC,OAAO,eAAe,CAAC,MAAM,CAAC;QAC5B,UAAU,EAAE;YACV,iCAAiC,CAAC,EAAE,OAAO,EAAE,CAAC;YAC9C,0BAA0B,CAAC,EAAE,YAAY,EAAE,CAAC;YAC5C,6BAA6B,EAAE;YAC/B,wBAAwB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;YACjE,4BAA4B,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;YACrE,qCAAqC,CAAC,EAAE,YAAY,EAAE,CAAC;YACvD,gBAAgB;SACjB;KACF,CAAC,CAAC,YAAY,EAAE,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iCAAiC,CAAC,EACzC,OAAO,GAGR;IACC,OAAO,wBAAwB,CAAC;QAC9B,WAAW,EAAE,OAAO;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,uBAAuB,GAAG,CAC9B,OAAY,EAC6B,EAAE;IAC3C,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,6BAA6B,CAAC,EACrC,YAAY,EACZ,OAAO,EACP,gBAAgB,GAKjB;IAKC,sBAAsB;IACtB,iDAAiD;IACjD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO;QACzC,CAAC,CAAC,CAAC,oCAAoC,EAAE,CAAC;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,eAAe,CAAC,MAAM,CAAC;QAC5B,UAAU,EAAE;YACV,GAAG,eAAe;YAClB,uBAAuB,CAAC,OAAO,CAAC;YAChC,+BAA+B,CAAC,EAAE,YAAY,EAAE,CAAC;YACjD,0BAA0B,CAAC,EAAE,YAAY,EAAE,CAAC;YAC5C,6BAA6B,EAAE;YAC/B,qCAAqC,CAAC,EAAE,YAAY,EAAE,CAAC;YACvD,gBAAgB;SACjB;KACF,CAAC,CAAC,YAAY,EAAE,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAS,oCAAoC;IAI3C,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;YACzC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { CONNECTIVITY_STATUSES } from '@metamask/connectivity-controller';\nimport type { CockatielFailureReason } from '@metamask/controller-utils';\nimport {\n DEFAULT_MAX_CONSECUTIVE_FAILURES,\n DEFAULT_MAX_RETRIES,\n} from '@metamask/controller-utils';\nimport type { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker';\nimport { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport { createInfuraMiddleware } from '@metamask/eth-json-rpc-infura';\nimport {\n createBlockCacheMiddleware,\n createBlockRefMiddleware,\n createBlockRefRewriteMiddleware,\n createBlockTrackerInspectorMiddleware,\n createInflightCacheMiddleware,\n createFetchMiddleware,\n createRetryOnEmptyMiddleware,\n} from '@metamask/eth-json-rpc-middleware';\nimport { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport { providerFromMiddlewareV2 } from '@metamask/eth-json-rpc-provider';\nimport { asV2Middleware } from '@metamask/json-rpc-engine';\nimport {\n createScaffoldMiddleware,\n JsonRpcEngineV2,\n} from '@metamask/json-rpc-engine/v2';\nimport type {\n JsonRpcMiddleware,\n MiddlewareContext,\n} from '@metamask/json-rpc-engine/v2';\nimport { inMilliseconds, Duration } from '@metamask/utils';\nimport type { Hex, Json, JsonRpcRequest } from '@metamask/utils';\nimport type { Logger } from 'loglevel';\n\nimport type {\n NetworkClientId,\n NetworkControllerMessenger,\n} from './NetworkController.js';\nimport { RpcServiceChain } from './rpc-service/rpc-service-chain.js';\nimport type { RpcServiceOptionsWithDefaults } from './rpc-service/rpc-service.js';\nimport {\n isConnectionError,\n isConnectionResetError,\n isJsonParseError,\n isHttpServerError,\n isTimeoutError,\n} from './rpc-service/rpc-service.js';\nimport type { RpcFailoverMode } from './selectors.js';\nimport type {\n BlockTracker,\n NetworkClientConfiguration,\n Provider,\n} from './types.js';\nimport { NetworkClientType } from './types.js';\n\nconst SECOND = 1000;\n\n/**\n * Why the degraded event was emitted.\n */\nexport type DegradedEventType = 'slow_success' | 'retries_exhausted';\n\n/**\n * The category of error that was retried until retries were exhausted.\n */\nexport type RetryReason =\n | 'connection_failed'\n | 'response_not_json'\n | 'non_successful_http_status'\n | 'timed_out'\n | 'connection_reset'\n | 'unknown';\n\n/**\n * Classifies the error that was being retried when retries were exhausted.\n *\n * @param error - The error from the last retry attempt.\n * @returns A classification string.\n */\nexport function classifyRetryReason(error: unknown): RetryReason {\n if (!(error instanceof Error)) {\n return 'unknown';\n }\n if (isConnectionError(error)) {\n return 'connection_failed';\n }\n if (isJsonParseError(error)) {\n return 'response_not_json';\n }\n if (isHttpServerError(error)) {\n return 'non_successful_http_status';\n }\n if (isTimeoutError(error)) {\n return 'timed_out';\n }\n if (isConnectionResetError(error)) {\n return 'connection_reset';\n }\n return 'unknown';\n}\n\n/**\n * The pair of provider / block tracker that can be used to interface with the\n * network and respond to new activity.\n */\nexport type NetworkClient = {\n configuration: NetworkClientConfiguration;\n provider: Provider;\n blockTracker: BlockTracker;\n destroy: () => void;\n};\n\ntype RpcApiMiddleware = JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string }>\n>;\n\n/**\n * Create a JSON RPC network client for a specific network.\n *\n * @param args - The arguments.\n * @param args.id - The ID that will be assigned to the new network client in\n * the registry.\n * @param args.configuration - The network configuration.\n * @param args.getRpcServiceOptions - Factory for constructing RPC service\n * options. See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @param args.getBlockTrackerOptions - Factory for constructing block tracker\n * options. See {@link NetworkControllerOptions.getBlockTrackerOptions}.\n * @param args.messenger - The network controller messenger.\n * @param args.rpcFailoverMode - The RPC failover mode to apply: `disabled`\n * (failover off), `enabled` (divert to the configured failover URLs when the\n * primary endpoint is unavailable), or `forced` (Infura endpoints that have\n * failover URLs route all traffic to those URLs, bypassing Infura entirely).\n * @param args.logger - A `loglevel` logger.\n * @returns The network client.\n */\nexport function createNetworkClient({\n id,\n configuration,\n getRpcServiceOptions,\n getBlockTrackerOptions,\n messenger,\n rpcFailoverMode,\n logger,\n}: {\n id: NetworkClientId;\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions?: (\n rpcEndpointUrl: string,\n ) => RpcServiceOptionsWithDefaults;\n getBlockTrackerOptions: (\n rpcEndpointUrl: string,\n ) => Omit<PollingBlockTrackerOptions, 'provider'>;\n messenger: NetworkControllerMessenger;\n rpcFailoverMode: RpcFailoverMode;\n logger?: Logger;\n}): NetworkClient {\n const primaryEndpointUrl =\n configuration.type === NetworkClientType.Infura\n ? `https://${configuration.network}.infura.io/v3/${configuration.infuraProjectId}`\n : configuration.rpcUrl;\n const rpcServiceChain = createRpcServiceChain({\n id,\n primaryEndpointUrl,\n configuration,\n getRpcServiceOptions,\n messenger,\n rpcFailoverMode,\n logger,\n });\n\n let rpcApiMiddleware: RpcApiMiddleware;\n if (configuration.type === NetworkClientType.Infura) {\n rpcApiMiddleware = asV2Middleware(\n createInfuraMiddleware({\n rpcService: rpcServiceChain,\n options: {\n source: 'metamask',\n },\n }),\n );\n } else {\n rpcApiMiddleware = createFetchMiddleware({ rpcService: rpcServiceChain });\n }\n\n const rpcProvider = providerFromMiddlewareV2(rpcApiMiddleware);\n\n const blockTracker = createBlockTracker({\n networkClientType: configuration.type,\n endpointUrl: primaryEndpointUrl,\n getOptions: getBlockTrackerOptions,\n provider: rpcProvider,\n });\n\n const networkMiddleware =\n configuration.type === NetworkClientType.Infura\n ? createInfuraNetworkMiddleware({\n blockTracker,\n chainId: configuration.chainId,\n rpcProvider,\n rpcApiMiddleware,\n })\n : createCustomNetworkMiddleware({\n blockTracker,\n chainId: configuration.chainId,\n rpcApiMiddleware,\n });\n\n const provider: Provider = new InternalProvider({\n engine: JsonRpcEngineV2.create({\n middleware: [networkMiddleware],\n }),\n });\n\n const destroy = (): void => {\n // TODO: Either fix this lint violation or explain why it's necessary to ignore.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n blockTracker.destroy();\n };\n\n return { configuration, provider, blockTracker, destroy };\n}\n\n/**\n * Determines the ordered list of endpoints that make up the RPC service chain\n * for a network, honoring the RPC failover flags.\n *\n * @param args - The arguments.\n * @param args.primaryEndpointUrl - The primary endpoint URL for the network.\n * @param args.failoverRpcUrls - The configured failover URLs, if any.\n * @param args.rpcFailoverMode - The RPC failover mode to apply: `disabled`,\n * `enabled` (divert to the failover URLs when the primary is unavailable), or\n * `forced` (route all traffic for Infura endpoints with failover URLs to those\n * URLs, bypassing Infura).\n * @returns The endpoints to use, each flagged as primary or failover.\n */\nfunction getAvailableEndpoints({\n primaryEndpointUrl,\n failoverRpcUrls,\n rpcFailoverMode,\n}: {\n primaryEndpointUrl: string;\n failoverRpcUrls: string[] | undefined;\n rpcFailoverMode: RpcFailoverMode;\n}): { url: string; isFailover: boolean }[] {\n const failoverEndpoints = (failoverRpcUrls ?? []).map((url) => ({\n url,\n isFailover: true,\n }));\n // We explicitly check the URL since some networks have been added with invalid configuration types in the past.\n const isInfura = new URL(primaryEndpointUrl).hostname.endsWith('.infura.io');\n\n if (\n rpcFailoverMode === 'forced' &&\n isInfura &&\n failoverEndpoints.length > 0\n ) {\n // Forced mode for an Infura endpoint with failovers: bypass Infura entirely\n // and route all traffic (including block polling) to failovers. The first\n // failover becomes the positional primary of the chain, so\n // availability/degraded events will report that failover URL as the primary\n // endpoint (there is no Infura primary in this mode).\n return failoverEndpoints;\n }\n if (rpcFailoverMode === 'enabled' && isInfura) {\n return [\n { url: primaryEndpointUrl, isFailover: false },\n ...failoverEndpoints,\n ];\n }\n return [{ url: primaryEndpointUrl, isFailover: false }];\n}\n\n/**\n * Creates an RPC service chain, which represents the primary endpoint URL for\n * the network as well as its failover URLs.\n *\n * @param args - The arguments.\n * @param args.id - The ID that will be assigned to the new network client in\n * the registry.\n * @param args.primaryEndpointUrl - The primary endpoint URL.\n * @param args.configuration - The network configuration.\n * @param args.getRpcServiceOptions - Factory for constructing RPC service\n * options. See {@link NetworkControllerOptions.getRpcServiceOptions}.\n * @param args.messenger - The network controller messenger.\n * @param args.rpcFailoverMode - The RPC failover mode to apply: `disabled`\n * (failover off), `enabled` (divert to the configured failover URLs when the\n * primary endpoint is unavailable), or `forced` (Infura endpoints that have\n * failover URLs route all traffic to those URLs, bypassing Infura entirely).\n * @param args.logger - A `loglevel` logger.\n * @returns The RPC service chain.\n */\nfunction createRpcServiceChain({\n id,\n primaryEndpointUrl,\n configuration,\n getRpcServiceOptions,\n messenger,\n rpcFailoverMode,\n logger,\n}: {\n id: NetworkClientId;\n primaryEndpointUrl: string;\n configuration: NetworkClientConfiguration;\n getRpcServiceOptions?: (\n rpcEndpointUrl: string,\n ) => RpcServiceOptionsWithDefaults;\n messenger: NetworkControllerMessenger;\n rpcFailoverMode: RpcFailoverMode;\n logger?: Logger;\n}): RpcServiceChain {\n const availableEndpoints = getAvailableEndpoints({\n primaryEndpointUrl,\n failoverRpcUrls: configuration.failoverRpcUrls,\n rpcFailoverMode,\n });\n\n const isOffline = (): boolean => {\n const connectivityState = messenger.call('ConnectivityController:getState');\n return (\n connectivityState.connectivityStatus === CONNECTIVITY_STATUSES.Offline\n );\n };\n\n // Ensure that if the endpoint continually responds with errors, we\n // break the circuit relatively fast (but not prematurely).\n //\n // Note that the circuit will break much faster if the errors are\n // retriable (e.g. 503) than if not (e.g. 500), so we attempt to strike\n // a balance here.\n const maxConsecutiveFailures = DEFAULT_MAX_CONSECUTIVE_FAILURES;\n\n // The number of rounds of retries that will break the circuit,\n // triggering a \"cooldown\".\n //\n // When we fail over to QuickNode, we expect it to be down at first\n // while it is being automatically activated, and we don't want to\n // activate the \"cooldown\" accidentally.\n const maxConsecutiveFailuresFailover = (DEFAULT_MAX_RETRIES + 1) * 10;\n\n const rpcServiceConfigurations = availableEndpoints.map((endpoint) => {\n const overriddenOptions = getRpcServiceOptions?.(endpoint.url) ?? {};\n return {\n fetch: globalThis.fetch.bind(globalThis),\n btoa: globalThis.btoa.bind(globalThis),\n isOffline,\n policyOptions: {\n maxRetries: DEFAULT_MAX_RETRIES,\n circuitBreakDuration: inMilliseconds(30, Duration.Second),\n maxConsecutiveFailures: endpoint.isFailover\n ? maxConsecutiveFailuresFailover\n : maxConsecutiveFailures,\n ...(overriddenOptions.policyOptions ?? {}),\n },\n ...overriddenOptions,\n endpointUrl: endpoint.url,\n logger,\n };\n });\n\n /**\n * Extracts the error from Cockatiel's `FailureReason` type received in\n * circuit breaker event handlers.\n *\n * The `FailureReason` object can have two possible shapes:\n * - `{ error: Error }` - When the RPC service throws an error (the common\n * case for RPC failures).\n * - `{ value: T }` - When the RPC service returns a value that the retry\n * filter policy considers a failure.\n *\n * @param value - The event data object from the circuit breaker event\n * listener (after destructuring known properties like `endpointUrl`). This\n * represents Cockatiel's `FailureReason` type.\n * @returns The error or failure value, or `undefined` if neither property\n * exists (which shouldn't happen in practice unless the circuit breaker is\n * manually isolated).\n */\n const getError = (\n value: CockatielFailureReason<unknown> | Record<never, never>,\n ): Error | unknown | undefined => {\n if ('error' in value) {\n return value.error;\n } else if ('value' in value) {\n return value.value;\n }\n return undefined;\n };\n\n const rpcServiceChain = new RpcServiceChain([\n rpcServiceConfigurations[0],\n ...rpcServiceConfigurations.slice(1),\n ]);\n\n rpcServiceChain.onBreak((data) => {\n const error = getError(data);\n\n if (error === undefined) {\n // This error shouldn't happen in practice because we never call `.isolate`\n // on the circuit breaker policy, but we need to appease TypeScript.\n throw new Error('Could not make request to endpoint.');\n }\n\n messenger.publish('NetworkController:rpcEndpointChainUnavailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n error,\n });\n });\n\n rpcServiceChain.onServiceBreak(\n ({\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n ...rest\n }) => {\n const error = getError(rest);\n\n if (error === undefined) {\n // This error shouldn't happen in practice because we never call `.isolate`\n // on the circuit breaker policy, but we need to appease TypeScript.\n throw new Error('Could not make request to endpoint.');\n }\n\n messenger.publish('NetworkController:rpcEndpointUnavailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n error,\n });\n },\n );\n\n rpcServiceChain.onDegraded(\n ({ rpcMethodName, duration, traceId, ...rest }) => {\n const error = getError(rest);\n const type: DegradedEventType =\n error === undefined ? 'slow_success' : 'retries_exhausted';\n messenger.publish('NetworkController:rpcEndpointChainDegraded', {\n chainId: configuration.chainId,\n networkClientId: id,\n error,\n rpcMethodName,\n duration,\n traceId,\n type,\n retryReason:\n error === undefined ? undefined : classifyRetryReason(error),\n });\n },\n );\n\n rpcServiceChain.onServiceDegraded(\n ({\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n rpcMethodName,\n duration,\n traceId,\n ...rest\n }) => {\n const error = getError(rest);\n const type: DegradedEventType =\n error === undefined ? 'slow_success' : 'retries_exhausted';\n\n messenger.publish('NetworkController:rpcEndpointDegraded', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n error,\n rpcMethodName,\n duration,\n traceId,\n type,\n retryReason:\n error === undefined ? undefined : classifyRetryReason(error),\n });\n },\n );\n\n rpcServiceChain.onAvailable(() => {\n messenger.publish('NetworkController:rpcEndpointChainAvailable', {\n chainId: configuration.chainId,\n networkClientId: id,\n });\n });\n\n rpcServiceChain.onServiceRetry(\n ({\n attempt,\n endpointUrl,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n }) => {\n messenger.publish('NetworkController:rpcEndpointRetried', {\n chainId: configuration.chainId,\n networkClientId: id,\n primaryEndpointUrl: primaryEndpointUrlFromEvent,\n endpointUrl,\n attempt,\n });\n },\n );\n\n return rpcServiceChain;\n}\n\n/**\n * Create the block tracker for the network.\n *\n * @param args - The arguments.\n * @param args.networkClientType - The type of the network client (\"infura\" or\n * \"custom\").\n * @param args.endpointUrl - The URL of the endpoint.\n * @param args.getOptions - Factory for the block tracker options.\n * @param args.provider - The EIP-1193 provider for the network's JSON-RPC\n * middleware stack.\n * @returns The created block tracker.\n */\nfunction createBlockTracker({\n networkClientType,\n endpointUrl,\n getOptions,\n provider,\n}: {\n networkClientType: NetworkClientType;\n endpointUrl: string;\n getOptions: (\n rpcEndpointUrl: string,\n ) => Omit<PollingBlockTrackerOptions, 'provider'>;\n provider: InternalProvider;\n}): PollingBlockTracker {\n const defaultOptions = {\n pollingInterval:\n // Needed for testing.\n // eslint-disable-next-line no-restricted-globals\n process.env.IN_TEST && networkClientType === NetworkClientType.Custom\n ? inMilliseconds(1, Duration.Second)\n : inMilliseconds(20, Duration.Second),\n retryTimeout: inMilliseconds(20, Duration.Second),\n };\n\n return new PollingBlockTracker({\n ...defaultOptions,\n ...getOptions(endpointUrl),\n provider,\n });\n}\n\n/**\n * Create middleware for infura.\n *\n * @param args - The arguments.\n * @param args.blockTracker - The block tracker to use.\n * @param args.chainId - The chain id to use.\n * @param args.rpcProvider - The RPC provider to use.\n * @param args.rpcApiMiddleware - Additional middleware.\n * @returns The collection of middleware that makes up the Infura client.\n */\nfunction createInfuraNetworkMiddleware({\n blockTracker,\n chainId,\n rpcProvider,\n rpcApiMiddleware,\n}: {\n blockTracker: PollingBlockTracker;\n chainId: string;\n rpcProvider: InternalProvider;\n rpcApiMiddleware: RpcApiMiddleware;\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string; skipCache: boolean }>\n> {\n return JsonRpcEngineV2.create({\n middleware: [\n createNetworkAndChainIdMiddleware({ chainId }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockRefMiddleware({ blockTracker, provider: rpcProvider }),\n createRetryOnEmptyMiddleware({ blockTracker, provider: rpcProvider }),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ],\n }).asMiddleware();\n}\n\n/**\n * Creates static method middleware.\n *\n * @param args - The Arguments.\n * @param args.chainId - The chain id to use.\n * @returns The middleware that implements the eth_chainId method.\n */\nfunction createNetworkAndChainIdMiddleware({\n chainId,\n}: {\n chainId: string;\n}): JsonRpcMiddleware<JsonRpcRequest> {\n return createScaffoldMiddleware({\n eth_chainId: chainId,\n });\n}\n\nconst createChainIdMiddleware = (\n chainId: Hex,\n): JsonRpcMiddleware<JsonRpcRequest, Json> => {\n return ({ request, next }) => {\n if (request.method === 'eth_chainId') {\n return chainId;\n }\n return next();\n };\n};\n\n/**\n * Creates custom middleware.\n *\n * @param args - The arguments.\n * @param args.blockTracker - The block tracker to use.\n * @param args.chainId - The chain id to use.\n * @param args.rpcApiMiddleware - Additional middleware.\n * @returns The collection of middleware that makes up the Infura client.\n */\nfunction createCustomNetworkMiddleware({\n blockTracker,\n chainId,\n rpcApiMiddleware,\n}: {\n blockTracker: PollingBlockTracker;\n chainId: Hex;\n rpcApiMiddleware: RpcApiMiddleware;\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string; skipCache: boolean }>\n> {\n // Needed for testing.\n // eslint-disable-next-line no-restricted-globals\n const testMiddlewares = process.env.IN_TEST\n ? [createEstimateGasDelayTestMiddleware()]\n : [];\n\n return JsonRpcEngineV2.create({\n middleware: [\n ...testMiddlewares,\n createChainIdMiddleware(chainId),\n createBlockRefRewriteMiddleware({ blockTracker }),\n createBlockCacheMiddleware({ blockTracker }),\n createInflightCacheMiddleware(),\n createBlockTrackerInspectorMiddleware({ blockTracker }),\n rpcApiMiddleware,\n ],\n }).asMiddleware();\n}\n\n/**\n * For use in tests only.\n * Adds a delay to `eth_estimateGas` calls.\n *\n * @returns The middleware for delaying gas estimation calls by 2 seconds when in test.\n */\nfunction createEstimateGasDelayTestMiddleware(): JsonRpcMiddleware<\n JsonRpcRequest,\n Json\n> {\n return async ({ request, next }) => {\n if (request.method === 'eth_estimateGas') {\n await new Promise((resolve) => setTimeout(resolve, SECOND * 2));\n }\n return next();\n };\n}\n"]}
package/dist/index.cjs DELETED
@@ -1,31 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.isConnectionError = exports.classifyRetryReason = exports.NetworkClientType = exports.RpcEndpointType = exports.NetworkController = exports.knownKeysOf = exports.selectAvailableNetworkClientIds = exports.getDefaultNetworkControllerState = void 0;
18
- var NetworkController_js_1 = require("./NetworkController.cjs");
19
- Object.defineProperty(exports, "getDefaultNetworkControllerState", { enumerable: true, get: function () { return NetworkController_js_1.getDefaultNetworkControllerState; } });
20
- Object.defineProperty(exports, "selectAvailableNetworkClientIds", { enumerable: true, get: function () { return NetworkController_js_1.selectAvailableNetworkClientIds; } });
21
- Object.defineProperty(exports, "knownKeysOf", { enumerable: true, get: function () { return NetworkController_js_1.knownKeysOf; } });
22
- Object.defineProperty(exports, "NetworkController", { enumerable: true, get: function () { return NetworkController_js_1.NetworkController; } });
23
- Object.defineProperty(exports, "RpcEndpointType", { enumerable: true, get: function () { return NetworkController_js_1.RpcEndpointType; } });
24
- __exportStar(require("./constants.cjs"), exports);
25
- var types_js_1 = require("./types.cjs");
26
- Object.defineProperty(exports, "NetworkClientType", { enumerable: true, get: function () { return types_js_1.NetworkClientType; } });
27
- var create_network_client_js_1 = require("./create-network-client.cjs");
28
- Object.defineProperty(exports, "classifyRetryReason", { enumerable: true, get: function () { return create_network_client_js_1.classifyRetryReason; } });
29
- var rpc_service_js_1 = require("./rpc-service/rpc-service.cjs");
30
- Object.defineProperty(exports, "isConnectionError", { enumerable: true, get: function () { return rpc_service_js_1.isConnectionError; } });
31
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmCA,gEAMgC;AAL9B,wIAAA,gCAAgC,OAAA;AAChC,uIAAA,+BAA+B,OAAA;AAC/B,mHAAA,WAAW,OAAA;AACX,yHAAA,iBAAiB,OAAA;AACjB,uHAAA,eAAe,OAAA;AAEjB,kDAA+B;AAO/B,wCAA+C;AAAtC,6GAAA,iBAAiB,OAAA;AAQ1B,wEAAiE;AAAxD,+HAAA,mBAAmB,OAAA;AAK5B,gEAAiE;AAAxD,mHAAA,iBAAiB,OAAA","sourcesContent":["export type { AutoManagedNetworkClient } from './create-auto-managed-network-client.js';\nexport type {\n Block,\n NetworkMetadata,\n NetworkConfiguration,\n BuiltInNetworkClientId,\n CustomNetworkClientId,\n NetworkClientId,\n NetworksMetadata,\n NetworkState,\n BlockTrackerProxy,\n ProviderProxy,\n AddNetworkCustomRpcEndpointFields,\n AddNetworkFields,\n UpdateNetworkFields,\n InfuraRpcEndpoint,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointChainUnavailableEvent,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointChainDegradedEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointChainAvailableEvent,\n NetworkControllerRpcEndpointRetriedEvent,\n} from './NetworkController.js';\nexport {\n getDefaultNetworkControllerState,\n selectAvailableNetworkClientIds,\n knownKeysOf,\n NetworkController,\n RpcEndpointType,\n} from './NetworkController.js';\nexport * from './constants.js';\nexport type { BlockTracker, Provider } from './types.js';\nexport type {\n NetworkClientConfiguration,\n InfuraNetworkClientConfiguration,\n CustomNetworkClientConfiguration,\n} from './types.js';\nexport { NetworkClientType } from './types.js';\nexport type { NetworkClient } from './create-network-client.js';\nexport type { AbstractRpcService } from './rpc-service/abstract-rpc-service.js';\nexport type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable.js';\nexport type {\n DegradedEventType,\n RetryReason,\n} from './create-network-client.js';\nexport { classifyRetryReason } from './create-network-client.js';\nexport type {\n NetworkControllerAnalyticsOptions,\n RpcServiceEventName,\n} from './rpc-service-analytics.js';\nexport { isConnectionError } from './rpc-service/rpc-service.js';\nexport type {\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetNetworkConfigurationByChainIdAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientIdAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerGetProviderAndBlockTrackerAction,\n NetworkControllerGetNetworkClientRegistryAction,\n NetworkControllerLookupNetworkAction,\n NetworkControllerLookupNetworkByClientIdAction,\n NetworkControllerGet1559CompatibilityWithNetworkClientIdAction,\n NetworkControllerResetConnectionAction,\n NetworkControllerRollbackToPreviousProviderAction,\n NetworkControllerLoadBackupAction,\n} from './NetworkController-method-action-types.js';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,iDAAgD;AACxF,YAAY,EACV,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,iDAAiD,EACjD,4CAA4C,EAC5C,8CAA8C,EAC9C,yCAAyC,EACzC,+CAA+C,EAC/C,wCAAwC,GACzC,gCAA+B;AAChC,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,gCAA+B;AAChC,gCAA+B;AAC/B,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAmB;AACzD,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GACjC,oBAAmB;AACpB,OAAO,EAAE,iBAAiB,EAAE,oBAAmB;AAC/C,YAAY,EAAE,aAAa,EAAE,oCAAmC;AAChE,YAAY,EAAE,kBAAkB,EAAE,+CAA8C;AAChF,YAAY,EAAE,qBAAqB,EAAE,kDAAiD;AACtF,YAAY,EACV,iBAAiB,EACjB,WAAW,GACZ,oCAAmC;AACpC,OAAO,EAAE,mBAAmB,EAAE,oCAAmC;AACjE,YAAY,EACV,iCAAiC,EACjC,mBAAmB,GACpB,oCAAmC;AACpC,OAAO,EAAE,iBAAiB,EAAE,sCAAqC;AACjE,YAAY,EACV,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,yCAAyC,EACzC,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,uDAAuD,EACvD,+DAA+D,EAC/D,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,iDAAiD,EACjD,+CAA+C,EAC/C,oCAAoC,EACpC,8CAA8C,EAC9C,8DAA8D,EAC9D,sCAAsC,EACtC,iDAAiD,EACjD,iCAAiC,GAClC,oDAAmD"}
package/dist/index.d.mts DELETED
@@ -1,16 +0,0 @@
1
- export type { AutoManagedNetworkClient } from "./create-auto-managed-network-client.mjs";
2
- export type { Block, NetworkMetadata, NetworkConfiguration, BuiltInNetworkClientId, CustomNetworkClientId, NetworkClientId, NetworksMetadata, NetworkState, BlockTrackerProxy, ProviderProxy, AddNetworkCustomRpcEndpointFields, AddNetworkFields, UpdateNetworkFields, InfuraRpcEndpoint, NetworkControllerStateChangeEvent, NetworkControllerNetworkWillChangeEvent, NetworkControllerNetworkDidChangeEvent, NetworkControllerInfuraIsBlockedEvent, NetworkControllerInfuraIsUnblockedEvent, NetworkControllerNetworkAddedEvent, NetworkControllerNetworkRemovedEvent, NetworkControllerEvents, NetworkControllerGetStateAction, NetworkControllerActions, NetworkControllerMessenger, NetworkControllerOptions, NetworkControllerRpcEndpointChainUnavailableEvent, NetworkControllerRpcEndpointUnavailableEvent, NetworkControllerRpcEndpointChainDegradedEvent, NetworkControllerRpcEndpointDegradedEvent, NetworkControllerRpcEndpointChainAvailableEvent, NetworkControllerRpcEndpointRetriedEvent, } from "./NetworkController.mjs";
3
- export { getDefaultNetworkControllerState, selectAvailableNetworkClientIds, knownKeysOf, NetworkController, RpcEndpointType, } from "./NetworkController.mjs";
4
- export * from "./constants.mjs";
5
- export type { BlockTracker, Provider } from "./types.mjs";
6
- export type { NetworkClientConfiguration, InfuraNetworkClientConfiguration, CustomNetworkClientConfiguration, } from "./types.mjs";
7
- export { NetworkClientType } from "./types.mjs";
8
- export type { NetworkClient } from "./create-network-client.mjs";
9
- export type { AbstractRpcService } from "./rpc-service/abstract-rpc-service.mjs";
10
- export type { RpcServiceRequestable } from "./rpc-service/rpc-service-requestable.mjs";
11
- export type { DegradedEventType, RetryReason, } from "./create-network-client.mjs";
12
- export { classifyRetryReason } from "./create-network-client.mjs";
13
- export type { NetworkControllerAnalyticsOptions, RpcServiceEventName, } from "./rpc-service-analytics.mjs";
14
- export { isConnectionError } from "./rpc-service/rpc-service.mjs";
15
- export type { NetworkControllerGetEthQueryAction, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetSelectedNetworkClientAction, NetworkControllerGetSelectedChainIdAction, NetworkControllerGetEIP1559CompatibilityAction, NetworkControllerFindNetworkClientIdByChainIdAction, NetworkControllerSetProviderTypeAction, NetworkControllerSetActiveNetworkAction, NetworkControllerGetNetworkConfigurationByChainIdAction, NetworkControllerGetNetworkConfigurationByNetworkClientIdAction, NetworkControllerAddNetworkAction, NetworkControllerRemoveNetworkAction, NetworkControllerUpdateNetworkAction, NetworkControllerGetProviderAndBlockTrackerAction, NetworkControllerGetNetworkClientRegistryAction, NetworkControllerLookupNetworkAction, NetworkControllerLookupNetworkByClientIdAction, NetworkControllerGet1559CompatibilityWithNetworkClientIdAction, NetworkControllerResetConnectionAction, NetworkControllerRollbackToPreviousProviderAction, NetworkControllerLoadBackupAction, } from "./NetworkController-method-action-types.mjs";
16
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,wBAAwB,EAAE,iDAAgD;AACxF,YAAY,EACV,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iCAAiC,EACjC,uCAAuC,EACvC,sCAAsC,EACtC,qCAAqC,EACrC,uCAAuC,EACvC,kCAAkC,EAClC,oCAAoC,EACpC,uBAAuB,EACvB,+BAA+B,EAC/B,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,iDAAiD,EACjD,4CAA4C,EAC5C,8CAA8C,EAC9C,yCAAyC,EACzC,+CAA+C,EAC/C,wCAAwC,GACzC,gCAA+B;AAChC,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,gCAA+B;AAChC,gCAA+B;AAC/B,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAmB;AACzD,YAAY,EACV,0BAA0B,EAC1B,gCAAgC,EAChC,gCAAgC,GACjC,oBAAmB;AACpB,OAAO,EAAE,iBAAiB,EAAE,oBAAmB;AAC/C,YAAY,EAAE,aAAa,EAAE,oCAAmC;AAChE,YAAY,EAAE,kBAAkB,EAAE,+CAA8C;AAChF,YAAY,EAAE,qBAAqB,EAAE,kDAAiD;AACtF,YAAY,EACV,iBAAiB,EACjB,WAAW,GACZ,oCAAmC;AACpC,OAAO,EAAE,mBAAmB,EAAE,oCAAmC;AACjE,YAAY,EACV,iCAAiC,EACjC,mBAAmB,GACpB,oCAAmC;AACpC,OAAO,EAAE,iBAAiB,EAAE,sCAAqC;AACjE,YAAY,EACV,kCAAkC,EAClC,2CAA2C,EAC3C,+CAA+C,EAC/C,yCAAyC,EACzC,8CAA8C,EAC9C,mDAAmD,EACnD,sCAAsC,EACtC,uCAAuC,EACvC,uDAAuD,EACvD,+DAA+D,EAC/D,iCAAiC,EACjC,oCAAoC,EACpC,oCAAoC,EACpC,iDAAiD,EACjD,+CAA+C,EAC/C,oCAAoC,EACpC,8CAA8C,EAC9C,8DAA8D,EAC9D,sCAAsC,EACtC,iDAAiD,EACjD,iCAAiC,GAClC,oDAAmD"}
package/dist/index.mjs DELETED
@@ -1,6 +0,0 @@
1
- export { getDefaultNetworkControllerState, selectAvailableNetworkClientIds, knownKeysOf, NetworkController, RpcEndpointType } from "./NetworkController.mjs";
2
- export * from "./constants.mjs";
3
- export { NetworkClientType } from "./types.mjs";
4
- export { classifyRetryReason } from "./create-network-client.mjs";
5
- export { isConnectionError } from "./rpc-service/rpc-service.mjs";
6
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmCA,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,WAAW,EACX,iBAAiB,EACjB,eAAe,EAChB,gCAA+B;AAChC,gCAA+B;AAO/B,OAAO,EAAE,iBAAiB,EAAE,oBAAmB;AAQ/C,OAAO,EAAE,mBAAmB,EAAE,oCAAmC;AAKjE,OAAO,EAAE,iBAAiB,EAAE,sCAAqC","sourcesContent":["export type { AutoManagedNetworkClient } from './create-auto-managed-network-client.js';\nexport type {\n Block,\n NetworkMetadata,\n NetworkConfiguration,\n BuiltInNetworkClientId,\n CustomNetworkClientId,\n NetworkClientId,\n NetworksMetadata,\n NetworkState,\n BlockTrackerProxy,\n ProviderProxy,\n AddNetworkCustomRpcEndpointFields,\n AddNetworkFields,\n UpdateNetworkFields,\n InfuraRpcEndpoint,\n NetworkControllerStateChangeEvent,\n NetworkControllerNetworkWillChangeEvent,\n NetworkControllerNetworkDidChangeEvent,\n NetworkControllerInfuraIsBlockedEvent,\n NetworkControllerInfuraIsUnblockedEvent,\n NetworkControllerNetworkAddedEvent,\n NetworkControllerNetworkRemovedEvent,\n NetworkControllerEvents,\n NetworkControllerGetStateAction,\n NetworkControllerActions,\n NetworkControllerMessenger,\n NetworkControllerOptions,\n NetworkControllerRpcEndpointChainUnavailableEvent,\n NetworkControllerRpcEndpointUnavailableEvent,\n NetworkControllerRpcEndpointChainDegradedEvent,\n NetworkControllerRpcEndpointDegradedEvent,\n NetworkControllerRpcEndpointChainAvailableEvent,\n NetworkControllerRpcEndpointRetriedEvent,\n} from './NetworkController.js';\nexport {\n getDefaultNetworkControllerState,\n selectAvailableNetworkClientIds,\n knownKeysOf,\n NetworkController,\n RpcEndpointType,\n} from './NetworkController.js';\nexport * from './constants.js';\nexport type { BlockTracker, Provider } from './types.js';\nexport type {\n NetworkClientConfiguration,\n InfuraNetworkClientConfiguration,\n CustomNetworkClientConfiguration,\n} from './types.js';\nexport { NetworkClientType } from './types.js';\nexport type { NetworkClient } from './create-network-client.js';\nexport type { AbstractRpcService } from './rpc-service/abstract-rpc-service.js';\nexport type { RpcServiceRequestable } from './rpc-service/rpc-service-requestable.js';\nexport type {\n DegradedEventType,\n RetryReason,\n} from './create-network-client.js';\nexport { classifyRetryReason } from './create-network-client.js';\nexport type {\n NetworkControllerAnalyticsOptions,\n RpcServiceEventName,\n} from './rpc-service-analytics.js';\nexport { isConnectionError } from './rpc-service/rpc-service.js';\nexport type {\n NetworkControllerGetEthQueryAction,\n NetworkControllerGetNetworkClientByIdAction,\n NetworkControllerGetSelectedNetworkClientAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerGetEIP1559CompatibilityAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkControllerSetProviderTypeAction,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetNetworkConfigurationByChainIdAction,\n NetworkControllerGetNetworkConfigurationByNetworkClientIdAction,\n NetworkControllerAddNetworkAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerUpdateNetworkAction,\n NetworkControllerGetProviderAndBlockTrackerAction,\n NetworkControllerGetNetworkClientRegistryAction,\n NetworkControllerLookupNetworkAction,\n NetworkControllerLookupNetworkByClientIdAction,\n NetworkControllerGet1559CompatibilityWithNetworkClientIdAction,\n NetworkControllerResetConnectionAction,\n NetworkControllerRollbackToPreviousProviderAction,\n NetworkControllerLoadBackupAction,\n} from './NetworkController-method-action-types.js';\n"]}
package/dist/logger.cjs DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createModuleLogger = exports.projectLogger = void 0;
4
- const utils_1 = require("@metamask/utils");
5
- Object.defineProperty(exports, "createModuleLogger", { enumerable: true, get: function () { return utils_1.createModuleLogger; } });
6
- exports.projectLogger = (0, utils_1.createProjectLogger)('network-controller');
7
- //# sourceMappingURL=logger.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.cjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,2CAA0E;AAIjE,mGAJqB,0BAAkB,OAIrB;AAFd,QAAA,aAAa,GAAG,IAAA,2BAAmB,EAAC,oBAAoB,CAAC,CAAC","sourcesContent":["import { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger('network-controller');\n\nexport { createModuleLogger };\n"]}
package/dist/logger.d.cts DELETED
@@ -1,5 +0,0 @@
1
- /// <reference types="debug" />
2
- import { createModuleLogger } from "@metamask/utils";
3
- export declare const projectLogger: import("debug").Debugger;
4
- export { createModuleLogger };
5
- //# sourceMappingURL=logger.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.cts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuB,kBAAkB,EAAE,wBAAwB;AAE1E,eAAO,MAAM,aAAa,0BAA4C,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/logger.d.mts DELETED
@@ -1,5 +0,0 @@
1
- /// <reference types="debug" />
2
- import { createModuleLogger } from "@metamask/utils";
3
- export declare const projectLogger: import("debug").Debugger;
4
- export { createModuleLogger };
5
- //# sourceMappingURL=logger.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.mts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuB,kBAAkB,EAAE,wBAAwB;AAE1E,eAAO,MAAM,aAAa,0BAA4C,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
package/dist/logger.mjs DELETED
@@ -1,4 +0,0 @@
1
- import { createProjectLogger, createModuleLogger } from "@metamask/utils";
2
- export const projectLogger = createProjectLogger('network-controller');
3
- export { createModuleLogger };
4
- //# sourceMappingURL=logger.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.mjs","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,wBAAwB;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,CAAC","sourcesContent":["import { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger('network-controller');\n\nexport { createModuleLogger };\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=abstract-rpc-service.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstract-rpc-service.cjs","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"","sourcesContent":["import type { RpcServiceRequestable } from './rpc-service-requestable.js';\n\n/**\n * The interface for a service class responsible for making a request to an RPC\n * endpoint or a group of RPC endpoints.\n *\n * @deprecated Don't use this interface (it will be removed in an upcoming major\n * version). If you need to take an \"RPC-service-like\" argument, it's best to\n * declare which properties you're interested in rather than accepting the\n * entire RPC service interface.\n */\nexport type AbstractRpcService = RpcServiceRequestable & {\n /**\n * The URL of the RPC endpoint.\n */\n endpointUrl: URL;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstract-rpc-service.d.cts","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAqC;AAE1E;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IACvD;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { RpcServiceRequestable } from "./rpc-service-requestable.mjs";
2
- /**
3
- * The interface for a service class responsible for making a request to an RPC
4
- * endpoint or a group of RPC endpoints.
5
- *
6
- * @deprecated Don't use this interface (it will be removed in an upcoming major
7
- * version). If you need to take an "RPC-service-like" argument, it's best to
8
- * declare which properties you're interested in rather than accepting the
9
- * entire RPC service interface.
10
- */
11
- export type AbstractRpcService = RpcServiceRequestable & {
12
- /**
13
- * The URL of the RPC endpoint.
14
- */
15
- endpointUrl: URL;
16
- };
17
- //# sourceMappingURL=abstract-rpc-service.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstract-rpc-service.d.mts","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sCAAqC;AAE1E;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,GAAG;IACvD;;OAEG;IACH,WAAW,EAAE,GAAG,CAAC;CAClB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=abstract-rpc-service.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstract-rpc-service.mjs","sourceRoot":"","sources":["../../src/rpc-service/abstract-rpc-service.ts"],"names":[],"mappings":"","sourcesContent":["import type { RpcServiceRequestable } from './rpc-service-requestable.js';\n\n/**\n * The interface for a service class responsible for making a request to an RPC\n * endpoint or a group of RPC endpoints.\n *\n * @deprecated Don't use this interface (it will be removed in an upcoming major\n * version). If you need to take an \"RPC-service-like\" argument, it's best to\n * declare which properties you're interested in rather than accepting the\n * entire RPC service interface.\n */\nexport type AbstractRpcService = RpcServiceRequestable & {\n /**\n * The URL of the RPC endpoint.\n */\n endpointUrl: URL;\n};\n"]}
@@ -1,304 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
- if (kind === "m") throw new TypeError("Private method is not writable");
4
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
- };
8
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
- };
13
- var _RpcServiceChain_onAvailableEventEmitter, _RpcServiceChain_onBreakEventEmitter, _RpcServiceChain_onDegradedEventEmitter, _RpcServiceChain_primaryService, _RpcServiceChain_services, _RpcServiceChain_status;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.RpcServiceChain = void 0;
16
- const controller_utils_1 = require("@metamask/controller-utils");
17
- const logger_js_1 = require("../logger.cjs");
18
- const rpc_service_js_1 = require("./rpc-service.cjs");
19
- const log = (0, logger_js_1.createModuleLogger)(logger_js_1.projectLogger, 'RpcServiceChain');
20
- /**
21
- * Statuses that the RPC service chain can be in.
22
- */
23
- const STATUSES = {
24
- Available: 'available',
25
- Degraded: 'degraded',
26
- Unknown: 'unknown',
27
- Unavailable: 'unavailable',
28
- };
29
- /**
30
- * This class constructs and manages requests to a chain of RpcService objects
31
- * which represent RPC endpoints with which to access a particular network. The
32
- * first service in the chain is intended to be the primary way of hitting the
33
- * network and the remaining services are used as failovers.
34
- */
35
- class RpcServiceChain {
36
- /**
37
- * Constructs a new RpcServiceChain object.
38
- *
39
- * @param rpcServiceConfigurations - The options for the RPC services
40
- * that you want to construct. Each object in this array is the same as
41
- * {@link RpcServiceOptions}.
42
- */
43
- constructor(rpcServiceConfigurations) {
44
- /**
45
- * The event emitter for the `onAvailable` event.
46
- */
47
- _RpcServiceChain_onAvailableEventEmitter.set(this, void 0);
48
- /**
49
- * The event emitter for the `onBreak` event.
50
- */
51
- _RpcServiceChain_onBreakEventEmitter.set(this, void 0);
52
- /**
53
- * The event emitter for the `onDegraded` event.
54
- */
55
- _RpcServiceChain_onDegradedEventEmitter.set(this, void 0);
56
- /**
57
- * The first RPC service that requests will be sent to.
58
- */
59
- _RpcServiceChain_primaryService.set(this, void 0);
60
- /**
61
- * The RPC services in the chain.
62
- */
63
- _RpcServiceChain_services.set(this, void 0);
64
- /**
65
- * The status of the RPC service chain.
66
- */
67
- _RpcServiceChain_status.set(this, void 0);
68
- __classPrivateFieldSet(this, _RpcServiceChain_services, rpcServiceConfigurations.map((rpcServiceConfiguration) => new rpc_service_js_1.RpcService(rpcServiceConfiguration)), "f");
69
- __classPrivateFieldSet(this, _RpcServiceChain_primaryService, __classPrivateFieldGet(this, _RpcServiceChain_services, "f")[0], "f");
70
- __classPrivateFieldSet(this, _RpcServiceChain_status, STATUSES.Unknown, "f");
71
- __classPrivateFieldSet(this, _RpcServiceChain_onBreakEventEmitter, new controller_utils_1.CockatielEventEmitter(), "f");
72
- __classPrivateFieldSet(this, _RpcServiceChain_onDegradedEventEmitter, new controller_utils_1.CockatielEventEmitter(), "f");
73
- for (const service of __classPrivateFieldGet(this, _RpcServiceChain_services, "f")) {
74
- service.onDegraded((data) => {
75
- if (__classPrivateFieldGet(this, _RpcServiceChain_status, "f") !== STATUSES.Degraded) {
76
- log('Updating status to "degraded"', data);
77
- __classPrivateFieldSet(this, _RpcServiceChain_status, STATUSES.Degraded, "f");
78
- const { endpointUrl, ...rest } = data;
79
- __classPrivateFieldGet(this, _RpcServiceChain_onDegradedEventEmitter, "f").emit(rest);
80
- }
81
- });
82
- }
83
- __classPrivateFieldSet(this, _RpcServiceChain_onAvailableEventEmitter, new controller_utils_1.CockatielEventEmitter(), "f");
84
- for (const service of __classPrivateFieldGet(this, _RpcServiceChain_services, "f")) {
85
- service.onAvailable((data) => {
86
- if (__classPrivateFieldGet(this, _RpcServiceChain_status, "f") !== STATUSES.Available) {
87
- log('Updating status to "available"', data);
88
- __classPrivateFieldSet(this, _RpcServiceChain_status, STATUSES.Available, "f");
89
- const { endpointUrl, ...rest } = data;
90
- __classPrivateFieldGet(this, _RpcServiceChain_onAvailableEventEmitter, "f").emit(rest);
91
- }
92
- });
93
- }
94
- }
95
- /**
96
- * Calls the provided callback when any of the RPC services is retried.
97
- *
98
- * This is mainly useful for tests.
99
- *
100
- * @param listener - The callback to be called.
101
- * @returns An object with a `dispose` method which can be used to unregister
102
- * the event listener.
103
- */
104
- onServiceRetry(listener) {
105
- const disposables = __classPrivateFieldGet(this, _RpcServiceChain_services, "f").map((service) => service.onRetry((data) => {
106
- listener({
107
- ...data,
108
- primaryEndpointUrl: __classPrivateFieldGet(this, _RpcServiceChain_primaryService, "f").endpointUrl.toString(),
109
- });
110
- }));
111
- return {
112
- dispose() {
113
- disposables.forEach((disposable) => disposable.dispose());
114
- },
115
- };
116
- }
117
- /**
118
- * Calls the provided callback only when the maximum number of failed
119
- * consecutive attempts to receive a 2xx response has been reached for all
120
- * RPC services in the chain, and all services' underlying circuits have
121
- * broken.
122
- *
123
- * The callback will not be called if a service's circuit breaks but its
124
- * failover does not. Use `onServiceBreak` if you'd like a lower level of
125
- * granularity.
126
- *
127
- * @param listener - The callback to be called.
128
- * @returns An object with a `dispose` method which can be used to unregister
129
- * the callback.
130
- */
131
- onBreak(listener) {
132
- return __classPrivateFieldGet(this, _RpcServiceChain_onBreakEventEmitter, "f").addListener(listener);
133
- }
134
- /**
135
- * Calls the provided callback each time when, for *any* of the RPC services
136
- * in this chain, the maximum number of failed consecutive attempts to receive
137
- * a 2xx response has been reached and the underlying circuit has broken. A
138
- * more granular version of `onBreak`.
139
- *
140
- * @param listener - The callback to be called.
141
- * @returns An object with a `dispose` method which can be used to unregister
142
- * the callback.
143
- */
144
- onServiceBreak(listener) {
145
- const disposables = __classPrivateFieldGet(this, _RpcServiceChain_services, "f").map((service) => service.onBreak((data) => {
146
- listener({
147
- ...data,
148
- primaryEndpointUrl: __classPrivateFieldGet(this, _RpcServiceChain_primaryService, "f").endpointUrl.toString(),
149
- });
150
- }));
151
- return {
152
- dispose() {
153
- disposables.forEach((disposable) => disposable.dispose());
154
- },
155
- };
156
- }
157
- /**
158
- * Calls the provided callback if no requests have been initiated yet or
159
- * all requests to RPC services in this chain have responded successfully in a
160
- * timely fashion, and then one of the two conditions apply:
161
- *
162
- * 1. When a retriable error is encountered making a request to an RPC
163
- * service, and the request is retried until a set maximum is reached.
164
- * 2. When a RPC service responds successfully, but the request takes longer
165
- * than a set number of seconds to complete.
166
- *
167
- * Note that the callback will be called even if there are local connectivity
168
- * issues which prevent requests from being initiated. This is intentional.
169
- *
170
- * Also note this callback will only be called if the RPC service chain as a
171
- * whole is in a "degraded" state, and will then only be called once (e.g., it
172
- * will not be called if a failover service falls into a degraded state, then
173
- * the primary comes back online, but it is slow). Use `onServiceDegraded` if
174
- * you'd like a lower level of granularity.
175
- *
176
- * @param listener - The callback to be called.
177
- * @returns An object with a `dispose` method which can be used to unregister
178
- * the callback.
179
- */
180
- onDegraded(listener) {
181
- return __classPrivateFieldGet(this, _RpcServiceChain_onDegradedEventEmitter, "f").addListener(listener);
182
- }
183
- /**
184
- * Calls the provided callback each time one of the two conditions apply:
185
- *
186
- * 1. When a retriable error is encountered making a request to an RPC
187
- * service, and the request is retried until a set maximum is reached.
188
- * 2. When a RPC service responds successfully, but the request takes longer
189
- * than a set number of seconds to complete.
190
- *
191
- * Note that the callback will be called even if there are local connectivity
192
- * issues which prevent requests from being initiated. This is intentional.
193
- *
194
- * This is a more granular version of `onDegraded`. The callback will be
195
- * called for each slow request to an RPC service. It may also be called again
196
- * if a failover service falls into a degraded state, then the primary comes
197
- * back online, but it is slow.
198
- *
199
- * @param listener - The callback to be called.
200
- * @returns An object with a `dispose` method which can be used to unregister
201
- * the callback.
202
- */
203
- onServiceDegraded(listener) {
204
- const disposables = __classPrivateFieldGet(this, _RpcServiceChain_services, "f").map((service) => service.onDegraded((data) => {
205
- listener({
206
- ...data,
207
- primaryEndpointUrl: __classPrivateFieldGet(this, _RpcServiceChain_primaryService, "f").endpointUrl.toString(),
208
- });
209
- }));
210
- return {
211
- dispose() {
212
- disposables.forEach((disposable) => disposable.dispose());
213
- },
214
- };
215
- }
216
- /**
217
- * Calls the provided callback in one of the following two conditions:
218
- *
219
- * 1. The first time that a 2xx request is made to any of the RPC services in
220
- * this chain.
221
- * 2. When requests to any the failover RPC services in this chain were
222
- * failing such that they were degraded or their underyling circuits broke,
223
- * but the first request to the primary succeeds again.
224
- *
225
- * Note this callback will only be called if the RPC service chain as a whole
226
- * is in an "available" state.
227
- *
228
- * @param listener - The callback to be called.
229
- * @returns An object with a `dispose` method which can be used to unregister
230
- * the callback.
231
- */
232
- onAvailable(listener) {
233
- return __classPrivateFieldGet(this, _RpcServiceChain_onAvailableEventEmitter, "f").addListener(listener);
234
- }
235
- async request(jsonRpcRequest, fetchOptions = {}) {
236
- // Start with the primary (first) service and switch to failovers as the
237
- // need arises. This is a bit confusing, so keep reading for more on how
238
- // this works.
239
- let availableServiceIndex;
240
- let response;
241
- for (const [i, service] of __classPrivateFieldGet(this, _RpcServiceChain_services, "f").entries()) {
242
- log(`Trying service #${i + 1}...`);
243
- const previousCircuitState = service.getCircuitState();
244
- try {
245
- // Try making the request through the service.
246
- response = await service.request(jsonRpcRequest, fetchOptions);
247
- log('Service successfully received request.');
248
- availableServiceIndex = i;
249
- break;
250
- }
251
- catch (error) {
252
- // Oops, that didn't work.
253
- // Capture this error so that we can handle it later.
254
- const { lastError } = service;
255
- const isCircuitOpen = service.getCircuitState() === controller_utils_1.CircuitState.Open;
256
- log('Service failed! error =', error, 'lastError = ', lastError);
257
- if (isCircuitOpen) {
258
- if (i < __classPrivateFieldGet(this, _RpcServiceChain_services, "f").length - 1) {
259
- log("This service's circuit is open. Proceeding to next service...");
260
- continue;
261
- }
262
- if (previousCircuitState !== controller_utils_1.CircuitState.Open &&
263
- __classPrivateFieldGet(this, _RpcServiceChain_status, "f") !== STATUSES.Unavailable &&
264
- lastError !== undefined) {
265
- // If the service's circuit just broke and it's the last one in the
266
- // chain, then trigger the onBreak event. (But if for some reason we
267
- // have already done this, then don't do it.)
268
- log('This service\'s circuit just opened and it is the last service. Updating status to "unavailable" and triggering onBreak.');
269
- __classPrivateFieldSet(this, _RpcServiceChain_status, STATUSES.Unavailable, "f");
270
- __classPrivateFieldGet(this, _RpcServiceChain_onBreakEventEmitter, "f").emit({
271
- error: lastError,
272
- });
273
- }
274
- }
275
- // The service failed, and we throw whatever the error is. The calling
276
- // code can try again if it so desires.
277
- log(`${isCircuitOpen ? '' : "This service's circuit is closed. "}Re-throwing error.`);
278
- throw error;
279
- }
280
- }
281
- if (response) {
282
- // If one of the services is available, reset all of the circuits of the
283
- // following services. If we didn't do this and the service became
284
- // unavailable in the future, and any of the failovers' circuits were
285
- // open (due to previous failures), we would receive a "circuit broken"
286
- // error when we attempted to divert traffic to the failovers again.
287
- //
288
- if (availableServiceIndex !== undefined) {
289
- for (const [i, service] of [...__classPrivateFieldGet(this, _RpcServiceChain_services, "f").entries()].slice(availableServiceIndex + 1)) {
290
- log(`Resetting policy for service #${i + 1}.`);
291
- service.resetPolicy();
292
- }
293
- }
294
- return response;
295
- }
296
- // The only way we can end up here is if there are no services to loop over.
297
- // That is not possible due to the types on the constructor, but TypeScript
298
- // doesn't know this, so we have to appease it.
299
- throw new Error('Nothing to return');
300
- }
301
- }
302
- exports.RpcServiceChain = RpcServiceChain;
303
- _RpcServiceChain_onAvailableEventEmitter = new WeakMap(), _RpcServiceChain_onBreakEventEmitter = new WeakMap(), _RpcServiceChain_onDegradedEventEmitter = new WeakMap(), _RpcServiceChain_primaryService = new WeakMap(), _RpcServiceChain_services = new WeakMap(), _RpcServiceChain_status = new WeakMap();
304
- //# sourceMappingURL=rpc-service-chain.cjs.map