@enrichlayer/el-linear 1.32.0 → 1.32.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.
|
@@ -188,8 +188,10 @@ export declare class GraphQLIssuesService {
|
|
|
188
188
|
/**
|
|
189
189
|
* Batch-fetches N issues in a single GraphQL round-trip (DEV-4477).
|
|
190
190
|
*
|
|
191
|
-
* Replaces `Promise.all(refs.map(getIssueById))`
|
|
192
|
-
*
|
|
191
|
+
* Replaces `Promise.all(refs.map(getIssueById))` as the primary path. The
|
|
192
|
+
* batch response is still order-restored locally; if Linear omits an input
|
|
193
|
+
* ref from that response, the missing ref falls back to the single-issue
|
|
194
|
+
* lookup path so valid issues are not misreported as missing. Useful for
|
|
193
195
|
* `el-linear issues read <id...>`, the only caller today.
|
|
194
196
|
*
|
|
195
197
|
* Identifier shapes accepted (mirrors `getIssueById`):
|
|
@@ -66,8 +66,10 @@ export class GraphQLIssuesService {
|
|
|
66
66
|
/**
|
|
67
67
|
* Batch-fetches N issues in a single GraphQL round-trip (DEV-4477).
|
|
68
68
|
*
|
|
69
|
-
* Replaces `Promise.all(refs.map(getIssueById))`
|
|
70
|
-
*
|
|
69
|
+
* Replaces `Promise.all(refs.map(getIssueById))` as the primary path. The
|
|
70
|
+
* batch response is still order-restored locally; if Linear omits an input
|
|
71
|
+
* ref from that response, the missing ref falls back to the single-issue
|
|
72
|
+
* lookup path so valid issues are not misreported as missing. Useful for
|
|
71
73
|
* `el-linear issues read <id...>`, the only caller today.
|
|
72
74
|
*
|
|
73
75
|
* Identifier shapes accepted (mirrors `getIssueById`):
|
|
@@ -146,11 +148,12 @@ export class GraphQLIssuesService {
|
|
|
146
148
|
for (const ref of refs) {
|
|
147
149
|
const node = isUuid(ref) ? byUuid.get(ref) : byIdentifier.get(ref);
|
|
148
150
|
if (!node) {
|
|
149
|
-
|
|
151
|
+
ordered.push(await this.getIssueById(ref));
|
|
152
|
+
continue;
|
|
150
153
|
}
|
|
151
|
-
ordered.push(node);
|
|
154
|
+
ordered.push(this.transformIssueData(node));
|
|
152
155
|
}
|
|
153
|
-
return ordered
|
|
156
|
+
return ordered;
|
|
154
157
|
}
|
|
155
158
|
async getFirstStartedStatus(team) {
|
|
156
159
|
const statuses = await this.graphQLService.rawRequest(TEAM_STARTED_STATUSES_QUERY, { teamId: team.id });
|
|
@@ -5,7 +5,7 @@ import { isUuid } from "./uuid.js";
|
|
|
5
5
|
// Unicode-aware mention regex: ASCII-only `\w` would silently fail to
|
|
6
6
|
// match Cyrillic / accented Latin / CJK names (`@Юрий`, `@Niño`).
|
|
7
7
|
// `\p{L}` covers all Unicode letters; `\p{N}` covers all numerics.
|
|
8
|
-
const MENTION_NAME_CHARS = "\\p{L}\\p{N}_";
|
|
8
|
+
const MENTION_NAME_CHARS = "\\p{L}\\p{N}_\\-";
|
|
9
9
|
const EXPLICIT_MENTION_REGEX = new RegExp(`(?<![${MENTION_NAME_CHARS}])@([${MENTION_NAME_CHARS}]+)(?![${MENTION_NAME_CHARS}/])`, "gu");
|
|
10
10
|
const WHITESPACE_SPLIT_REGEX = /\s+/;
|
|
11
11
|
const FENCED_CODE_REGEX = /```[\s\S]*?```/g;
|
|
@@ -32,7 +32,10 @@ export async function resolveMentions(body, linearService, options = {}) {
|
|
|
32
32
|
// 1. Resolve explicit @name mentions (existing behavior).
|
|
33
33
|
const explicit = new Map();
|
|
34
34
|
const unresolvedExplicit = [];
|
|
35
|
-
const
|
|
35
|
+
const explicitScanBody = stripCodeAndLinks(body);
|
|
36
|
+
const explicitNames = [
|
|
37
|
+
...explicitScanBody.matchAll(EXPLICIT_MENTION_REGEX),
|
|
38
|
+
].map((m) => m[1]);
|
|
36
39
|
for (const name of new Set(explicitNames)) {
|
|
37
40
|
const userId = await resolveUserByName(name, linearService);
|
|
38
41
|
if (userId) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enrichlayer/el-linear",
|
|
3
|
-
"version": "1.32.
|
|
3
|
+
"version": "1.32.1",
|
|
4
4
|
"description": "A pragmatic CLI for Linear.app — deterministic team/label/member resolution, structured issue validation, configurable term enforcement, and a GraphQL escape hatch.",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"types": "dist/main.d.ts",
|