From 95a6ba6346edebd2fa5a13ebaa0b0ca833564d64 Mon Sep 17 00:00:00 2001 From: Lennert Claeys Date: Fri, 12 Jul 2024 11:50:29 +0200 Subject: [PATCH 1/2] Support fetchall where 2nd request contains more sideloaded subjects --- src/utils/__tests__/request.test.ts | 21 ++++++++++++++++++--- src/utils/request.ts | 8 +++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/utils/__tests__/request.test.ts b/src/utils/__tests__/request.test.ts index 8e83bfc..1595c73 100644 --- a/src/utils/__tests__/request.test.ts +++ b/src/utils/__tests__/request.test.ts @@ -102,6 +102,20 @@ describe('fetch response handling', () => { const headers = { 'content-type': 'application/json' }; fetchMock + .once( + JSON.stringify({ + data: [{ name: 'Jane', last_name: 'Doe' }], + included: {}, + meta: { + page: { + size: 1, + number: 1, + }, + matches: 4, + }, + }), + { headers }, + ) .once( JSON.stringify({ data: [{ name: 'John', last_name: 'Doe' }], @@ -111,7 +125,7 @@ describe('fetch response handling', () => { size: 1, number: 1, }, - matches: 3, + matches: 4, }, }), { headers }, @@ -125,7 +139,7 @@ describe('fetch response handling', () => { size: 1, number: 2, }, - matches: 3, + matches: 4, }, }), { headers }, @@ -139,7 +153,7 @@ describe('fetch response handling', () => { size: 1, number: 3, }, - matches: 3, + matches: 4, }, }), { headers }, @@ -153,6 +167,7 @@ describe('fetch response handling', () => { expect(jsonResponse).toEqual({ data: [ + { name: 'Jane', lastName: 'Doe' }, { name: 'John', lastName: 'Doe' }, { name: 'Alex', lastName: 'Turner' }, { name: 'William', lastName: 'Hurt' }, diff --git a/src/utils/request.ts b/src/utils/request.ts index 5a9a484..451dd29 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -54,7 +54,13 @@ const request = async ({ included: mergeWith( firstRequestData.included, ...parallelRequestData.map(({ included }) => included), - (objValue: unknown[], srcValue: unknown[]) => objValue.concat(srcValue), + (objValue: unknown[] | undefined, srcValue: unknown[]) => { + if (!objValue) { + return srcValue; + } + + return objValue.concat(srcValue); + }, ), }, responsePlugins, From a473d0c561163f7d5452fbbede3321af5879447a Mon Sep 17 00:00:00 2001 From: Lennert Claeys Date: Fri, 12 Jul 2024 11:54:13 +0200 Subject: [PATCH 2/2] Update changelog --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 121cae7..1ea306c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,12 @@ ### Fixed +## [6.1.1] - 2024-07-12 + +### Fixed + +- Fix crash when using `fetchAll` and first request contains less sideloaded data than subsequent requests ([@lorgan3](https://github.com/lorgan3) in [#350](https://github.com/teamleadercrm/sdk-js/pull/350)) + ## [6.1.0] - 2023-05-10 ### Added diff --git a/package.json b/package.json index 14c9b3c..a7fa645 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@teamleader/api", - "version": "6.1.0", + "version": "6.1.1", "description": "Teamleader API SDK", "main": "dist/cjs/main.js", "module": "dist/es/main.js",