• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-client-gateway / 22575363049

02 Mar 2026 12:09PM UTC coverage: 56.52% (-32.9%) from 89.388%
22575363049

push

github

web-flow
build(deps): bump @nestjs/swagger from 11.2.0 to 11.2.6 (#2957)

Bumps [@nestjs/swagger](https://github.com/nestjs/swagger) from 11.2.0 to 11.2.6.
- [Release notes](https://github.com/nestjs/swagger/releases)
- [Commits](https://github.com/nestjs/swagger/compare/11.2.0...11.2.6)

---
updated-dependencies:
- dependency-name: "@nestjs/swagger"
  dependency-version: 11.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

1979 of 3720 branches covered (53.2%)

Branch coverage included in aggregate %.

8406 of 14654 relevant lines covered (57.36%)

132.06 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

16.22
/src/modules/data-decoder/domain/v2/data-decoder.repository.ts
1
import { Inject, Injectable } from '@nestjs/common';
16✔
2
import {
16✔
3
  DataDecoded,
4
  DataDecodedSchema,
5
} from '@/modules/data-decoder/domain/v2/entities/data-decoded.entity';
6
import { IDataDecoderRepository } from '@/modules/data-decoder/domain/v2/data-decoder.repository.interface';
7
import { IDataDecoderApi } from '@/domain/interfaces/data-decoder-api.interface';
16✔
8
import { Transaction } from '@/modules/safe/domain/entities/transaction.entity';
9
import { ILoggingService, LoggingService } from '@/logging/logging.interface';
16✔
10
import { asError } from '@/logging/utils';
16✔
11
import type { Address } from 'viem';
12

13
@Injectable()
14
export class DataDecoderRepository implements IDataDecoderRepository {
16✔
15
  constructor(
16
    @Inject(IDataDecoderApi)
17
    private readonly dataDecoderApi: IDataDecoderApi,
×
18
    @Inject(LoggingService) private readonly loggingService: ILoggingService,
×
19
  ) {}
20

21
  public async getDecodedData(args: {
22
    chainId: string;
23
    data: Address;
24
    to: Address;
25
  }): Promise<DataDecoded> {
26
    const dataDecoded = await this.dataDecoderApi.getDecodedData(args);
×
27
    return DataDecodedSchema.parse(dataDecoded);
×
28
  }
29

30
  public async getTransactionDataDecoded(args: {
31
    chainId: string;
32
    transaction: Transaction;
33
  }): Promise<DataDecoded | null> {
34
    const data = this.getDataDecodedData(args.transaction);
×
35

36
    if (!data || data === '0x') {
×
37
      return null;
×
38
    }
39

40
    try {
×
41
      return await this.getDecodedData({
×
42
        chainId: args.chainId,
43
        data,
44
        to: this.getDataDecodedTo(args.transaction),
45
      });
46
    } catch (e) {
47
      this.loggingService.warn(
×
48
        `Error decoding transaction data: ${asError(e).message}`,
49
      );
50
      return null;
×
51
    }
52
  }
53

54
  private getDataDecodedData(transaction: Transaction): Address | null {
55
    // Multisig transaction
56
    if ('data' in transaction) {
×
57
      return transaction.data;
×
58
    }
59
    // Creation
60
    if ('setupData' in transaction) {
×
61
      return transaction.setupData;
×
62
    }
63

64
    throw Error('Unrecognized transaction type');
×
65
  }
66

67
  private getDataDecodedTo(transaction: Transaction): Address {
68
    // Multisig transaction
69
    if ('to' in transaction) {
×
70
      return transaction.to;
×
71
    }
72
    // Native transfer
73
    if ('from' in transaction) {
×
74
      return transaction.from;
×
75
    }
76
    // Creation
77
    if ('factoryAddress' in transaction) {
×
78
      return transaction.factoryAddress;
×
79
    }
80

81
    throw Error('Unrecognized transaction type');
×
82
  }
83
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc