plugin-fallback.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { AbstractProviderPlugin } from "./abstract-provider.js";
  2. import { defineProperties } from "../utils/index.js";
  3. import type { AbstractProvider, PerformActionRequest } from "./abstract-provider.js";
  4. export const PluginIdFallbackProvider = "org.ethers.plugins.provider.QualifiedPlugin";
  5. export class CheckQualifiedPlugin implements AbstractProviderPlugin {
  6. declare name: string;
  7. constructor() {
  8. defineProperties<CheckQualifiedPlugin>(this, { name: PluginIdFallbackProvider });
  9. }
  10. connect(provider: AbstractProvider): CheckQualifiedPlugin {
  11. return this;
  12. }
  13. // Retruns true if this value should be considered qualified for
  14. // inclusion in the quorum.
  15. isQualified(action: PerformActionRequest, result: any): boolean {
  16. return true;
  17. }
  18. }
  19. export class PossiblyPrunedTransactionPlugin extends CheckQualifiedPlugin {
  20. isQualified(action: PerformActionRequest, result: any): boolean {
  21. if (action.method === "getTransaction" || action.method === "getTransactionReceipt") {
  22. if (result == null) { return false; }
  23. }
  24. return super.isQualified(action, result);
  25. }
  26. }