projectpulse-mcp 1.5.0 → 1.5.2
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.
- package/dist/tools/analyze-code-scanning.js +1 -1
- package/dist/tools/analyze-code-scanning.js.map +1 -1
- package/dist/tools/analyze-dependencies.js +1 -1
- package/dist/tools/analyze-dependencies.js.map +1 -1
- package/dist/tools/check-ci-status.js +1 -1
- package/dist/tools/check-ci-status.js.map +1 -1
- package/dist/tools/compare-repos.js +1 -1
- package/dist/tools/compare-repos.js.map +1 -1
- package/dist/tools/get-dora-metrics.js +1 -1
- package/dist/tools/get-dora-metrics.js.map +1 -1
- package/dist/tools/get-health-score.js +1 -1
- package/dist/tools/get-health-score.js.map +1 -1
- package/dist/tools/get-repo-health.js +1 -1
- package/dist/tools/get-repo-health.js.map +1 -1
- package/package.json +5 -3
- package/dist/analytics/dora.test.d.ts +0 -2
- package/dist/analytics/dora.test.d.ts.map +0 -1
- package/dist/analytics/dora.test.js +0 -164
- package/dist/analytics/dora.test.js.map +0 -1
- package/dist/scoring/health-score.test.d.ts +0 -2
- package/dist/scoring/health-score.test.d.ts.map +0 -1
- package/dist/scoring/health-score.test.js +0 -249
- package/dist/scoring/health-score.test.js.map +0 -1
- package/dist/security/openssf-client.test.d.ts +0 -2
- package/dist/security/openssf-client.test.d.ts.map +0 -1
- package/dist/security/openssf-client.test.js +0 -70
- package/dist/security/openssf-client.test.js.map +0 -1
- package/dist/tools/analyze-code-scanning.test.d.ts +0 -2
- package/dist/tools/analyze-code-scanning.test.d.ts.map +0 -1
- package/dist/tools/analyze-code-scanning.test.js +0 -72
- package/dist/tools/analyze-code-scanning.test.js.map +0 -1
- package/dist/tools/analyze-dependencies.test.d.ts +0 -2
- package/dist/tools/analyze-dependencies.test.d.ts.map +0 -1
- package/dist/tools/analyze-dependencies.test.js +0 -65
- package/dist/tools/analyze-dependencies.test.js.map +0 -1
- package/dist/tools/check-ci-status.test.d.ts +0 -2
- package/dist/tools/check-ci-status.test.d.ts.map +0 -1
- package/dist/tools/check-ci-status.test.js +0 -90
- package/dist/tools/check-ci-status.test.js.map +0 -1
- package/dist/tools/compare-repos.test.d.ts +0 -2
- package/dist/tools/compare-repos.test.d.ts.map +0 -1
- package/dist/tools/compare-repos.test.js +0 -138
- package/dist/tools/compare-repos.test.js.map +0 -1
- package/dist/tools/get-dora-metrics.test.d.ts +0 -2
- package/dist/tools/get-dora-metrics.test.d.ts.map +0 -1
- package/dist/tools/get-dora-metrics.test.js +0 -71
- package/dist/tools/get-dora-metrics.test.js.map +0 -1
- package/dist/tools/get-health-score.test.d.ts +0 -2
- package/dist/tools/get-health-score.test.d.ts.map +0 -1
- package/dist/tools/get-health-score.test.js +0 -130
- package/dist/tools/get-health-score.test.js.map +0 -1
- package/dist/tools/get-repo-health.test.d.ts +0 -2
- package/dist/tools/get-repo-health.test.d.ts.map +0 -1
- package/dist/tools/get-repo-health.test.js +0 -80
- package/dist/tools/get-repo-health.test.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -7
- package/dist/vitest.config.js.map +0 -1
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { executeCompareRepos, inputSchema } from './compare-repos.js';
|
|
3
|
-
import { executeGetHealthScore } from './get-health-score.js';
|
|
4
|
-
vi.mock('./get-health-score.js');
|
|
5
|
-
describe('executeCompareRepos', () => {
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
vi.resetAllMocks();
|
|
8
|
-
});
|
|
9
|
-
it('should retrieve scores, rank repositories correctly including ties, and handle failures gracefully', async () => {
|
|
10
|
-
// Mock executeGetHealthScore behavior:
|
|
11
|
-
// repo-a: 85 score
|
|
12
|
-
// repo-b: 85 score (tie with repo-a)
|
|
13
|
-
// repo-c: 70 score (should be rank 3 in standard competition ranking)
|
|
14
|
-
// repo-fail: fails
|
|
15
|
-
vi.mocked(executeGetHealthScore).mockImplementation(async (repo) => {
|
|
16
|
-
if (repo.repo === 'repo-a') {
|
|
17
|
-
return {
|
|
18
|
-
content: [{
|
|
19
|
-
type: 'text',
|
|
20
|
-
text: JSON.stringify({
|
|
21
|
-
repo: 'test/repo-a',
|
|
22
|
-
score: 85,
|
|
23
|
-
grade: 'B',
|
|
24
|
-
breakdown: {},
|
|
25
|
-
suggestions: [],
|
|
26
|
-
checkedAt: '2023-10-01T00:00:00Z'
|
|
27
|
-
})
|
|
28
|
-
}]
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
if (repo.repo === 'repo-b') {
|
|
32
|
-
return {
|
|
33
|
-
content: [{
|
|
34
|
-
type: 'text',
|
|
35
|
-
text: JSON.stringify({
|
|
36
|
-
repo: 'test/repo-b',
|
|
37
|
-
score: 85,
|
|
38
|
-
grade: 'B',
|
|
39
|
-
breakdown: {},
|
|
40
|
-
suggestions: [],
|
|
41
|
-
checkedAt: '2023-10-01T00:00:00Z'
|
|
42
|
-
})
|
|
43
|
-
}]
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
if (repo.repo === 'repo-c') {
|
|
47
|
-
return {
|
|
48
|
-
content: [{
|
|
49
|
-
type: 'text',
|
|
50
|
-
text: JSON.stringify({
|
|
51
|
-
repo: 'test/repo-c',
|
|
52
|
-
score: 70,
|
|
53
|
-
grade: 'C',
|
|
54
|
-
breakdown: {},
|
|
55
|
-
suggestions: [],
|
|
56
|
-
checkedAt: '2023-10-01T00:00:00Z'
|
|
57
|
-
})
|
|
58
|
-
}]
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
throw new Error('API Rate Limit or Repository not found');
|
|
62
|
-
});
|
|
63
|
-
const repos = [
|
|
64
|
-
{ owner: 'test', repo: 'repo-a' },
|
|
65
|
-
{ owner: 'test', repo: 'repo-fail' },
|
|
66
|
-
{ owner: 'test', repo: 'repo-b' },
|
|
67
|
-
{ owner: 'test', repo: 'repo-c' }
|
|
68
|
-
];
|
|
69
|
-
const result = await executeCompareRepos({ repos });
|
|
70
|
-
expect(result.content).toHaveLength(1);
|
|
71
|
-
expect(result.content[0].type).toBe('text');
|
|
72
|
-
const comparison = JSON.parse(result.content[0].text);
|
|
73
|
-
expect(comparison.compared_at).toBeDefined();
|
|
74
|
-
expect(comparison.repos).toHaveLength(4);
|
|
75
|
-
// Verify sorting order: success ordered by score desc, then failures
|
|
76
|
-
expect(comparison.repos[0].repo).toMatch(/repo-a|repo-b/);
|
|
77
|
-
expect(comparison.repos[1].repo).toMatch(/repo-a|repo-b/);
|
|
78
|
-
expect(comparison.repos[2].repo).toBe('repo-c');
|
|
79
|
-
expect(comparison.repos[3].repo).toBe('repo-fail');
|
|
80
|
-
const repoA = comparison.repos.find((r) => r.repo === 'repo-a');
|
|
81
|
-
const repoB = comparison.repos.find((r) => r.repo === 'repo-b');
|
|
82
|
-
const repoC = comparison.repos.find((r) => r.repo === 'repo-c');
|
|
83
|
-
const repoFail = comparison.repos.find((r) => r.repo === 'repo-fail');
|
|
84
|
-
expect(repoA.rank).toBe(1);
|
|
85
|
-
expect(repoA.health.score).toBe(85);
|
|
86
|
-
expect(repoA.error).toBeNull();
|
|
87
|
-
expect(repoB.rank).toBe(1);
|
|
88
|
-
expect(repoB.health.score).toBe(85);
|
|
89
|
-
expect(repoB.error).toBeNull();
|
|
90
|
-
// repo-c should be rank 3 (since 2 repos share rank 1)
|
|
91
|
-
expect(repoC.rank).toBe(3);
|
|
92
|
-
expect(repoC.health.score).toBe(70);
|
|
93
|
-
expect(repoC.error).toBeNull();
|
|
94
|
-
// repo-fail should be rank 0 with error details
|
|
95
|
-
expect(repoFail.rank).toBe(0);
|
|
96
|
-
expect(repoFail.health).toBeNull();
|
|
97
|
-
expect(repoFail.error).toContain('API Rate Limit');
|
|
98
|
-
});
|
|
99
|
-
describe('inputSchema validation', () => {
|
|
100
|
-
it('should validate correctly with 2 to 5 repos', () => {
|
|
101
|
-
const valid = inputSchema.safeParse({
|
|
102
|
-
repos: [
|
|
103
|
-
{ owner: 'owner1', repo: 'repo1' },
|
|
104
|
-
{ owner: 'owner2', repo: 'repo2' }
|
|
105
|
-
]
|
|
106
|
-
});
|
|
107
|
-
expect(valid.success).toBe(true);
|
|
108
|
-
});
|
|
109
|
-
it('should fail validation with less than 2 repos', () => {
|
|
110
|
-
const invalid = inputSchema.safeParse({
|
|
111
|
-
repos: [
|
|
112
|
-
{ owner: 'owner1', repo: 'repo1' }
|
|
113
|
-
]
|
|
114
|
-
});
|
|
115
|
-
expect(invalid.success).toBe(false);
|
|
116
|
-
if (!invalid.success) {
|
|
117
|
-
expect(invalid.error.issues[0].message).toBe('At least 2 repositories are required');
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
it('should fail validation with more than 5 repos', () => {
|
|
121
|
-
const invalid = inputSchema.safeParse({
|
|
122
|
-
repos: [
|
|
123
|
-
{ owner: 'owner1', repo: 'repo1' },
|
|
124
|
-
{ owner: 'owner2', repo: 'repo2' },
|
|
125
|
-
{ owner: 'owner3', repo: 'repo3' },
|
|
126
|
-
{ owner: 'owner4', repo: 'repo4' },
|
|
127
|
-
{ owner: 'owner5', repo: 'repo5' },
|
|
128
|
-
{ owner: 'owner6', repo: 'repo6' }
|
|
129
|
-
]
|
|
130
|
-
});
|
|
131
|
-
expect(invalid.success).toBe(false);
|
|
132
|
-
if (!invalid.success) {
|
|
133
|
-
expect(invalid.error.issues[0].message).toBe('At most 5 repositories are allowed');
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
//# sourceMappingURL=compare-repos.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compare-repos.test.js","sourceRoot":"","sources":["../../src/tools/compare-repos.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-dora-metrics.test.d.ts","sourceRoot":"","sources":["../../src/tools/get-dora-metrics.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { listMergedPulls, listReleases, listWorkflowRuns } from '../github/client.js';
|
|
3
|
-
import { executeGetDoraMetrics } from './get-dora-metrics.js';
|
|
4
|
-
vi.mock('../github/client.js');
|
|
5
|
-
describe('executeGetDoraMetrics', () => {
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
vi.resetAllMocks();
|
|
8
|
-
});
|
|
9
|
-
it('should fetch data and return metrics as JSON text', async () => {
|
|
10
|
-
// mock return values for the client functions
|
|
11
|
-
vi.mocked(listReleases).mockResolvedValue([
|
|
12
|
-
{ id: 1, tag_name: 'v1.0', published_at: '2026-08-01T00:00:00Z' }
|
|
13
|
-
]);
|
|
14
|
-
vi.mocked(listWorkflowRuns).mockResolvedValue([
|
|
15
|
-
{ id: 1, name: 'CI', head_branch: 'main', conclusion: 'success', created_at: '2026-08-01T00:00:00Z' }
|
|
16
|
-
]);
|
|
17
|
-
vi.mocked(listMergedPulls).mockResolvedValue([
|
|
18
|
-
{ number: 1, created_at: '2026-08-01T00:00:00Z', merged_at: '2026-08-02T00:00:00Z' }
|
|
19
|
-
]);
|
|
20
|
-
const result = await executeGetDoraMetrics({ owner: 'testowner', repo: 'testrepo', days: 14 });
|
|
21
|
-
expect(listReleases).toHaveBeenCalledWith('testowner', 'testrepo', expect.any(Date));
|
|
22
|
-
expect(listWorkflowRuns).toHaveBeenCalledWith('testowner', 'testrepo', expect.any(Date));
|
|
23
|
-
expect(listMergedPulls).toHaveBeenCalledWith('testowner', 'testrepo', expect.any(Date));
|
|
24
|
-
expect(result.content).toHaveLength(1);
|
|
25
|
-
expect(result.content[0].type).toBe('text');
|
|
26
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
27
|
-
expect(parsedText.owner).toBe('testowner');
|
|
28
|
-
expect(parsedText.repo).toBe('testrepo');
|
|
29
|
-
expect(parsedText.period_days).toBe(14);
|
|
30
|
-
// Assert some metric outputs based on the mocked input
|
|
31
|
-
expect(parsedText.deployment_frequency.releases_count).toBe(1);
|
|
32
|
-
expect(parsedText.lead_time.pr_count).toBe(1);
|
|
33
|
-
expect(parsedText.change_failure_rate.total_runs).toBe(1);
|
|
34
|
-
expect(parsedText.change_failure_rate.failed_runs).toBe(0);
|
|
35
|
-
});
|
|
36
|
-
it('should handle empty data correctly (zero releases, PRs, runs)', async () => {
|
|
37
|
-
vi.mocked(listReleases).mockResolvedValue([]);
|
|
38
|
-
vi.mocked(listWorkflowRuns).mockResolvedValue([]);
|
|
39
|
-
vi.mocked(listMergedPulls).mockResolvedValue([]);
|
|
40
|
-
const result = await executeGetDoraMetrics({ owner: 'testowner', repo: 'testrepo', days: 30 });
|
|
41
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
42
|
-
expect(parsedText.deployment_frequency.releases_count).toBe(0);
|
|
43
|
-
expect(parsedText.deployment_frequency.per_week).toBeNull();
|
|
44
|
-
expect(parsedText.lead_time.pr_count).toBe(0);
|
|
45
|
-
expect(parsedText.lead_time.median_hours).toBeNull();
|
|
46
|
-
expect(parsedText.change_failure_rate.total_runs).toBe(0);
|
|
47
|
-
expect(parsedText.change_failure_rate.rate_percent).toBeNull();
|
|
48
|
-
expect(parsedText.mttr.incidents_count).toBe(0);
|
|
49
|
-
expect(parsedText.mttr.median_hours).toBeNull();
|
|
50
|
-
});
|
|
51
|
-
it('should pass the correct since Date to client functions', async () => {
|
|
52
|
-
vi.mocked(listReleases).mockResolvedValue([]);
|
|
53
|
-
vi.mocked(listWorkflowRuns).mockResolvedValue([]);
|
|
54
|
-
vi.mocked(listMergedPulls).mockResolvedValue([]);
|
|
55
|
-
const days = 14;
|
|
56
|
-
await executeGetDoraMetrics({ owner: 'testowner', repo: 'testrepo', days });
|
|
57
|
-
const expectedSince = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
|
|
58
|
-
const callArg = vi.mocked(listReleases).mock.calls[0][2];
|
|
59
|
-
const diffMs = Math.abs(callArg.getTime() - expectedSince.getTime());
|
|
60
|
-
expect(diffMs).toBeLessThan(1000); // Tolleranza di 1 secondo per l'esecuzione
|
|
61
|
-
});
|
|
62
|
-
it('should fail if any client call fails', async () => {
|
|
63
|
-
vi.mocked(listReleases).mockRejectedValue(new Error('API Error'));
|
|
64
|
-
vi.mocked(listWorkflowRuns).mockResolvedValue([]);
|
|
65
|
-
vi.mocked(listMergedPulls).mockResolvedValue([]);
|
|
66
|
-
await expect(executeGetDoraMetrics({ owner: 'testowner', repo: 'testrepo', days: 30 }))
|
|
67
|
-
.rejects
|
|
68
|
-
.toThrow('API Error');
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
//# sourceMappingURL=get-dora-metrics.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-dora-metrics.test.js","sourceRoot":"","sources":["../../src/tools/get-dora-metrics.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-health-score.test.d.ts","sourceRoot":"","sources":["../../src/tools/get-health-score.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { getOctokit } from '../github/client.js';
|
|
3
|
-
import { executeGetHealthScore } from './get-health-score.js';
|
|
4
|
-
import { fetchOpenSSFScore } from '../security/openssf-client.js';
|
|
5
|
-
vi.mock('../github/client.js');
|
|
6
|
-
vi.mock('../security/openssf-client.js');
|
|
7
|
-
describe('executeGetHealthScore', () => {
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
vi.resetAllMocks();
|
|
10
|
-
});
|
|
11
|
-
it('should calculate health score successfully with dependabot alerts', async () => {
|
|
12
|
-
const mockReposGet = vi.fn().mockResolvedValue({
|
|
13
|
-
data: {
|
|
14
|
-
pushed_at: '2023-10-01T00:00:00Z',
|
|
15
|
-
open_issues_count: 5,
|
|
16
|
-
forks_count: 10,
|
|
17
|
-
license: { spdx_id: 'MIT' },
|
|
18
|
-
description: 'test repo',
|
|
19
|
-
archived: false
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const mockListRuns = vi.fn().mockResolvedValue({
|
|
23
|
-
data: {
|
|
24
|
-
workflow_runs: [{ conclusion: 'success' }]
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
const mockListAlerts = vi.fn().mockResolvedValue({
|
|
28
|
-
data: [
|
|
29
|
-
{ security_advisory: { severity: 'critical' }, state: 'open' },
|
|
30
|
-
{ security_advisory: { severity: 'high' }, state: 'open' }
|
|
31
|
-
]
|
|
32
|
-
});
|
|
33
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
34
|
-
repos: { get: mockReposGet },
|
|
35
|
-
actions: { listWorkflowRunsForRepo: mockListRuns },
|
|
36
|
-
dependabot: { listAlertsForRepo: mockListAlerts }
|
|
37
|
-
});
|
|
38
|
-
const result = await executeGetHealthScore({ owner: 'test', repo: 'repo' });
|
|
39
|
-
expect(mockReposGet).toHaveBeenCalledWith({ owner: 'test', repo: 'repo' });
|
|
40
|
-
expect(mockListRuns).toHaveBeenCalledWith({ owner: 'test', repo: 'repo', per_page: 10 });
|
|
41
|
-
expect(mockListAlerts).toHaveBeenCalledWith({ owner: 'test', repo: 'repo' });
|
|
42
|
-
expect(result.content).toHaveLength(1);
|
|
43
|
-
expect(result.content[0].type).toBe('text');
|
|
44
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
45
|
-
expect(parsedText.repo).toBe('test/repo');
|
|
46
|
-
expect(parsedText.score).toBeTypeOf('number');
|
|
47
|
-
expect(parsedText.grade).toBeTypeOf('string');
|
|
48
|
-
// Ensure dependabot parsing worked:
|
|
49
|
-
expect(parsedText.breakdown.security.detail).toContain('1 critical');
|
|
50
|
-
expect(parsedText.breakdown.security.detail).toContain('1 high');
|
|
51
|
-
});
|
|
52
|
-
it('should calculate health score successfully even if dependabot fails', async () => {
|
|
53
|
-
const mockReposGet = vi.fn().mockResolvedValue({
|
|
54
|
-
data: {
|
|
55
|
-
pushed_at: '2023-10-01T00:00:00Z',
|
|
56
|
-
open_issues_count: 5,
|
|
57
|
-
forks_count: 10,
|
|
58
|
-
license: { spdx_id: 'MIT' },
|
|
59
|
-
description: 'test repo',
|
|
60
|
-
archived: false
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
const mockListRuns = vi.fn().mockResolvedValue({
|
|
64
|
-
data: {
|
|
65
|
-
workflow_runs: [{ conclusion: 'success' }]
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
// Simulating 404 or disabled dependabot
|
|
69
|
-
const mockListAlerts = vi.fn().mockRejectedValue(new Error('Not Found'));
|
|
70
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
71
|
-
repos: { get: mockReposGet },
|
|
72
|
-
actions: { listWorkflowRunsForRepo: mockListRuns },
|
|
73
|
-
dependabot: { listAlertsForRepo: mockListAlerts }
|
|
74
|
-
});
|
|
75
|
-
const result = await executeGetHealthScore({ owner: 'test', repo: 'repo' });
|
|
76
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
77
|
-
expect(parsedText.repo).toBe('test/repo');
|
|
78
|
-
// If dependabot fails, it should assume 0 alerts
|
|
79
|
-
expect(parsedText.breakdown.security.detail).toContain('0 critical');
|
|
80
|
-
expect(parsedText.breakdown.security.detail).toContain('0 high');
|
|
81
|
-
});
|
|
82
|
-
it('should fail if repos.get fails', async () => {
|
|
83
|
-
const mockReposGet = vi.fn().mockRejectedValue(new Error('API Error'));
|
|
84
|
-
const mockListRuns = vi.fn().mockResolvedValue({ data: { workflow_runs: [] } });
|
|
85
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
86
|
-
repos: { get: mockReposGet },
|
|
87
|
-
actions: { listWorkflowRunsForRepo: mockListRuns },
|
|
88
|
-
dependabot: { listAlertsForRepo: vi.fn() }
|
|
89
|
-
});
|
|
90
|
-
await expect(executeGetHealthScore({ owner: 'test', repo: 'error-repo' }))
|
|
91
|
-
.rejects
|
|
92
|
-
.toThrow('API Error');
|
|
93
|
-
});
|
|
94
|
-
it('should include OpenSSF score when available', async () => {
|
|
95
|
-
const mockReposGet = vi.fn().mockResolvedValue({
|
|
96
|
-
data: { pushed_at: '2023-10-01T00:00:00Z', open_issues_count: 0, forks_count: 0, license: { spdx_id: 'MIT' }, description: 'test', archived: false }
|
|
97
|
-
});
|
|
98
|
-
const mockListRuns = vi.fn().mockResolvedValue({ data: { workflow_runs: [] } });
|
|
99
|
-
const mockListAlerts = vi.fn().mockResolvedValue({ data: [] });
|
|
100
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
101
|
-
repos: { get: mockReposGet },
|
|
102
|
-
actions: { listWorkflowRunsForRepo: mockListRuns },
|
|
103
|
-
dependabot: { listAlertsForRepo: mockListAlerts }
|
|
104
|
-
});
|
|
105
|
-
vi.mocked(fetchOpenSSFScore).mockResolvedValue({
|
|
106
|
-
score: 80, checksUsed: 8, checksTotal: 10, details: "8/10 security checks, score 80/100"
|
|
107
|
-
});
|
|
108
|
-
const result = await executeGetHealthScore({ owner: 'test', repo: 'repo' });
|
|
109
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
110
|
-
expect(parsedText.breakdown.security.detail).toContain('OpenSSF');
|
|
111
|
-
});
|
|
112
|
-
it('should fallback to Dependabot only when OpenSSF is null', async () => {
|
|
113
|
-
const mockReposGet = vi.fn().mockResolvedValue({
|
|
114
|
-
data: { pushed_at: '2023-10-01T00:00:00Z', open_issues_count: 0, forks_count: 0, license: { spdx_id: 'MIT' }, description: 'test', archived: false }
|
|
115
|
-
});
|
|
116
|
-
const mockListRuns = vi.fn().mockResolvedValue({ data: { workflow_runs: [] } });
|
|
117
|
-
const mockListAlerts = vi.fn().mockResolvedValue({ data: [] });
|
|
118
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
119
|
-
repos: { get: mockReposGet },
|
|
120
|
-
actions: { listWorkflowRunsForRepo: mockListRuns },
|
|
121
|
-
dependabot: { listAlertsForRepo: mockListAlerts }
|
|
122
|
-
});
|
|
123
|
-
vi.mocked(fetchOpenSSFScore).mockResolvedValue(null);
|
|
124
|
-
const result = await executeGetHealthScore({ owner: 'test', repo: 'repo' });
|
|
125
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
126
|
-
expect(parsedText.breakdown.security.detail).not.toContain('OpenSSF');
|
|
127
|
-
expect(parsedText.breakdown.security.score).toBe(100);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
//# sourceMappingURL=get-health-score.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-health-score.test.js","sourceRoot":"","sources":["../../src/tools/get-health-score.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/B,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAEzC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,UAAU,CAAC,GAAG,EAAE;QACZ,EAAE,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC3C,IAAI,EAAE;gBACF,SAAS,EAAE,sBAAsB;gBACjC,iBAAiB,EAAE,CAAC;gBACpB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,KAAK;aAClB;SACJ,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC3C,IAAI,EAAE;gBACF,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC7C;SACJ,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC7C,IAAI,EAAE;gBACF,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC9D,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;aAC7D;SACJ,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;YAC5B,OAAO,EAAE,EAAE,uBAAuB,EAAE,YAAY,EAAE;YAClD,UAAU,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;SAC7C,CAAC,CAAC;QAEV,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5E,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,oCAAoC;QACpC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC3C,IAAI,EAAE;gBACF,SAAS,EAAE,sBAAsB;gBACjC,iBAAiB,EAAE,CAAC;gBACpB,WAAW,EAAE,EAAE;gBACf,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC3B,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,KAAK;aAClB;SACJ,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC3C,IAAI,EAAE;gBACF,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC7C;SACJ,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;YAC5B,OAAO,EAAE,EAAE,uBAAuB,EAAE,YAAY,EAAE;YAClD,UAAU,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;SAC7C,CAAC,CAAC;QAEV,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,iDAAiD;QACjD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEhF,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;YAC5B,OAAO,EAAE,EAAE,uBAAuB,EAAE,YAAY,EAAE;YAClD,UAAU,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;SACtC,CAAC,CAAC;QAEV,MAAM,MAAM,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;aACrE,OAAO;aACP,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC3C,IAAI,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACvJ,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/D,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;YAC5B,OAAO,EAAE,EAAE,uBAAuB,EAAE,YAAY,EAAE;YAClD,UAAU,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;SAC7C,CAAC,CAAC;QAEV,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC;YAC3C,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,oCAAoC;SAC3F,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC3C,IAAI,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SACvJ,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/D,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;YAC5B,OAAO,EAAE,EAAE,uBAAuB,EAAE,YAAY,EAAE;YAClD,UAAU,EAAE,EAAE,iBAAiB,EAAE,cAAc,EAAE;SAC7C,CAAC,CAAC;QAEV,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-repo-health.test.d.ts","sourceRoot":"","sources":["../../src/tools/get-repo-health.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { getOctokit } from '../github/client.js';
|
|
3
|
-
import { executeGetRepoHealth } from './get-repo-health.js';
|
|
4
|
-
// Mock intero modulo
|
|
5
|
-
vi.mock('../github/client.js');
|
|
6
|
-
describe('executeGetRepoHealth', () => {
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
vi.resetAllMocks(); // pulisci mock tra un test e l'altro
|
|
9
|
-
});
|
|
10
|
-
it('should return repo data for valid repo', async () => {
|
|
11
|
-
// 1. Configura mock: getOctokit() ritorna oggetto con repos.get()
|
|
12
|
-
const mockReposGet = vi.fn().mockResolvedValue({
|
|
13
|
-
data: {
|
|
14
|
-
full_name: 'test/repo',
|
|
15
|
-
description: 'test description',
|
|
16
|
-
stargazers_count: 100,
|
|
17
|
-
open_issues_count: 5,
|
|
18
|
-
language: 'TypeScript',
|
|
19
|
-
license: { spdx_id: 'MIT' },
|
|
20
|
-
pushed_at: '2023-10-01T00:00:00Z',
|
|
21
|
-
default_branch: 'main',
|
|
22
|
-
archived: false,
|
|
23
|
-
forks_count: 10
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
27
|
-
repos: { get: mockReposGet }
|
|
28
|
-
});
|
|
29
|
-
// 2. Chiama il tool
|
|
30
|
-
const result = await executeGetRepoHealth({ owner: 'test', repo: 'repo' });
|
|
31
|
-
// 3. Verifica output
|
|
32
|
-
expect(mockReposGet).toHaveBeenCalledWith({ owner: 'test', repo: 'repo' });
|
|
33
|
-
expect(result.content).toHaveLength(1);
|
|
34
|
-
expect(result.content[0].type).toBe('text');
|
|
35
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
36
|
-
expect(parsedText).toEqual({
|
|
37
|
-
full_name: 'test/repo',
|
|
38
|
-
description: 'test description',
|
|
39
|
-
stargazers_count: 100,
|
|
40
|
-
open_issues_count: 5,
|
|
41
|
-
language: 'TypeScript',
|
|
42
|
-
license: 'MIT',
|
|
43
|
-
pushed_at: '2023-10-01T00:00:00Z',
|
|
44
|
-
default_branch: 'main',
|
|
45
|
-
archived: false,
|
|
46
|
-
forks_count: 10
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
it('should handle 404 for non-existent repo', async () => {
|
|
50
|
-
// 1. Configura mock: repos.get() lancia errore con status 404
|
|
51
|
-
const notFoundError = new Error('Not Found');
|
|
52
|
-
notFoundError.status = 404;
|
|
53
|
-
const mockReposGet = vi.fn().mockRejectedValue(notFoundError);
|
|
54
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
55
|
-
repos: { get: mockReposGet }
|
|
56
|
-
});
|
|
57
|
-
// 2. Chiama il tool
|
|
58
|
-
const result = await executeGetRepoHealth({ owner: 'test', repo: 'not-found' });
|
|
59
|
-
// 3. Verifica che ritorna messaggio errore, non throw
|
|
60
|
-
expect(result.content).toHaveLength(1);
|
|
61
|
-
expect(result.content[0].type).toBe('text');
|
|
62
|
-
const parsedText = JSON.parse(result.content[0].text);
|
|
63
|
-
expect(parsedText).toEqual({
|
|
64
|
-
error: "Repository not found",
|
|
65
|
-
details: "Not Found"
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
it('should throw error for non-404 errors', async () => {
|
|
69
|
-
const serverError = new Error('Internal Server Error');
|
|
70
|
-
serverError.status = 500;
|
|
71
|
-
const mockReposGet = vi.fn().mockRejectedValue(serverError);
|
|
72
|
-
vi.mocked(getOctokit).mockReturnValue({
|
|
73
|
-
repos: { get: mockReposGet }
|
|
74
|
-
});
|
|
75
|
-
await expect(executeGetRepoHealth({ owner: 'test', repo: 'error-repo' }))
|
|
76
|
-
.rejects
|
|
77
|
-
.toThrow('Internal Server Error');
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
//# sourceMappingURL=get-repo-health.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-repo-health.test.js","sourceRoot":"","sources":["../../src/tools/get-repo-health.test.ts"],"names":[],"mappings":"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"}
|
package/dist/vitest.config.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":";AAEA,wBAIG"}
|
package/dist/vitest.config.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../src/vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IACxB,IAAI,EAAE;QACF,OAAO,EAAE,IAAI;KAChB;CACJ,CAAC,CAAC"}
|