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 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
- if (responseData.errors) {
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,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CACV,8CAA8C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CACpF,CAAC;YACF,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,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-cli-gh-issue-preparator",
3
- "version": "1.24.0",
3
+ "version": "1.24.1",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -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
- if (responseData.errors) {
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