@conduit-harness/conduit-tracker-github 0.0.1
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/index.d.ts +19 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/package.json +23 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Issue, ServiceConfig } from "@conduit-harness/conduit";
|
|
2
|
+
import { BaseTracker } from "@conduit-harness/conduit";
|
|
3
|
+
export default class GitHubTrackerClient extends BaseTracker {
|
|
4
|
+
private readonly fetchImpl;
|
|
5
|
+
private readonly base;
|
|
6
|
+
private readonly owner;
|
|
7
|
+
private readonly repo;
|
|
8
|
+
private readonly apiKey;
|
|
9
|
+
constructor(config: ServiceConfig, fetchImpl?: typeof fetch);
|
|
10
|
+
fetchCandidateIssues(): Promise<Issue[]>;
|
|
11
|
+
fetchIssuesByStates(stateNames: string[]): Promise<Issue[]>;
|
|
12
|
+
fetchIssueStatesByIds(issueIds: string[]): Promise<Record<string, string>>;
|
|
13
|
+
comment(issueId: string, body: string): Promise<void>;
|
|
14
|
+
transition(issueId: string, stateName: string): Promise<void>;
|
|
15
|
+
private fetchByState;
|
|
16
|
+
private headers;
|
|
17
|
+
private get;
|
|
18
|
+
private request;
|
|
19
|
+
}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { BaseTracker } from "@conduit-harness/conduit";
|
|
2
|
+
function str(v) { return typeof v === "string" && v.length > 0 ? v : undefined; }
|
|
3
|
+
export default class GitHubTrackerClient extends BaseTracker {
|
|
4
|
+
fetchImpl;
|
|
5
|
+
base;
|
|
6
|
+
owner;
|
|
7
|
+
repo;
|
|
8
|
+
apiKey;
|
|
9
|
+
constructor(config, fetchImpl = fetch) {
|
|
10
|
+
super(config);
|
|
11
|
+
this.fetchImpl = fetchImpl;
|
|
12
|
+
const raw = config.tracker.raw;
|
|
13
|
+
this.base = (str(raw.base_url) ?? "https://api.github.com").replace(/\/+$/, "");
|
|
14
|
+
this.owner = str(raw.owner) ?? "";
|
|
15
|
+
this.repo = str(raw.repo) ?? "";
|
|
16
|
+
this.apiKey = str(raw.api_key) ?? str(raw.token) ?? process.env.GITHUB_TOKEN;
|
|
17
|
+
}
|
|
18
|
+
async fetchCandidateIssues() {
|
|
19
|
+
const out = [];
|
|
20
|
+
let page = 1;
|
|
21
|
+
do {
|
|
22
|
+
const items = await this.get(`/repos/${this.owner}/${this.repo}/issues?state=open&per_page=${this.config.tracker.pageSize}&page=${page}`);
|
|
23
|
+
if (items.length === 0)
|
|
24
|
+
break;
|
|
25
|
+
out.push(...items.filter(i => !i.pull_request).map(normalizeIssue));
|
|
26
|
+
if (items.length < this.config.tracker.pageSize)
|
|
27
|
+
break;
|
|
28
|
+
page++;
|
|
29
|
+
} while (true);
|
|
30
|
+
return out.filter(i => labelsMatch(i, this.config.tracker.requiredLabels, this.config.tracker.excludedLabels));
|
|
31
|
+
}
|
|
32
|
+
async fetchIssuesByStates(stateNames) {
|
|
33
|
+
const terminalSet = new Set(this.config.tracker.terminalStates.map(s => s.toLowerCase()));
|
|
34
|
+
const wantClosed = stateNames.some(s => terminalSet.has(s.toLowerCase()));
|
|
35
|
+
const wantOpen = stateNames.some(s => !terminalSet.has(s.toLowerCase()));
|
|
36
|
+
const results = [];
|
|
37
|
+
if (wantOpen)
|
|
38
|
+
results.push(await this.fetchCandidateIssues());
|
|
39
|
+
if (wantClosed)
|
|
40
|
+
results.push(await this.fetchByState("closed"));
|
|
41
|
+
return results.flat();
|
|
42
|
+
}
|
|
43
|
+
async fetchIssueStatesByIds(issueIds) {
|
|
44
|
+
if (issueIds.length === 0)
|
|
45
|
+
return {};
|
|
46
|
+
const entries = await Promise.all(issueIds.map(async (id) => {
|
|
47
|
+
const issue = await this.get(`/repos/${this.owner}/${this.repo}/issues/${id}`);
|
|
48
|
+
return [id, issue.state];
|
|
49
|
+
}));
|
|
50
|
+
return Object.fromEntries(entries);
|
|
51
|
+
}
|
|
52
|
+
async comment(issueId, body) {
|
|
53
|
+
await this.request("POST", `/repos/${this.owner}/${this.repo}/issues/${issueId}/comments`, { body });
|
|
54
|
+
}
|
|
55
|
+
async transition(issueId, stateName) {
|
|
56
|
+
const terminalSet = new Set(this.config.tracker.terminalStates.map(s => s.toLowerCase()));
|
|
57
|
+
const state = terminalSet.has(stateName.toLowerCase()) ? "closed" : "open";
|
|
58
|
+
await this.request("PATCH", `/repos/${this.owner}/${this.repo}/issues/${issueId}`, { state });
|
|
59
|
+
}
|
|
60
|
+
async fetchByState(state) {
|
|
61
|
+
const out = [];
|
|
62
|
+
let page = 1;
|
|
63
|
+
do {
|
|
64
|
+
const items = await this.get(`/repos/${this.owner}/${this.repo}/issues?state=${state}&per_page=${this.config.tracker.pageSize}&page=${page}`);
|
|
65
|
+
if (items.length === 0)
|
|
66
|
+
break;
|
|
67
|
+
out.push(...items.filter(i => !i.pull_request).map(normalizeIssue));
|
|
68
|
+
if (items.length < this.config.tracker.pageSize)
|
|
69
|
+
break;
|
|
70
|
+
page++;
|
|
71
|
+
} while (true);
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
headers() { return { authorization: `Bearer ${this.apiKey}`, accept: "application/vnd.github+json", "x-github-api-version": "2022-11-28" }; }
|
|
75
|
+
async get(path) {
|
|
76
|
+
const controller = new AbortController();
|
|
77
|
+
const timer = setTimeout(() => controller.abort(), 30000);
|
|
78
|
+
try {
|
|
79
|
+
const res = await this.fetchImpl(`${this.base}${path}`, { headers: this.headers(), signal: controller.signal });
|
|
80
|
+
if (!res.ok)
|
|
81
|
+
throw new Error(`github_api_status: ${res.status}`);
|
|
82
|
+
return await res.json();
|
|
83
|
+
}
|
|
84
|
+
catch (cause) {
|
|
85
|
+
if (cause instanceof Error && cause.message.startsWith("github_"))
|
|
86
|
+
throw cause;
|
|
87
|
+
throw new Error(`github_api_request: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
clearTimeout(timer);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async request(method, path, body) {
|
|
94
|
+
const controller = new AbortController();
|
|
95
|
+
const timer = setTimeout(() => controller.abort(), 30000);
|
|
96
|
+
try {
|
|
97
|
+
const res = await this.fetchImpl(`${this.base}${path}`, { method, headers: { ...this.headers(), "content-type": "application/json" }, body: JSON.stringify(body), signal: controller.signal });
|
|
98
|
+
if (!res.ok)
|
|
99
|
+
throw new Error(`github_api_status: ${res.status}`);
|
|
100
|
+
}
|
|
101
|
+
catch (cause) {
|
|
102
|
+
if (cause instanceof Error && cause.message.startsWith("github_"))
|
|
103
|
+
throw cause;
|
|
104
|
+
throw new Error(`github_api_request: ${cause instanceof Error ? cause.message : String(cause)}`, { cause });
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
clearTimeout(timer);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function normalizeIssue(raw) { return { id: String(raw.number), identifier: `#${raw.number}`, title: raw.title, description: raw.body ?? null, priority: null, state: raw.state, branchName: null, url: raw.html_url, labels: raw.labels.map(l => l.name.toLowerCase()), blockedBy: [], createdAt: raw.created_at, updatedAt: raw.updated_at }; }
|
|
112
|
+
function labelsMatch(issue, required, excluded) { const labels = new Set(issue.labels); return required.every(l => labels.has(l.toLowerCase())) && !excluded.some(l => labels.has(l.toLowerCase())); }
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@conduit-harness/conduit-tracker-github",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Conduit tracker plugin for GitHub Issues",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" }
|
|
8
|
+
},
|
|
9
|
+
"files": ["dist"],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc -p tsconfig.json",
|
|
12
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": { "access": "public" },
|
|
15
|
+
"repository": { "type": "git", "url": "git+https://github.com/conduit-harness/conduit.git" },
|
|
16
|
+
"engines": { "node": ">=24.0.0" },
|
|
17
|
+
"peerDependencies": { "@conduit-harness/conduit": ">=0.0.1" },
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@conduit-harness/conduit": "workspace:*",
|
|
20
|
+
"@types/node": "latest",
|
|
21
|
+
"typescript": "latest"
|
|
22
|
+
}
|
|
23
|
+
}
|