@unbrained/pm-web 2026.9.13 → 2026.9.23
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/CHANGELOG.md +18 -1
- package/README.md +6 -4
- package/dist/app.d.ts +10 -0
- package/dist/app.js +19 -9
- package/dist/app.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/routes/admin.js +6 -6
- package/dist/routes/admin.js.map +1 -1
- package/dist/routes/auth.js +2 -2
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/extensions.js +24 -37
- package/dist/routes/extensions.js.map +1 -1
- package/dist/routes/github.js +169 -107
- package/dist/routes/github.js.map +1 -1
- package/dist/routes/groups.js +9 -14
- package/dist/routes/groups.js.map +1 -1
- package/dist/routes/pm.js +532 -1015
- package/dist/routes/pm.js.map +1 -1
- package/dist/routes/projects.js +10 -6
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/route-helpers.d.ts +74 -0
- package/dist/routes/route-helpers.js +85 -0
- package/dist/routes/route-helpers.js.map +1 -0
- package/dist/routes/sharing.js +30 -18
- package/dist/routes/sharing.js.map +1 -1
- package/dist/server.js +18 -23
- package/dist/server.js.map +1 -1
- package/dist/services/mutation-event-watcher.js +3 -28
- package/dist/services/mutation-event-watcher.js.map +1 -1
- package/dist/services/pm-runner.js +3 -1
- package/dist/services/pm-runner.js.map +1 -1
- package/dist/services/project-watcher.js +14 -38
- package/dist/services/project-watcher.js.map +1 -1
- package/dist/services/sse.d.ts +7 -0
- package/dist/services/sse.js +22 -0
- package/dist/services/sse.js.map +1 -1
- package/dist/services/watcher-utils.d.ts +42 -0
- package/dist/services/watcher-utils.js +60 -0
- package/dist/services/watcher-utils.js.map +1 -0
- package/manifest.json +2 -2
- package/package.json +20 -9
- package/public/src/app.js +22 -52
- package/public/src/app.js.map +1 -1
- package/public/src/app.ts +18 -75
- package/public/src/browser-window.js +29 -0
- package/public/src/browser-window.js.map +1 -0
- package/public/src/browser-window.ts +56 -0
- package/public/src/components/modals.js +1 -1
- package/public/src/components/modals.js.map +1 -1
- package/public/src/components/modals.ts +1 -1
- package/public/src/i18n.js +14 -6
- package/public/src/i18n.js.map +1 -1
- package/public/src/i18n.ts +16 -6
- package/public/src/sw.ts +1 -0
- package/public/src/utils.js +58 -0
- package/public/src/utils.js.map +1 -1
- package/public/src/utils.ts +53 -0
- package/public/src/views/admin.js +2 -5
- package/public/src/views/admin.js.map +1 -1
- package/public/src/views/admin.ts +2 -2
- package/public/src/views/auth.js +5 -1
- package/public/src/views/auth.js.map +1 -1
- package/public/src/views/auth.ts +6 -1
- package/public/src/views/calendar.js +1 -2
- package/public/src/views/calendar.js.map +1 -1
- package/public/src/views/calendar.ts +1 -2
- package/public/src/views/config.js +14 -21
- package/public/src/views/config.js.map +1 -1
- package/public/src/views/config.ts +14 -19
- package/public/src/views/context.js +11 -12
- package/public/src/views/context.js.map +1 -1
- package/public/src/views/context.ts +13 -12
- package/public/src/views/create.js +3 -11
- package/public/src/views/create.js.map +1 -1
- package/public/src/views/create.ts +3 -3
- package/public/src/views/export.js +2 -3
- package/public/src/views/export.js.map +1 -1
- package/public/src/views/export.ts +2 -3
- package/public/src/views/github.js +33 -47
- package/public/src/views/github.js.map +1 -1
- package/public/src/views/github.ts +35 -28
- package/public/src/views/graph-canvas.js +92 -99
- package/public/src/views/graph-canvas.js.map +1 -1
- package/public/src/views/graph-canvas.ts +94 -93
- package/public/src/views/graph.js +88 -73
- package/public/src/views/graph.js.map +1 -1
- package/public/src/views/graph.ts +97 -63
- package/public/src/views/groups.js +2 -5
- package/public/src/views/groups.js.map +1 -1
- package/public/src/views/groups.ts +2 -2
- package/public/src/views/guide.js +11 -10
- package/public/src/views/guide.js.map +1 -1
- package/public/src/views/guide.ts +12 -10
- package/public/src/views/items.js +100 -130
- package/public/src/views/items.js.map +1 -1
- package/public/src/views/items.ts +99 -117
- package/public/src/views/normalize.js +2 -9
- package/public/src/views/normalize.js.map +1 -1
- package/public/src/views/normalize.ts +2 -9
- package/public/src/views/packages.js +7 -4
- package/public/src/views/packages.js.map +1 -1
- package/public/src/views/packages.ts +8 -4
- package/public/src/views/plan-execution.js.map +1 -1
- package/public/src/views/plan-execution.ts +5 -15
- package/public/src/views/plan.js +2 -1
- package/public/src/views/plan.js.map +1 -1
- package/public/src/views/plan.ts +6 -17
- package/public/src/views/projects.js +5 -6
- package/public/src/views/projects.js.map +1 -1
- package/public/src/views/projects.ts +5 -6
- package/public/src/views/search.js +5 -1
- package/public/src/views/search.js.map +1 -1
- package/public/src/views/search.ts +7 -1
- package/public/src/views/settings.js +30 -55
- package/public/src/views/settings.js.map +1 -1
- package/public/src/views/settings.ts +23 -17
- package/public/src/views/shared.js +2 -5
- package/public/src/views/shared.js.map +1 -1
- package/public/src/views/shared.ts +2 -5
- package/public/src/views/sharing.js +2 -5
- package/public/src/views/sharing.js.map +1 -1
- package/public/src/views/sharing.ts +2 -2
- package/public/src/views/templates.js +9 -16
- package/public/src/views/templates.js.map +1 -1
- package/public/src/views/templates.ts +9 -14
- package/public/src/views/validate.js +2 -9
- package/public/src/views/validate.js.map +1 -1
- package/public/src/views/validate.ts +2 -9
- package/public/sw.js +1 -0
package/dist/routes/github.js
CHANGED
|
@@ -86,13 +86,143 @@ function boundedNumber(raw, fallback, min, max) {
|
|
|
86
86
|
return fallback;
|
|
87
87
|
return Math.min(max, Math.max(min, Math.trunc(parsed)));
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Verify project access for a read-only GitHub route, sending 404 on failure.
|
|
91
|
+
*
|
|
92
|
+
* Centralises the `verifyProjectAccess` + 404 pattern repeated by the GET
|
|
93
|
+
* linked-repo, GET issues, and GET links handlers.
|
|
94
|
+
*
|
|
95
|
+
* @returns The project access object, or `null` when access failed (the 404
|
|
96
|
+
* response has already been sent).
|
|
97
|
+
*/
|
|
98
|
+
async function requireGithubAccess(req, res) {
|
|
91
99
|
const access = await verifyProjectAccess(req.user.userId, routeParam(req, "id"));
|
|
92
100
|
if (!access) {
|
|
93
101
|
res.status(404).json({ error: "Project not found" });
|
|
94
|
-
return;
|
|
102
|
+
return null;
|
|
95
103
|
}
|
|
104
|
+
return access;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Verify project access for a mutating GitHub route, sending 403 on failure.
|
|
108
|
+
*
|
|
109
|
+
* Centralises the `verifyProjectAccess` + edit-permission + 403 pattern
|
|
110
|
+
* repeated by the PATCH link, POST import, POST push, and PATCH push handlers.
|
|
111
|
+
*
|
|
112
|
+
* @returns The project access object, or `null` when access failed (the 403
|
|
113
|
+
* response has already been sent).
|
|
114
|
+
*/
|
|
115
|
+
async function requireGithubEditAccess(req, res) {
|
|
116
|
+
const access = await verifyProjectAccess(req.user.userId, routeParam(req, "id"));
|
|
117
|
+
if (!access || access.permission !== "edit") {
|
|
118
|
+
res.status(403).json({ error: "Not authorized" });
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
return access;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Look up the GitHub repo linked to a project, sending 400 when none is linked.
|
|
125
|
+
*
|
|
126
|
+
* Centralises the `SELECT github_owner, github_repo` query and the "no repo
|
|
127
|
+
* linked" 400 check repeated by the issues, import, push, and patch-push
|
|
128
|
+
* handlers.
|
|
129
|
+
*
|
|
130
|
+
* @param res - The Express response (used to send the 400 on failure).
|
|
131
|
+
* @param projectId - The project id from the route parameter.
|
|
132
|
+
* @param notLinkedMessage - The exact 400 error message to send when no repo
|
|
133
|
+
* is linked (callers preserve their original wording).
|
|
134
|
+
* @returns The linked repo `{ owner, repo }`, or `null` when none is linked.
|
|
135
|
+
*/
|
|
136
|
+
async function requireLinkedRepo(res, projectId, notLinkedMessage) {
|
|
137
|
+
const repoResult = await pool.query(`SELECT github_owner, github_repo FROM pm_projects WHERE id = $1`, [projectId]);
|
|
138
|
+
const { github_owner: owner, github_repo: repo } = repoResult.rows[0];
|
|
139
|
+
if (!owner || !repo) {
|
|
140
|
+
res.status(400).json({ error: notLinkedMessage });
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return { owner, repo };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Resolve the user's decrypted GitHub token, sending 400 when none is set.
|
|
147
|
+
*
|
|
148
|
+
* Centralises the `getGitHubToken` + 400 pattern repeated by every GitHub
|
|
149
|
+
* handler that needs to call the API.
|
|
150
|
+
*
|
|
151
|
+
* @param res - The Express response (used to send the 400 on failure).
|
|
152
|
+
* @param userId - The user whose token to retrieve.
|
|
153
|
+
* @returns The decrypted token, or `null` when none is configured.
|
|
154
|
+
*/
|
|
155
|
+
async function requireGithubToken(res, userId) {
|
|
156
|
+
const token = await getGitHubToken(userId);
|
|
157
|
+
if (!token) {
|
|
158
|
+
res.status(400).json({ error: "No GitHub token configured" });
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
return token;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Resolve the linked GitHub repository and its access token for one request.
|
|
165
|
+
*
|
|
166
|
+
* The issues, import, push, and patch-push handlers all begin with the same
|
|
167
|
+
* pair of guards. The underlying helpers have already answered the response
|
|
168
|
+
* on failure, so `null` means the route should simply return.
|
|
169
|
+
*
|
|
170
|
+
* @param res - The Express response (used for the failure bodies).
|
|
171
|
+
* @param projectId - The project whose linked repository to look up.
|
|
172
|
+
* @param ownerUserId - The user whose GitHub token to decrypt.
|
|
173
|
+
* @param notLinkedMessage - Error text used when no repository is linked.
|
|
174
|
+
* @returns Owner, repository name and token, or `null` after a failure.
|
|
175
|
+
*/
|
|
176
|
+
async function requireRepoAndToken(res, projectId, ownerUserId, notLinkedMessage) {
|
|
177
|
+
const linked = await requireLinkedRepo(res, projectId, notLinkedMessage);
|
|
178
|
+
if (!linked)
|
|
179
|
+
return null;
|
|
180
|
+
const token = await requireGithubToken(res, ownerUserId);
|
|
181
|
+
if (!token)
|
|
182
|
+
return null;
|
|
183
|
+
return { owner: linked.owner, repo: linked.repo, token };
|
|
184
|
+
}
|
|
185
|
+
/** Resolve the GitHub repo and token for the project in the request URL,
|
|
186
|
+
* using the standard "not linked" message. DRY wrapper used by the issues
|
|
187
|
+
* and push routes that share the same error string. */
|
|
188
|
+
async function requireProjectRepoAndToken(res, req, ownerUserId) {
|
|
189
|
+
const gh = await requireRepoAndToken(res, routeParam(req, "id"), ownerUserId, "No GitHub repo linked to this project");
|
|
190
|
+
return gh ?? undefined;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Extract the fields needed to build a GitHub issue from a pm item.
|
|
194
|
+
*
|
|
195
|
+
* The push and patch-push handlers both read the same set of fields from a
|
|
196
|
+
* `runPm get --json` result and build the same body-line array. This helper
|
|
197
|
+
* centralises that extraction so the duplication gate does not flag the
|
|
198
|
+
* identical field-reading and body-building block.
|
|
199
|
+
*
|
|
200
|
+
* @param itemId - The pm item id (used as a title fallback).
|
|
201
|
+
* @param item - The parsed pm item object from `runPm get --json`.
|
|
202
|
+
* @returns The extracted fields including pre-built `bodyLines`.
|
|
203
|
+
*/
|
|
204
|
+
function extractPmItemFields(itemId, item) {
|
|
205
|
+
const title = String(item["title"] || itemId);
|
|
206
|
+
const status = String(item["status"] || "open");
|
|
207
|
+
const description = String(item["description"] || "");
|
|
208
|
+
const tags = Array.isArray(item["tags"]) ? item["tags"] : [];
|
|
209
|
+
const ghState = status === "closed" || status === "canceled" ? "closed" : "open";
|
|
210
|
+
const assignee = item["assignee"] ? String(item["assignee"]) : null;
|
|
211
|
+
const bodyLines = [
|
|
212
|
+
`**pm item:** \`${itemId}\``,
|
|
213
|
+
`**type:** ${String(item["type"] || "Task")}`,
|
|
214
|
+
`**status:** ${status}`,
|
|
215
|
+
`**priority:** ${String(item["priority"] || "3")}`,
|
|
216
|
+
"",
|
|
217
|
+
description || "_No description_",
|
|
218
|
+
];
|
|
219
|
+
return { title, status, description, tags, ghState, assignee, bodyLines };
|
|
220
|
+
}
|
|
221
|
+
// GET /api/projects/:id/github — get linked repo info
|
|
222
|
+
router.get("/", async (req, res) => {
|
|
223
|
+
const access = await requireGithubAccess(req, res);
|
|
224
|
+
if (!access)
|
|
225
|
+
return;
|
|
96
226
|
const result = await pool.query(`SELECT github_owner, github_repo, github_sync_enabled FROM pm_projects WHERE id = $1`, [routeParam(req, "id")]);
|
|
97
227
|
const row = result.rows[0];
|
|
98
228
|
res.json({
|
|
@@ -104,11 +234,9 @@ router.get("/", async (req, res) => {
|
|
|
104
234
|
});
|
|
105
235
|
// PATCH /api/projects/:id/github — link or unlink a repo
|
|
106
236
|
router.patch("/", async (req, res) => {
|
|
107
|
-
const access = await
|
|
108
|
-
if (!access
|
|
109
|
-
res.status(403).json({ error: "Not authorized" });
|
|
237
|
+
const access = await requireGithubEditAccess(req, res);
|
|
238
|
+
if (!access)
|
|
110
239
|
return;
|
|
111
|
-
}
|
|
112
240
|
const { owner, repo, syncEnabled } = req.body;
|
|
113
241
|
try {
|
|
114
242
|
if (owner && repo) {
|
|
@@ -134,22 +262,13 @@ router.patch("/", async (req, res) => {
|
|
|
134
262
|
});
|
|
135
263
|
// GET /api/projects/:id/github/issues — list GitHub issues
|
|
136
264
|
router.get("/issues", async (req, res) => {
|
|
137
|
-
const access = await
|
|
138
|
-
if (!access)
|
|
139
|
-
res.status(404).json({ error: "Project not found" });
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const repoResult = await pool.query(`SELECT github_owner, github_repo FROM pm_projects WHERE id = $1`, [routeParam(req, "id")]);
|
|
143
|
-
const { github_owner: owner, github_repo: repo } = repoResult.rows[0];
|
|
144
|
-
if (!owner || !repo) {
|
|
145
|
-
res.status(400).json({ error: "No GitHub repo linked to this project" });
|
|
265
|
+
const access = await requireGithubAccess(req, res);
|
|
266
|
+
if (!access)
|
|
146
267
|
return;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if (!token) {
|
|
150
|
-
res.status(400).json({ error: "No GitHub token configured" });
|
|
268
|
+
const gh = await requireProjectRepoAndToken(res, req, access.ownerUserId);
|
|
269
|
+
if (!gh)
|
|
151
270
|
return;
|
|
152
|
-
}
|
|
271
|
+
const { owner, repo, token } = gh;
|
|
153
272
|
try {
|
|
154
273
|
const resp = await ghFetch(buildGitHubIssuesUrl(owner, repo, req.query), token);
|
|
155
274
|
if (!resp.ok) {
|
|
@@ -168,11 +287,9 @@ router.get("/issues", async (req, res) => {
|
|
|
168
287
|
});
|
|
169
288
|
// POST /api/projects/:id/github/import — import selected GitHub issues as pm items
|
|
170
289
|
router.post("/import", async (req, res) => {
|
|
171
|
-
const access = await
|
|
172
|
-
if (!access
|
|
173
|
-
res.status(403).json({ error: "Not authorized" });
|
|
290
|
+
const access = await requireGithubEditAccess(req, res);
|
|
291
|
+
if (!access)
|
|
174
292
|
return;
|
|
175
|
-
}
|
|
176
293
|
const requestBody = req.body;
|
|
177
294
|
const rawIssueNumbers = typeof requestBody === "object" && requestBody !== null
|
|
178
295
|
? requestBody["issueNumbers"]
|
|
@@ -197,17 +314,10 @@ router.post("/import", async (req, res) => {
|
|
|
197
314
|
}
|
|
198
315
|
issueNumbers.push(value);
|
|
199
316
|
}
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
if (!owner || !repo) {
|
|
203
|
-
res.status(400).json({ error: "No GitHub repo linked" });
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
const token = await getGitHubToken(access.ownerUserId);
|
|
207
|
-
if (!token) {
|
|
208
|
-
res.status(400).json({ error: "No GitHub token configured" });
|
|
317
|
+
const gh = await requireRepoAndToken(res, routeParam(req, "id"), access.ownerUserId, "No GitHub repo linked");
|
|
318
|
+
if (!gh)
|
|
209
319
|
return;
|
|
210
|
-
}
|
|
320
|
+
const { owner, repo, token } = gh;
|
|
211
321
|
const created = [];
|
|
212
322
|
const errors = [];
|
|
213
323
|
for (const num of issueNumbers) {
|
|
@@ -250,32 +360,21 @@ router.post("/import", async (req, res) => {
|
|
|
250
360
|
});
|
|
251
361
|
// GET /api/projects/:id/github/links — fetch pm-item ↔ GitHub-issue links
|
|
252
362
|
router.get("/links", async (req, res) => {
|
|
253
|
-
const access = await
|
|
254
|
-
if (!access)
|
|
255
|
-
res.status(404).json({ error: "Project not found" });
|
|
363
|
+
const access = await requireGithubAccess(req, res);
|
|
364
|
+
if (!access)
|
|
256
365
|
return;
|
|
257
|
-
}
|
|
258
366
|
const result = await pool.query(`SELECT pm_item_id, issue_number, issue_url, synced_at FROM pm_github_item_links WHERE project_id = $1 ORDER BY synced_at DESC`, [routeParam(req, "id")]);
|
|
259
367
|
res.json({ links: result.rows });
|
|
260
368
|
});
|
|
261
369
|
// POST /api/projects/:id/github/push — push pm items as new GitHub issues
|
|
262
370
|
router.post("/push", async (req, res) => {
|
|
263
|
-
const access = await
|
|
264
|
-
if (!access
|
|
265
|
-
res.status(403).json({ error: "Not authorized" });
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
const repoResult = await pool.query(`SELECT github_owner, github_repo FROM pm_projects WHERE id = $1`, [routeParam(req, "id")]);
|
|
269
|
-
const { github_owner: owner, github_repo: repo } = repoResult.rows[0];
|
|
270
|
-
if (!owner || !repo) {
|
|
271
|
-
res.status(400).json({ error: "No GitHub repo linked to this project" });
|
|
371
|
+
const access = await requireGithubEditAccess(req, res);
|
|
372
|
+
if (!access)
|
|
272
373
|
return;
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (!token) {
|
|
276
|
-
res.status(400).json({ error: "No GitHub token configured" });
|
|
374
|
+
const gh = await requireProjectRepoAndToken(res, req, access.ownerUserId);
|
|
375
|
+
if (!gh)
|
|
277
376
|
return;
|
|
278
|
-
}
|
|
377
|
+
const { owner, repo, token } = gh;
|
|
279
378
|
const { itemIds } = req.body;
|
|
280
379
|
if (!itemIds || itemIds.length === 0) {
|
|
281
380
|
res.status(400).json({ error: "itemIds array is required" });
|
|
@@ -299,27 +398,13 @@ router.post("/push", async (req, res) => {
|
|
|
299
398
|
errors.push(`${itemId}: item not found`);
|
|
300
399
|
continue;
|
|
301
400
|
}
|
|
302
|
-
const
|
|
303
|
-
const
|
|
304
|
-
const
|
|
305
|
-
const tags = Array.isArray(item["tags"]) ? item["tags"] : [];
|
|
306
|
-
const assignee = item["assignee"] ? String(item["assignee"]) : null;
|
|
307
|
-
const bodyLines = [
|
|
308
|
-
`**pm item:** \`${itemId}\``,
|
|
309
|
-
`**type:** ${String(item["type"] || "Task")}`,
|
|
310
|
-
`**status:** ${status}`,
|
|
311
|
-
`**priority:** ${String(item["priority"] || "3")}`,
|
|
312
|
-
"",
|
|
313
|
-
description || "_No description_",
|
|
314
|
-
];
|
|
315
|
-
const issueBody = bodyLines.join("\n");
|
|
316
|
-
const labels = tags.filter(Boolean);
|
|
317
|
-
const ghState = status === "closed" || status === "canceled" ? "closed" : "open";
|
|
318
|
-
const issuePayload = { title, body: issueBody };
|
|
401
|
+
const fields = extractPmItemFields(itemId, item);
|
|
402
|
+
const issuePayload = { title: fields.title, body: fields.bodyLines.join("\n") };
|
|
403
|
+
const labels = fields.tags.filter(Boolean);
|
|
319
404
|
if (labels.length > 0)
|
|
320
405
|
issuePayload["labels"] = labels;
|
|
321
|
-
if (assignee)
|
|
322
|
-
issuePayload["assignees"] = [assignee];
|
|
406
|
+
if (fields.assignee)
|
|
407
|
+
issuePayload["assignees"] = [fields.assignee];
|
|
323
408
|
const resp = await ghFetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues`, token, { method: "POST", body: JSON.stringify(issuePayload), headers: { "Content-Type": "application/json" } });
|
|
324
409
|
if (!resp.ok) {
|
|
325
410
|
const errBody = await resp.json().catch(() => ({}));
|
|
@@ -327,7 +412,7 @@ router.post("/push", async (req, res) => {
|
|
|
327
412
|
continue;
|
|
328
413
|
}
|
|
329
414
|
const issue = (await resp.json());
|
|
330
|
-
if (ghState === "closed") {
|
|
415
|
+
if (fields.ghState === "closed") {
|
|
331
416
|
await ghFetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/${encodeURIComponent(issue.number)}`, token, { method: "PATCH", body: JSON.stringify({ state: "closed" }), headers: { "Content-Type": "application/json" } }).catch(() => undefined);
|
|
332
417
|
}
|
|
333
418
|
await pool.query(`INSERT INTO pm_github_item_links (project_id, pm_item_id, issue_number, issue_url, synced_at)
|
|
@@ -343,11 +428,9 @@ router.post("/push", async (req, res) => {
|
|
|
343
428
|
});
|
|
344
429
|
// PATCH /api/projects/:id/github/push/:itemId — update an existing linked GitHub issue from pm item
|
|
345
430
|
router.patch("/push/:itemId", async (req, res) => {
|
|
346
|
-
const access = await
|
|
347
|
-
if (!access
|
|
348
|
-
res.status(403).json({ error: "Not authorized" });
|
|
431
|
+
const access = await requireGithubEditAccess(req, res);
|
|
432
|
+
if (!access)
|
|
349
433
|
return;
|
|
350
|
-
}
|
|
351
434
|
const itemId = routeParam(req, "itemId");
|
|
352
435
|
const linkResult = await pool.query(`SELECT issue_number FROM pm_github_item_links WHERE project_id = $1 AND pm_item_id = $2`, [routeParam(req, "id"), itemId]);
|
|
353
436
|
if (linkResult.rows.length === 0) {
|
|
@@ -355,17 +438,10 @@ router.patch("/push/:itemId", async (req, res) => {
|
|
|
355
438
|
return;
|
|
356
439
|
}
|
|
357
440
|
const issueNumber = linkResult.rows[0].issue_number;
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
if (!owner || !repo) {
|
|
361
|
-
res.status(400).json({ error: "No GitHub repo linked" });
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
const token = await getGitHubToken(access.ownerUserId);
|
|
365
|
-
if (!token) {
|
|
366
|
-
res.status(400).json({ error: "No GitHub token configured" });
|
|
441
|
+
const gh = await requireRepoAndToken(res, routeParam(req, "id"), access.ownerUserId, "No GitHub repo linked");
|
|
442
|
+
if (!gh)
|
|
367
443
|
return;
|
|
368
|
-
}
|
|
444
|
+
const { owner, repo, token } = gh;
|
|
369
445
|
const getResult = await runPm({ args: ["get", itemId, "--json"], userId: access.ownerUserId, slug: access.slug, jsonOutput: true });
|
|
370
446
|
if (!getResult.ok || !getResult.parsed) {
|
|
371
447
|
res.status(404).json({ error: "Item not found" });
|
|
@@ -376,22 +452,10 @@ router.patch("/push/:itemId", async (req, res) => {
|
|
|
376
452
|
res.status(404).json({ error: "Item not found" });
|
|
377
453
|
return;
|
|
378
454
|
}
|
|
379
|
-
const
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
const ghState = status === "closed" || status === "canceled" ? "closed" : "open";
|
|
384
|
-
const bodyLines = [
|
|
385
|
-
`**pm item:** \`${itemId}\``,
|
|
386
|
-
`**type:** ${String(item["type"] || "Task")}`,
|
|
387
|
-
`**status:** ${status}`,
|
|
388
|
-
`**priority:** ${String(item["priority"] || "3")}`,
|
|
389
|
-
"",
|
|
390
|
-
description || "_No description_",
|
|
391
|
-
];
|
|
392
|
-
const updatePayload = { title, body: bodyLines.join("\n"), state: ghState };
|
|
393
|
-
if (tags.length > 0)
|
|
394
|
-
updatePayload["labels"] = tags.filter(Boolean);
|
|
455
|
+
const fields = extractPmItemFields(itemId, item);
|
|
456
|
+
const updatePayload = { title: fields.title, body: fields.bodyLines.join("\n"), state: fields.ghState };
|
|
457
|
+
if (fields.tags.length > 0)
|
|
458
|
+
updatePayload["labels"] = fields.tags.filter(Boolean);
|
|
395
459
|
const resp = await ghFetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues/${encodeURIComponent(issueNumber)}`, token, { method: "PATCH", body: JSON.stringify(updatePayload), headers: { "Content-Type": "application/json" } });
|
|
396
460
|
if (!resp.ok) {
|
|
397
461
|
const errBody = await resp.json().catch(() => ({}));
|
|
@@ -409,11 +473,9 @@ router.get("/repo-info", async (req, res) => {
|
|
|
409
473
|
res.status(400).json({ error: "owner and repo are required" });
|
|
410
474
|
return;
|
|
411
475
|
}
|
|
412
|
-
const token = await
|
|
413
|
-
if (!token)
|
|
414
|
-
res.status(400).json({ error: "No GitHub token configured" });
|
|
476
|
+
const token = await requireGithubToken(res, req.user.userId);
|
|
477
|
+
if (!token)
|
|
415
478
|
return;
|
|
416
|
-
}
|
|
417
479
|
try {
|
|
418
480
|
const resp = await ghFetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`, token);
|
|
419
481
|
if (!resp.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/routes/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/routes/github.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/groups.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Router } from "express";
|
|
|
2
2
|
import { pool } from "../db.js";
|
|
3
3
|
import { requireAuth } from "../middleware/auth.js";
|
|
4
4
|
import { routeParam, uuidParamGuard } from "./route-params.js";
|
|
5
|
+
import { findUserByEmail, notFoundWhenEmpty, parseGroupInput } from "./route-helpers.js";
|
|
5
6
|
const router = Router();
|
|
6
7
|
router.use(requireAuth);
|
|
7
8
|
// Both group ids and the member :userId are UUIDs; a malformed one is a bad
|
|
@@ -26,17 +27,16 @@ router.get("/", async (req, res) => {
|
|
|
26
27
|
});
|
|
27
28
|
// POST /api/groups - create a group
|
|
28
29
|
router.post("/", async (req, res) => {
|
|
29
|
-
const
|
|
30
|
-
if (!
|
|
31
|
-
res.status(400).json({ error: "Group name is required" });
|
|
30
|
+
const input = parseGroupInput(res, req.body);
|
|
31
|
+
if (!input)
|
|
32
32
|
return;
|
|
33
|
-
}
|
|
33
|
+
const { name, description } = input;
|
|
34
34
|
const client = await pool.connect();
|
|
35
35
|
try {
|
|
36
36
|
await client.query("BEGIN");
|
|
37
37
|
const groupResult = await client.query(`INSERT INTO pm_groups (owner_id, name, description)
|
|
38
38
|
VALUES ($1, $2, $3)
|
|
39
|
-
RETURNING id, owner_id, name, description, created_at, updated_at`, [req.user.userId, name
|
|
39
|
+
RETURNING id, owner_id, name, description, created_at, updated_at`, [req.user.userId, name, description]);
|
|
40
40
|
const group = groupResult.rows[0];
|
|
41
41
|
// Add owner as a member with role 'owner'
|
|
42
42
|
await client.query(`INSERT INTO pm_group_members (group_id, user_id, role) VALUES ($1, $2, 'owner')`, [group.id, req.user.userId]);
|
|
@@ -88,10 +88,8 @@ router.patch("/:id", async (req, res) => {
|
|
|
88
88
|
updated_at = NOW()
|
|
89
89
|
WHERE id = $3 AND owner_id = $4
|
|
90
90
|
RETURNING id, owner_id, name, description, created_at, updated_at`, [name?.trim() || null, description !== undefined ? description : null, routeParam(req, "id"), req.user.userId]);
|
|
91
|
-
if (result.rows
|
|
92
|
-
res.status(404).json({ error: "Group not found or you are not the owner" });
|
|
91
|
+
if (notFoundWhenEmpty(res, result.rows, "Group not found or you are not the owner"))
|
|
93
92
|
return;
|
|
94
|
-
}
|
|
95
93
|
res.json({ group: result.rows[0] });
|
|
96
94
|
}
|
|
97
95
|
catch (err) {
|
|
@@ -103,10 +101,8 @@ router.patch("/:id", async (req, res) => {
|
|
|
103
101
|
router.delete("/:id", async (req, res) => {
|
|
104
102
|
try {
|
|
105
103
|
const result = await pool.query(`DELETE FROM pm_groups WHERE id = $1 AND owner_id = $2 RETURNING id`, [routeParam(req, "id"), req.user.userId]);
|
|
106
|
-
if (result.rows
|
|
107
|
-
res.status(404).json({ error: "Group not found or you are not the owner" });
|
|
104
|
+
if (notFoundWhenEmpty(res, result.rows, "Group not found or you are not the owner"))
|
|
108
105
|
return;
|
|
109
|
-
}
|
|
110
106
|
res.json({ ok: true });
|
|
111
107
|
}
|
|
112
108
|
catch (err) {
|
|
@@ -130,12 +126,11 @@ router.post("/:id/members", async (req, res) => {
|
|
|
130
126
|
return;
|
|
131
127
|
}
|
|
132
128
|
// Find the user by email
|
|
133
|
-
const
|
|
134
|
-
if (
|
|
129
|
+
const invitedUser = await findUserByEmail(email);
|
|
130
|
+
if (!invitedUser) {
|
|
135
131
|
res.status(404).json({ error: "User not found" });
|
|
136
132
|
return;
|
|
137
133
|
}
|
|
138
|
-
const invitedUser = userResult.rows[0];
|
|
139
134
|
const memberResult = await pool.query(`INSERT INTO pm_group_members (group_id, user_id, role)
|
|
140
135
|
VALUES ($1, $2, $3)
|
|
141
136
|
ON CONFLICT (group_id, user_id) DO UPDATE SET role = EXCLUDED.role
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/routes/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/routes/groups.ts"],"names":[],"mappings":"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"}
|