diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eb42db34..81e681c73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed * Update to `react-router` 7.0 * Update to `@shlinkio/shlink-frontend-kit` 0.7.0 -* Update to `@shlinkio/shlink-web-component` 0.12.0 +* Update to `@shlinkio/shlink-web-component` 0.13.0 +* Update to `@shlinkio/shlink-js-sdk` 2.0.0 ### Deprecated * *Nothing* diff --git a/package-lock.json b/package-lock.json index d1bf91075..c0b1b86bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,8 +17,8 @@ "@reduxjs/toolkit": "^2.5.1", "@shlinkio/data-manipulation": "^1.0.3", "@shlinkio/shlink-frontend-kit": "^0.7.2", - "@shlinkio/shlink-js-sdk": "^1.4.0", - "@shlinkio/shlink-web-component": "^0.12.1", + "@shlinkio/shlink-js-sdk": "^2.0.0", + "@shlinkio/shlink-web-component": "^0.13.0", "bootstrap": "5.2.3", "bottlejs": "^2.0.1", "clsx": "^2.1.1", @@ -2378,9 +2378,10 @@ } }, "node_modules/@formkit/drag-and-drop": { - "version": "0.0.38", - "resolved": "https://registry.npmjs.org/@formkit/drag-and-drop/-/drag-and-drop-0.0.38.tgz", - "integrity": "sha512-3uJFcqz1xL7x/5pClDnyqEDfyFRDFH+75MFpJYXnVF17oekxLrwbUaOBN7ttKGn1jW2MdojRw4WMnSN1iLryvw==" + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@formkit/drag-and-drop/-/drag-and-drop-0.3.3.tgz", + "integrity": "sha512-/2o1ud4o6aw+du8KZcLwS3pKlGkwFLnVIIIcC/YI12XJ3J9Z5E1mpKz9thodzklNI9njUk54iyk7jZK2cE55Nw==", + "license": "MIT" }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.7.2", @@ -3431,18 +3432,18 @@ } }, "node_modules/@shlinkio/shlink-js-sdk": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@shlinkio/shlink-js-sdk/-/shlink-js-sdk-1.4.0.tgz", - "integrity": "sha512-hX/SOkKUkhx9Uo6BbbkJiyef8qvVcdQFbbDkzGlU7k8HeRzovldo1kH1E5nMcUaN6ZXjYguqoxJ1uxh3hKnZBg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@shlinkio/shlink-js-sdk/-/shlink-js-sdk-2.0.0.tgz", + "integrity": "sha512-+HOZlMTPe0EKE9uNlXe2EuAoQK3EmHUv0zvkN9oZvVkBCXR5FLfDKSab74xj9SJ6qgrd0JDvpxBVmFPKWoiNPg==", "license": "MIT" }, "node_modules/@shlinkio/shlink-web-component": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.12.1.tgz", - "integrity": "sha512-FOqPoSjogNLaX9zNScxKBSjb5tW21yCOhFij5n4coUgDnL+9aPgTqzSCZkyIfOZ0A1UuUnulmpIgvg48n5gC4g==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.13.0.tgz", + "integrity": "sha512-Inm4Phq4e7huwMzJE1P5P7HF6FFchtOyUNlOAYF7TnUy1geKgrfni8tB0U3Vb58AAT9aqn3fczbFhhZyIeZPMA==", "license": "MIT", "dependencies": { - "@formkit/drag-and-drop": "^0.0.38", + "@formkit/drag-and-drop": "^0.3.3", "@json2csv/plainjs": "^7.0.6", "@shlinkio/data-manipulation": "^1.0.3", "bottlejs": "^2.0.1", @@ -3456,7 +3457,7 @@ "react-leaflet": "^4.2.1", "react-swipeable": "^7.0.2", "react-tag-autocomplete": "^7.4.0", - "recharts": "^2.15.0" + "recharts": "^2.15.1" }, "peerDependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.2", @@ -3465,12 +3466,12 @@ "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.2", "@reduxjs/toolkit": "^2.5.0", - "@shlinkio/shlink-frontend-kit": "^0.7.1", - "@shlinkio/shlink-js-sdk": "^1.3.0", + "@shlinkio/shlink-frontend-kit": "^0.7.2", + "@shlinkio/shlink-js-sdk": "^2.0.0", "react": "^18.3 || ^19.0", "react-dom": "^18.3 || ^19.0", "react-redux": "^9.2.0", - "react-router": "^7.1.1", + "react-router": "^7.1.5", "reactstrap": "^9.2.0" }, "peerDependenciesMeta": { @@ -13951,9 +13952,9 @@ } }, "@formkit/drag-and-drop": { - "version": "0.0.38", - "resolved": "https://registry.npmjs.org/@formkit/drag-and-drop/-/drag-and-drop-0.0.38.tgz", - "integrity": "sha512-3uJFcqz1xL7x/5pClDnyqEDfyFRDFH+75MFpJYXnVF17oekxLrwbUaOBN7ttKGn1jW2MdojRw4WMnSN1iLryvw==" + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@formkit/drag-and-drop/-/drag-and-drop-0.3.3.tgz", + "integrity": "sha512-/2o1ud4o6aw+du8KZcLwS3pKlGkwFLnVIIIcC/YI12XJ3J9Z5E1mpKz9thodzklNI9njUk54iyk7jZK2cE55Nw==" }, "@fortawesome/fontawesome-common-types": { "version": "6.7.2", @@ -14526,16 +14527,16 @@ } }, "@shlinkio/shlink-js-sdk": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@shlinkio/shlink-js-sdk/-/shlink-js-sdk-1.4.0.tgz", - "integrity": "sha512-hX/SOkKUkhx9Uo6BbbkJiyef8qvVcdQFbbDkzGlU7k8HeRzovldo1kH1E5nMcUaN6ZXjYguqoxJ1uxh3hKnZBg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@shlinkio/shlink-js-sdk/-/shlink-js-sdk-2.0.0.tgz", + "integrity": "sha512-+HOZlMTPe0EKE9uNlXe2EuAoQK3EmHUv0zvkN9oZvVkBCXR5FLfDKSab74xj9SJ6qgrd0JDvpxBVmFPKWoiNPg==" }, "@shlinkio/shlink-web-component": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.12.1.tgz", - "integrity": "sha512-FOqPoSjogNLaX9zNScxKBSjb5tW21yCOhFij5n4coUgDnL+9aPgTqzSCZkyIfOZ0A1UuUnulmpIgvg48n5gC4g==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@shlinkio/shlink-web-component/-/shlink-web-component-0.13.0.tgz", + "integrity": "sha512-Inm4Phq4e7huwMzJE1P5P7HF6FFchtOyUNlOAYF7TnUy1geKgrfni8tB0U3Vb58AAT9aqn3fczbFhhZyIeZPMA==", "requires": { - "@formkit/drag-and-drop": "^0.0.38", + "@formkit/drag-and-drop": "^0.3.3", "@json2csv/plainjs": "^7.0.6", "@shlinkio/data-manipulation": "^1.0.3", "bottlejs": "^2.0.1", @@ -14549,7 +14550,7 @@ "react-leaflet": "^4.2.1", "react-swipeable": "^7.0.2", "react-tag-autocomplete": "^7.4.0", - "recharts": "^2.15.0" + "recharts": "^2.15.1" } }, "@shlinkio/stylelint-config-css-coding-standard": { diff --git a/package.json b/package.json index 48a032a2d..327e2a159 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ "@reduxjs/toolkit": "^2.5.1", "@shlinkio/data-manipulation": "^1.0.3", "@shlinkio/shlink-frontend-kit": "^0.7.2", - "@shlinkio/shlink-js-sdk": "^1.4.0", - "@shlinkio/shlink-web-component": "^0.12.1", + "@shlinkio/shlink-js-sdk": "^2.0.0", + "@shlinkio/shlink-web-component": "^0.13.0", "bootstrap": "5.2.3", "bottlejs": "^2.0.1", "clsx": "^2.1.1", diff --git a/src/common/services/provideServices.ts b/src/common/services/provideServices.ts index cf233f8d7..003a7dc9d 100644 --- a/src/common/services/provideServices.ts +++ b/src/common/services/provideServices.ts @@ -1,4 +1,4 @@ -import { FetchHttpClient } from '@shlinkio/shlink-js-sdk/browser'; +import { FetchHttpClient } from '@shlinkio/shlink-js-sdk/fetch'; import { ShlinkWebComponent } from '@shlinkio/shlink-web-component'; import type Bottle from 'bottlejs'; import type { ConnectDecorator } from '../../container/types'; diff --git a/test/api/services/ShlinkApiClientBuilder.test.ts b/test/api/services/ShlinkApiClientBuilder.test.ts index a970e698d..591c112d2 100644 --- a/test/api/services/ShlinkApiClientBuilder.test.ts +++ b/test/api/services/ShlinkApiClientBuilder.test.ts @@ -1,3 +1,4 @@ +import type { HttpClient } from '@shlinkio/shlink-js-sdk'; import { fromPartial } from '@total-typescript/shoehorn'; import { buildShlinkApiClient } from '../../../src/api/services/ShlinkApiClientBuilder'; import type { ReachableServer, SelectedServer } from '../../../src/servers/data'; @@ -34,12 +35,19 @@ describe('ShlinkApiClientBuilder', () => { expect(secondApiClient === thirdApiClient).toEqual(true); }); - it('does not fetch from state when provided param is already selected server', () => { - const url = 'url'; - const apiKey = 'apiKey'; - const apiClient = buildShlinkApiClient(fromPartial({}))(server({ url, apiKey })); + it.only('does not fetch from state when provided param is already selected server', async () => { + const url = 'the_url'; + const apiKey = 'the_api_key'; + const jsonRequest = vi.fn(); + const httpClient = fromPartial({ jsonRequest }); + const apiClient = buildShlinkApiClient(httpClient)(server({ url, apiKey })); - expect(apiClient['serverInfo'].baseUrl).toEqual(url); - expect(apiClient['serverInfo'].apiKey).toEqual(apiKey); + await apiClient.health(); + + expect(jsonRequest).toHaveBeenCalledWith(expect.stringMatching(new RegExp(`^${url}`)), expect.objectContaining({ + headers: { + 'X-Api-Key': apiKey, + }, + })); }); });