npm-cli-gh-issue-preparator 1.24.0 → 1.24.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/CHANGELOG.md +8 -0
- package/bin/adapter/repositories/GraphqlProjectRepository.js +3 -3
- package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
- package/package.json +1 -1
- package/src/adapter/repositories/GraphqlProjectRepository.test.ts +64 -0
- package/src/adapter/repositories/GraphqlProjectRepository.ts +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [1.24.1](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.24.0...v1.24.1) (2026-03-12)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **core:** add console.warn assertions to partial error tests ([c9a287b](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/c9a287b4becfc0729046d712bd185ea30f0b2517))
|
|
7
|
+
* **core:** handle partial GraphQL errors when fetching project README ([bf0bf5d](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/commit/bf0bf5d0ede30135a9ced2ba81b06b54a0a71a1e))
|
|
8
|
+
|
|
1
9
|
# [1.24.0](https://github.com/HiromiShikata/npm-cli-gh-issue-preparator/compare/v1.23.0...v1.24.0) (2026-03-10)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -55,12 +55,12 @@ class GraphqlProjectRepository {
|
|
|
55
55
|
if (!isProjectV2ReadmeResponse(responseData)) {
|
|
56
56
|
return null;
|
|
57
57
|
}
|
|
58
|
-
|
|
58
|
+
const projectData = responseData.data?.organization?.projectV2 ||
|
|
59
|
+
responseData.data?.user?.projectV2;
|
|
60
|
+
if (responseData.errors && !projectData) {
|
|
59
61
|
console.warn(`GraphQL errors in project README response: ${JSON.stringify(responseData.errors)}`);
|
|
60
62
|
return null;
|
|
61
63
|
}
|
|
62
|
-
const projectData = responseData.data?.organization?.projectV2 ||
|
|
63
|
-
responseData.data?.user?.projectV2;
|
|
64
64
|
return projectData?.readme ?? null;
|
|
65
65
|
}
|
|
66
66
|
parseProjectUrl(projectUrl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphqlProjectRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/GraphqlProjectRepository.ts"],"names":[],"mappings":";;;AAgBA,MAAM,yBAAyB,GAAG,CAChC,KAAc,EACoB,EAAE;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IACE,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,IAAI,KAAK,IAAI;QACnB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAE9B,OAAO,KAAK,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAa,wBAAwB;IACnC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAElE,MAAM,KAAK,GAAG;;;;;;;;;;;;;KAab,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gCAAgC,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACrC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE;oBACT,KAAK;oBACL,MAAM,EAAE,aAAa;iBACtB;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"GraphqlProjectRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/GraphqlProjectRepository.ts"],"names":[],"mappings":";;;AAgBA,MAAM,yBAAyB,GAAG,CAChC,KAAc,EACoB,EAAE;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IACE,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,KAAK,CAAC,IAAI,KAAK,IAAI;QACnB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAE9B,OAAO,KAAK,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAa,wBAAwB;IACnC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAElE,MAAM,KAAK,GAAG;;;;;;;;;;;;;KAab,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gCAAgC,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACrC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE;oBACT,KAAK;oBACL,MAAM,EAAE,aAAa;iBACtB;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GACf,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS;YAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;QAErC,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CACV,8CAA8C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CACpF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;IACrC,CAAC;IAEO,eAAe,CAAC,UAAkB;QAIxC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAC/B,uDAAuD,CACxD,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClB,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACzC,CAAC;IACJ,CAAC;CACF;AA3ED,4DA2EC"}
|
package/package.json
CHANGED
|
@@ -228,6 +228,70 @@ describe('GraphqlProjectRepository', () => {
|
|
|
228
228
|
consoleWarnSpy.mockRestore();
|
|
229
229
|
});
|
|
230
230
|
|
|
231
|
+
it('should return readme when organization succeeds but user query returns NOT_FOUND error', async () => {
|
|
232
|
+
const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation();
|
|
233
|
+
mockFetchResponse({
|
|
234
|
+
ok: true,
|
|
235
|
+
json: () =>
|
|
236
|
+
Promise.resolve({
|
|
237
|
+
data: {
|
|
238
|
+
organization: {
|
|
239
|
+
projectV2: {
|
|
240
|
+
readme: '# Org Project README',
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
user: null,
|
|
244
|
+
},
|
|
245
|
+
errors: [
|
|
246
|
+
{
|
|
247
|
+
message:
|
|
248
|
+
"Could not resolve to a User with the login of 'my-org'.",
|
|
249
|
+
},
|
|
250
|
+
],
|
|
251
|
+
}),
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
const result = await repository.fetchReadme(
|
|
255
|
+
'https://github.com/orgs/my-org/projects/42',
|
|
256
|
+
);
|
|
257
|
+
|
|
258
|
+
expect(result).toBe('# Org Project README');
|
|
259
|
+
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
|
260
|
+
consoleWarnSpy.mockRestore();
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it('should return readme when user succeeds but organization query returns NOT_FOUND error', async () => {
|
|
264
|
+
const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation();
|
|
265
|
+
mockFetchResponse({
|
|
266
|
+
ok: true,
|
|
267
|
+
json: () =>
|
|
268
|
+
Promise.resolve({
|
|
269
|
+
data: {
|
|
270
|
+
organization: null,
|
|
271
|
+
user: {
|
|
272
|
+
projectV2: {
|
|
273
|
+
readme: '# User Project README',
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
errors: [
|
|
278
|
+
{
|
|
279
|
+
message:
|
|
280
|
+
"Could not resolve to a Organization with the login of 'my-user'.",
|
|
281
|
+
},
|
|
282
|
+
],
|
|
283
|
+
}),
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
const result = await repository.fetchReadme(
|
|
287
|
+
'https://github.com/users/my-user/projects/10',
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
expect(result).toBe('# User Project README');
|
|
291
|
+
expect(consoleWarnSpy).not.toHaveBeenCalled();
|
|
292
|
+
consoleWarnSpy.mockRestore();
|
|
293
|
+
});
|
|
294
|
+
|
|
231
295
|
it('should return null when no project data exists', async () => {
|
|
232
296
|
mockFetchResponse({
|
|
233
297
|
ok: true,
|
|
@@ -75,17 +75,17 @@ export class GraphqlProjectRepository {
|
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
const projectData =
|
|
79
|
+
responseData.data?.organization?.projectV2 ||
|
|
80
|
+
responseData.data?.user?.projectV2;
|
|
81
|
+
|
|
82
|
+
if (responseData.errors && !projectData) {
|
|
79
83
|
console.warn(
|
|
80
84
|
`GraphQL errors in project README response: ${JSON.stringify(responseData.errors)}`,
|
|
81
85
|
);
|
|
82
86
|
return null;
|
|
83
87
|
}
|
|
84
88
|
|
|
85
|
-
const projectData =
|
|
86
|
-
responseData.data?.organization?.projectV2 ||
|
|
87
|
-
responseData.data?.user?.projectV2;
|
|
88
|
-
|
|
89
89
|
return projectData?.readme ?? null;
|
|
90
90
|
}
|
|
91
91
|
|