Merge pull request #1445 from acelaya-forks/feature/js-sdk-2.0

Update to JS SDK 2.0 and shlink-web-component 0.13
This commit is contained in:
Alejandro Celaya 2025-02-11 08:43:16 +01:00 committed by GitHub
commit c85917e378
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 47 additions and 37 deletions

View File

@ -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*

55
package-lock.json generated
View File

@ -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": {

View File

@ -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",

View File

@ -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';

View File

@ -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<HttpClient>({ 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,
},
}));
});
});