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

agentic-dev-library / thumbcode / 21123751291

19 Jan 2026 02:56AM UTC coverage: 22.502% (-4.2%) from 26.701%
21123751291

Pull #68

github

web-flow
Merge 370ea94da into 047d4e899
Pull Request #68: refactor: consolidate services into @thumbcode/core, remove 2.7k LOC dead code

255 of 1783 branches covered (14.3%)

Branch coverage included in aggregate %.

7 of 9 new or added lines in 3 files covered. (77.78%)

2 existing lines in 1 file now uncovered.

646 of 2221 relevant lines covered (29.09%)

1.73 hits per line

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

0.0
/packages/core/src/git/GitHttpClient.ts
1
/**
2
 * Custom Git HTTP Client
3
 *
4
 * An isomorphic-git http plugin that uses the secureFetch wrapper
5
 * to sign requests to the MCP server.
6
 */
7
import { secureFetch } from '../api/api';
8

9
async function* toAsyncIterable(
10
  stream: ReadableStream<Uint8Array> | null
11
): AsyncIterableIterator<Uint8Array> {
12
  if (!stream) {
×
13
    return;
×
14
  }
15
  const reader = stream.getReader();
×
16
  try {
×
17
    while (true) {
×
18
      const { done, value } = await reader.read();
×
19
      if (done) {
×
20
        return;
×
21
      }
22
      if (value) {
×
23
        yield value;
×
24
      }
25
    }
26
  } finally {
27
    reader.releaseLock();
×
28
  }
29
}
30

31
export const gitHttpClient = {
×
32
  async request({
33
    url,
34
    method = 'GET',
×
35
    headers = {},
×
36
    body,
37
  }: {
38
    url: string;
39
    method?: string;
40
    headers?: Record<string, string>;
41
    body?: Uint8Array[];
42
  }) {
43
    const res = await secureFetch(url, {
×
44
      method,
45
      headers,
46
      body: body ? new Blob(body) : undefined,
×
47
    });
48

49
    const responseHeaders: Record<string, string> = {};
×
NEW
50
    res.headers.forEach((value: string, key: string) => {
×
51
      responseHeaders[key] = value;
×
52
    });
53

54
    return {
×
55
      url: res.url,
56
      method: method, // The request method
57
      headers: responseHeaders,
58
      body: toAsyncIterable(res.body),
59
      statusCode: res.status,
60
      statusMessage: res.statusText,
61
    };
62
  },
63
};
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