github-issue-tower-defence-management 1.148.0 → 1.148.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/CHANGELOG.md +14 -0
- package/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js +12 -4
- package/bin/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.test.ts +130 -1
- package/src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts +21 -7
- package/types/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.148.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.148.1...v1.148.2) (2026-08-09)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **story:** select the longest prefix-matching title as the story issue ([#1471](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1471)) ([52a77dc](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/52a77dca3d58b83a1274d3e95fd8a2820692b59e))
|
|
7
|
+
|
|
8
|
+
## [1.148.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.148.0...v1.148.1) (2026-08-09)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **story:** place the story view link on icebox story issues too ([#1469](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1469)) ([695a294](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/695a29417491ba7958df6686b77801d3871d3376))
|
|
14
|
+
|
|
1
15
|
# [1.148.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.147.5...v1.148.0) (2026-08-09)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -12,7 +12,11 @@ class ConvertCheckboxToIssueInStoryIssueUseCase {
|
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
for (const storyOption of input.project.story?.stories || []) {
|
|
15
|
-
const storyIssue = input.issues
|
|
15
|
+
const storyIssue = input.issues
|
|
16
|
+
.filter((issue) => storyOption.name.startsWith(issue.title))
|
|
17
|
+
.reduce((longest, issue) => longest === null || issue.title.length > longest.title.length
|
|
18
|
+
? issue
|
|
19
|
+
: longest, null);
|
|
16
20
|
const storyObject = input.storyObjectMap.get(storyOption.name);
|
|
17
21
|
if (storyOption.name.startsWith('regular / ')) {
|
|
18
22
|
continue;
|
|
@@ -20,8 +24,12 @@ class ConvertCheckboxToIssueInStoryIssueUseCase {
|
|
|
20
24
|
else if (!storyIssue || !storyObject) {
|
|
21
25
|
throw new Error(`Story issue not found: ${storyOption.name}`);
|
|
22
26
|
}
|
|
23
|
-
else if (storyIssue.isClosed
|
|
24
|
-
|
|
27
|
+
else if (storyIssue.isClosed) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const iced = storyIssue.status === WorkflowStatus_1.ICEBOX_STATUS_NAME;
|
|
31
|
+
if (iced &&
|
|
32
|
+
this.bodyWithStoryViewLinkOnFirstLine(storyIssue.body, input.urlOfStoryView, storyOption.name) === storyIssue.body) {
|
|
25
33
|
continue;
|
|
26
34
|
}
|
|
27
35
|
const freshStoryIssue = await this.issueRepository.getIssueByUrl(storyIssue.url);
|
|
@@ -36,7 +44,7 @@ class ConvertCheckboxToIssueInStoryIssueUseCase {
|
|
|
36
44
|
body: newBody,
|
|
37
45
|
});
|
|
38
46
|
}
|
|
39
|
-
if (!input.createTaskFromStoryBodyCheckboxEnabled) {
|
|
47
|
+
if (iced || !input.createTaskFromStoryBodyCheckboxEnabled) {
|
|
40
48
|
continue;
|
|
41
49
|
}
|
|
42
50
|
if (!newBody.includes('- [ ] ')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvertCheckboxToIssueInStoryIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts"],"names":[],"mappings":";;;AAIA,mCAAuC;AACvC,+DAAgE;AAGhE,MAAa,yCAAyC;IACpD,YACW,eAOR;QAPQ,oBAAe,GAAf,eAAe,CAOvB;QAGH,QAAG,GAAG,KAAK,EAAE,KAQZ,EAAiB,EAAE;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ConvertCheckboxToIssueInStoryIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -336,7 +336,7 @@ describe('ConvertCheckboxToIssueInStoryIssueUseCase', () => {
|
|
|
336
336
|
},
|
|
337
337
|
|
|
338
338
|
{
|
|
339
|
-
name: 'should skip closed story issues
|
|
339
|
+
name: 'should skip closed story issues and only place the story view link on icebox story issues',
|
|
340
340
|
input: {
|
|
341
341
|
project: basicProject,
|
|
342
342
|
issues: [
|
|
@@ -357,6 +357,135 @@ describe('ConvertCheckboxToIssueInStoryIssueUseCase', () => {
|
|
|
357
357
|
createTaskFromStoryBodyCheckboxEnabled: true,
|
|
358
358
|
},
|
|
359
359
|
expectedCreateNewIssueCalls: [],
|
|
360
|
+
expectedUpdateIssueCalls: [
|
|
361
|
+
[
|
|
362
|
+
{
|
|
363
|
+
...basicStoryIssue2,
|
|
364
|
+
status: 'Icebox',
|
|
365
|
+
body: `https://example.com?sliceBy%5Bvalue%5D=Story%202
|
|
366
|
+
|
|
367
|
+
- [ ] Task 3
|
|
368
|
+
- [ ] Task 4`,
|
|
369
|
+
},
|
|
370
|
+
],
|
|
371
|
+
],
|
|
372
|
+
expectedUpdateStoryCalls: [],
|
|
373
|
+
expectedGetIssueByUrlCalls: [
|
|
374
|
+
['https://github.com/org/repo/issues/456'],
|
|
375
|
+
],
|
|
376
|
+
expectedAddIssueToProjectCalls: [],
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
name: 'should choose the longest prefix-matching title when several issues prefix-match one story option',
|
|
380
|
+
input: {
|
|
381
|
+
project: singleStoryProject,
|
|
382
|
+
issues: [
|
|
383
|
+
{
|
|
384
|
+
...basicStoryIssue1,
|
|
385
|
+
title: 'Story',
|
|
386
|
+
number: 900,
|
|
387
|
+
url: 'https://github.com/org/repo/issues/900',
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
...basicStoryIssue1,
|
|
391
|
+
title: 'Story 1',
|
|
392
|
+
number: 901,
|
|
393
|
+
url: 'https://github.com/org/repo/issues/901',
|
|
394
|
+
},
|
|
395
|
+
],
|
|
396
|
+
cacheUsed: false,
|
|
397
|
+
urlOfStoryView: 'https://example.com',
|
|
398
|
+
storyObjectMap: singleStoryObjectMap,
|
|
399
|
+
manager: 'manager',
|
|
400
|
+
createTaskFromStoryBodyCheckboxEnabled: false,
|
|
401
|
+
},
|
|
402
|
+
expectedCreateNewIssueCalls: [],
|
|
403
|
+
expectedUpdateIssueCalls: [
|
|
404
|
+
[
|
|
405
|
+
{
|
|
406
|
+
...basicStoryIssue1,
|
|
407
|
+
title: 'Story 1',
|
|
408
|
+
number: 901,
|
|
409
|
+
url: 'https://github.com/org/repo/issues/901',
|
|
410
|
+
body: `https://example.com?sliceBy%5Bvalue%5D=Story%201
|
|
411
|
+
|
|
412
|
+
- [ ] Task 1
|
|
413
|
+
- [ ] Task 2`,
|
|
414
|
+
},
|
|
415
|
+
],
|
|
416
|
+
],
|
|
417
|
+
expectedUpdateStoryCalls: [],
|
|
418
|
+
expectedGetIssueByUrlCalls: [
|
|
419
|
+
['https://github.com/org/repo/issues/901'],
|
|
420
|
+
],
|
|
421
|
+
expectedAddIssueToProjectCalls: [],
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
name: 'should choose the longest prefix-matching title regardless of the order the issues arrive in',
|
|
425
|
+
input: {
|
|
426
|
+
project: singleStoryProject,
|
|
427
|
+
issues: [
|
|
428
|
+
{
|
|
429
|
+
...basicStoryIssue1,
|
|
430
|
+
title: 'Story 1',
|
|
431
|
+
number: 901,
|
|
432
|
+
url: 'https://github.com/org/repo/issues/901',
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
...basicStoryIssue1,
|
|
436
|
+
title: 'Story',
|
|
437
|
+
number: 900,
|
|
438
|
+
url: 'https://github.com/org/repo/issues/900',
|
|
439
|
+
},
|
|
440
|
+
],
|
|
441
|
+
cacheUsed: false,
|
|
442
|
+
urlOfStoryView: 'https://example.com',
|
|
443
|
+
storyObjectMap: singleStoryObjectMap,
|
|
444
|
+
manager: 'manager',
|
|
445
|
+
createTaskFromStoryBodyCheckboxEnabled: false,
|
|
446
|
+
},
|
|
447
|
+
expectedCreateNewIssueCalls: [],
|
|
448
|
+
expectedUpdateIssueCalls: [
|
|
449
|
+
[
|
|
450
|
+
{
|
|
451
|
+
...basicStoryIssue1,
|
|
452
|
+
title: 'Story 1',
|
|
453
|
+
number: 901,
|
|
454
|
+
url: 'https://github.com/org/repo/issues/901',
|
|
455
|
+
body: `https://example.com?sliceBy%5Bvalue%5D=Story%201
|
|
456
|
+
|
|
457
|
+
- [ ] Task 1
|
|
458
|
+
- [ ] Task 2`,
|
|
459
|
+
},
|
|
460
|
+
],
|
|
461
|
+
],
|
|
462
|
+
expectedUpdateStoryCalls: [],
|
|
463
|
+
expectedGetIssueByUrlCalls: [
|
|
464
|
+
['https://github.com/org/repo/issues/901'],
|
|
465
|
+
],
|
|
466
|
+
expectedAddIssueToProjectCalls: [],
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
name: 'should consolidate a stale story view link on an icebox story issue without reading it when the link is already correct',
|
|
470
|
+
input: {
|
|
471
|
+
project: singleStoryProject,
|
|
472
|
+
issues: [
|
|
473
|
+
{
|
|
474
|
+
...basicStoryIssue1,
|
|
475
|
+
status: 'Icebox',
|
|
476
|
+
body: `https://example.com?sliceBy%5Bvalue%5D=Story%201
|
|
477
|
+
|
|
478
|
+
- [ ] Task 1
|
|
479
|
+
- [ ] Task 2`,
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
cacheUsed: false,
|
|
483
|
+
urlOfStoryView: 'https://example.com',
|
|
484
|
+
storyObjectMap: singleStoryObjectMap,
|
|
485
|
+
manager: 'manager',
|
|
486
|
+
createTaskFromStoryBodyCheckboxEnabled: true,
|
|
487
|
+
},
|
|
488
|
+
expectedCreateNewIssueCalls: [],
|
|
360
489
|
expectedUpdateIssueCalls: [],
|
|
361
490
|
expectedUpdateStoryCalls: [],
|
|
362
491
|
expectedGetIssueByUrlCalls: [],
|
|
@@ -33,17 +33,31 @@ export class ConvertCheckboxToIssueInStoryIssueUseCase {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
for (const storyOption of input.project.story?.stories || []) {
|
|
36
|
-
const storyIssue = input.issues
|
|
37
|
-
storyOption.name.startsWith(issue.title)
|
|
38
|
-
|
|
36
|
+
const storyIssue = input.issues
|
|
37
|
+
.filter((issue) => storyOption.name.startsWith(issue.title))
|
|
38
|
+
.reduce<Issue | null>(
|
|
39
|
+
(longest, issue) =>
|
|
40
|
+
longest === null || issue.title.length > longest.title.length
|
|
41
|
+
? issue
|
|
42
|
+
: longest,
|
|
43
|
+
null,
|
|
44
|
+
);
|
|
39
45
|
const storyObject = input.storyObjectMap.get(storyOption.name);
|
|
40
46
|
if (storyOption.name.startsWith('regular / ')) {
|
|
41
47
|
continue;
|
|
42
48
|
} else if (!storyIssue || !storyObject) {
|
|
43
49
|
throw new Error(`Story issue not found: ${storyOption.name}`);
|
|
44
|
-
} else if (
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
} else if (storyIssue.isClosed) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const iced = storyIssue.status === ICEBOX_STATUS_NAME;
|
|
54
|
+
if (
|
|
55
|
+
iced &&
|
|
56
|
+
this.bodyWithStoryViewLinkOnFirstLine(
|
|
57
|
+
storyIssue.body,
|
|
58
|
+
input.urlOfStoryView,
|
|
59
|
+
storyOption.name,
|
|
60
|
+
) === storyIssue.body
|
|
47
61
|
) {
|
|
48
62
|
continue;
|
|
49
63
|
}
|
|
@@ -67,7 +81,7 @@ export class ConvertCheckboxToIssueInStoryIssueUseCase {
|
|
|
67
81
|
body: newBody,
|
|
68
82
|
});
|
|
69
83
|
}
|
|
70
|
-
if (!input.createTaskFromStoryBodyCheckboxEnabled) {
|
|
84
|
+
if (iced || !input.createTaskFromStoryBodyCheckboxEnabled) {
|
|
71
85
|
continue;
|
|
72
86
|
}
|
|
73
87
|
if (!newBody.includes('- [ ] ')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvertCheckboxToIssueInStoryIssueUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,yCAAyC;IAElD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,eAAe,GACf,mBAAmB,CACtB;gBAPQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,eAAe,GACf,mBAAmB,CACtB;IAGH,GAAG,GAAU,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,sCAAsC,EAAE,OAAO,CAAC;KACjD,KAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ConvertCheckboxToIssueInStoryIssueUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/ConvertCheckboxToIssueInStoryIssueUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,qBAAa,yCAAyC;IAElD,QAAQ,CAAC,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,eAAe,GACf,mBAAmB,CACtB;gBAPQ,eAAe,EAAE,IAAI,CAC5B,eAAe,EACb,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,eAAe,GACf,mBAAmB,CACtB;IAGH,GAAG,GAAU,OAAO;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,cAAc,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,sCAAsC,EAAE,OAAO,CAAC;KACjD,KAAG,OAAO,CAAC,IAAI,CAAC,CAqGf;IACF,gCAAgC,GAC9B,MAAM,MAAM,EACZ,gBAAgB,MAAM,EACtB,WAAW,MAAM,KAChB,MAAM,CA8BP;IACF,kBAAkB,GAAI,gBAAgB,MAAM,EAAE,WAAW,MAAM,KAAG,MAAM,CAEtE;IACF,yBAAyB,GACvB,gBAAgB,MAAM,EACtB,WAAW,MAAM,KAChB,MAAM,CAQP;IACF,gCAAgC,GAAI,gBAAgB,MAAM,KAAG,MAAM,EAAE,CAcnE;CACH"}
|