From c5170df40292b8e91fd07999c808ac47461d0410 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 8 Jan 2023 06:27:50 +0000 Subject: [PATCH 01/11] Bump json5 from 1.0.1 to 1.0.2 Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd3503cb..aba628d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11548,9 +11548,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -14890,9 +14890,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "peer": true, "dependencies": { @@ -24388,9 +24388,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "4.0.0", @@ -26917,9 +26917,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "peer": true, "requires": { From 487c832f5b5f8c089e6f2701142c2c46eeda67b3 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Tue, 10 Jan 2023 20:04:47 +0100 Subject: [PATCH 02/11] Improved types on element ref objects and their usage --- src/domains/helpers/DomainStatusIcon.tsx | 10 +++++----- src/servers/helpers/ImportServersBtn.tsx | 9 ++++----- src/short-urls/helpers/ShortUrlStatus.tsx | 10 +++++----- src/short-urls/helpers/ShortUrlVisitsCount.tsx | 9 ++++----- src/utils/InfoTooltip.tsx | 10 +++++----- src/utils/helpers/components.ts | 5 ----- src/utils/helpers/hooks.ts | 4 +++- 7 files changed, 26 insertions(+), 31 deletions(-) delete mode 100644 src/utils/helpers/components.ts diff --git a/src/domains/helpers/DomainStatusIcon.tsx b/src/domains/helpers/DomainStatusIcon.tsx index 79fe86ea..7a1e6ded 100644 --- a/src/domains/helpers/DomainStatusIcon.tsx +++ b/src/domains/helpers/DomainStatusIcon.tsx @@ -1,4 +1,4 @@ -import { FC, useEffect, useRef, useState } from 'react'; +import { FC, useEffect, useState } from 'react'; import { UncontrolledTooltip } from 'reactstrap'; import { ExternalLink } from 'react-external-link'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -8,8 +8,8 @@ import { faCircleNotch as loadingStatusIcon, } from '@fortawesome/free-solid-svg-icons'; import { MediaMatcher } from '../../utils/types'; -import { mutableRefToElementRef } from '../../utils/helpers/components'; import { DomainStatus } from '../data'; +import { useElementRef } from '../../utils/helpers/hooks'; interface DomainStatusIconProps { status: DomainStatus; @@ -17,7 +17,7 @@ interface DomainStatusIconProps { } export const DomainStatusIcon: FC = ({ status, matchMedia = window.matchMedia }) => { - const ref = useRef(); + const ref = useElementRef(); const matchesMobile = () => matchMedia('(max-width: 991px)').matches; const [isMobile, setIsMobile] = useState(matchesMobile()); @@ -35,13 +35,13 @@ export const DomainStatusIcon: FC = ({ status, matchMedia return ( <> - + {status === 'valid' ? : } ref.current) as any} + target={ref} placement={isMobile ? 'top-start' : 'left'} autohide={status === 'valid'} > diff --git a/src/servers/helpers/ImportServersBtn.tsx b/src/servers/helpers/ImportServersBtn.tsx index 7df560ac..4ce8502a 100644 --- a/src/servers/helpers/ImportServersBtn.tsx +++ b/src/servers/helpers/ImportServersBtn.tsx @@ -1,10 +1,9 @@ -import { useRef, ChangeEvent, useState, useEffect, FC, PropsWithChildren } from 'react'; +import { ChangeEvent, useState, useEffect, FC, PropsWithChildren } from 'react'; import { Button, UncontrolledTooltip } from 'reactstrap'; import { complement, pipe } from 'ramda'; import { faFileUpload as importIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { useToggle } from '../../utils/helpers/hooks'; -import { mutableRefToElementRef } from '../../utils/helpers/components'; +import { useElementRef, useToggle } from '../../utils/helpers/hooks'; import { ServersImporter } from '../services/ServersImporter'; import { ServerData, ServersMap } from '../data'; import { DuplicatedServersModal } from './DuplicatedServersModal'; @@ -34,7 +33,7 @@ export const ImportServersBtn = ({ importServersFromFile }: ServersImporter): FC tooltipPlacement = 'bottom', className = '', }) => { - const ref = useRef(); + const ref = useElementRef(); const [serversToCreate, setServersToCreate] = useState(); const [duplicatedServers, setDuplicatedServers] = useState([]); const [isModalOpen,, showModal, hideModal] = useToggle(); @@ -79,7 +78,7 @@ export const ImportServersBtn = ({ importServersFromFile }: ServersImporter): FC type="file" accept="text/csv" className="import-servers-btn__csv-select" - ref={mutableRefToElementRef(ref)} + ref={ref} onChange={onFile} /> diff --git a/src/short-urls/helpers/ShortUrlStatus.tsx b/src/short-urls/helpers/ShortUrlStatus.tsx index 7fcc2a6d..0803e658 100644 --- a/src/short-urls/helpers/ShortUrlStatus.tsx +++ b/src/short-urls/helpers/ShortUrlStatus.tsx @@ -1,12 +1,12 @@ -import { FC, ReactNode, useRef } from 'react'; +import { FC, ReactNode } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { IconDefinition } from '@fortawesome/fontawesome-common-types'; import { faLinkSlash, faCalendarXmark, faCheck } from '@fortawesome/free-solid-svg-icons'; import { UncontrolledTooltip } from 'reactstrap'; import { isBefore } from 'date-fns'; -import { mutableRefToElementRef } from '../../utils/helpers/components'; import { ShortUrl } from '../data'; import { formatHumanFriendly, now, parseISO } from '../../utils/helpers/date'; +import { useElementRef } from '../../utils/helpers/hooks'; interface ShortUrlStatusProps { shortUrl: ShortUrl; @@ -70,15 +70,15 @@ const resolveShortUrlStatus = (shortUrl: ShortUrl): StatusResult => { }; export const ShortUrlStatus: FC = ({ shortUrl }) => { - const tooltipRef = useRef(); + const tooltipRef = useElementRef(); const { icon, className, description } = resolveShortUrlStatus(shortUrl); return ( <> - + - tooltipRef.current) as any} placement="bottom"> + {description} diff --git a/src/short-urls/helpers/ShortUrlVisitsCount.tsx b/src/short-urls/helpers/ShortUrlVisitsCount.tsx index dfa0acf3..b73cc595 100644 --- a/src/short-urls/helpers/ShortUrlVisitsCount.tsx +++ b/src/short-urls/helpers/ShortUrlVisitsCount.tsx @@ -1,4 +1,3 @@ -import { useRef } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faInfoCircle as infoIcon } from '@fortawesome/free-solid-svg-icons'; import { UncontrolledTooltip } from 'reactstrap'; @@ -7,8 +6,8 @@ import { prettify } from '../../utils/helpers/numbers'; import { ShortUrl } from '../data'; import { SelectedServer } from '../../servers/data'; import { ShortUrlDetailLink } from './ShortUrlDetailLink'; -import { mutableRefToElementRef } from '../../utils/helpers/components'; import { formatHumanFriendly, parseISO } from '../../utils/helpers/date'; +import { useElementRef } from '../../utils/helpers/hooks'; import './ShortUrlVisitsCount.scss'; interface ShortUrlVisitsCountProps { @@ -37,20 +36,20 @@ export const ShortUrlVisitsCount = ( return visitsLink; } - const tooltipRef = useRef(); + const tooltipRef = useElementRef(); return ( <> {visitsLink} - + {maxVisits && <> / {prettify(maxVisits)}} - tooltipRef.current) as any} placement="bottom"> +
    {maxVisits && (
  • diff --git a/src/utils/InfoTooltip.tsx b/src/utils/InfoTooltip.tsx index 15ecae62..9d2eaa28 100644 --- a/src/utils/InfoTooltip.tsx +++ b/src/utils/InfoTooltip.tsx @@ -1,9 +1,9 @@ -import { FC, PropsWithChildren, useRef } from 'react'; +import { FC, PropsWithChildren } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faInfoCircle as infoIcon } from '@fortawesome/free-solid-svg-icons'; import { UncontrolledTooltip } from 'reactstrap'; import { Placement } from '@popperjs/core'; -import { mutableRefToElementRef } from './helpers/components'; +import { useElementRef } from './helpers/hooks'; export type InfoTooltipProps = PropsWithChildren<{ className?: string; @@ -11,14 +11,14 @@ export type InfoTooltipProps = PropsWithChildren<{ }>; export const InfoTooltip: FC = ({ className = '', placement, children }) => { - const ref = useRef(); + const ref = useElementRef(); return ( <> - + - ref.current) as any} placement={placement}>{children} + {children} ); }; diff --git a/src/utils/helpers/components.ts b/src/utils/helpers/components.ts deleted file mode 100644 index 0abe4bbc..00000000 --- a/src/utils/helpers/components.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { MutableRefObject, Ref } from 'react'; - -export const mutableRefToElementRef = (ref: MutableRefObject): Ref => (el) => { - ref.current = el ?? undefined; // eslint-disable-line no-param-reassign -}; diff --git a/src/utils/helpers/hooks.ts b/src/utils/helpers/hooks.ts index 56406afa..fc596ddb 100644 --- a/src/utils/helpers/hooks.ts +++ b/src/utils/helpers/hooks.ts @@ -1,4 +1,4 @@ -import { useState, useRef, EffectCallback, DependencyList, useEffect } from 'react'; +import { DependencyList, EffectCallback, useEffect, useRef, useState } from 'react'; import { useSwipeable as useReactSwipeable } from 'react-swipeable'; import { useLocation, useNavigate } from 'react-router-dom'; import { v4 as uuid } from 'uuid'; @@ -91,3 +91,5 @@ export const useDomId = (): string => { const { current: id } = useRef(`dom-${uuid()}`); return id; }; + +export const useElementRef = () => useRef(null); From d3a644877e6f63bc360e60f13470b6db76e7e4fa Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Tue, 17 Jan 2023 22:53:49 +0100 Subject: [PATCH 03/11] Replace references to doma.in with s.test --- README.md | 4 ++-- test/short-urls/helpers/CreateShortUrlResult.test.tsx | 6 +++--- test/short-urls/helpers/QrCodeModal.test.tsx | 2 +- test/short-urls/helpers/ShortUrlsRow.test.tsx | 4 ++-- test/short-urls/helpers/ShortUrlsRowMenu.test.tsx | 2 +- test/utils/helpers/uri.test.ts | 2 +- test/visits/ShortUrlVisitsHeader.test.tsx | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 9456314e..11d437ed 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Those servers can be exported and imported in other browsers, but if for some re [ { "name": "Main server", - "url": "https://doma.in", + "url": "https://s.test", "apiKey": "09c972b7-506b-49f1-a19a-d729e22e599c" }, { @@ -85,7 +85,7 @@ If you want to pre-configure a single server, you can provide its config via env docker run \ --name shlink-web-client \ -p 8000:80 \ - -e SHLINK_SERVER_URL=https://doma.in \ + -e SHLINK_SERVER_URL=https://s.test \ -e SHLINK_SERVER_API_KEY=6aeb82c6-e275-4538-a747-31f9abfba63c \ shlinkio/shlink-web-client ``` diff --git a/test/short-urls/helpers/CreateShortUrlResult.test.tsx b/test/short-urls/helpers/CreateShortUrlResult.test.tsx index d9cbba96..404ab833 100644 --- a/test/short-urls/helpers/CreateShortUrlResult.test.tsx +++ b/test/short-urls/helpers/CreateShortUrlResult.test.tsx @@ -28,14 +28,14 @@ describe('', () => { it('renders a result message when result is provided', () => { setUp( - { result: Mock.of({ shortUrl: 'https://doma.in/abc123' }), saving: false, saved: true, error: false }, + { result: Mock.of({ shortUrl: 'https://s.test/abc123' }), saving: false, saved: true, error: false }, ); - expect(screen.getByText(/The short URL is/)).toHaveTextContent('Great! The short URL is https://doma.in/abc123'); + expect(screen.getByText(/The short URL is/)).toHaveTextContent('Great! The short URL is https://s.test/abc123'); }); it('Invokes tooltip timeout when copy to clipboard button is clicked', async () => { const { user } = setUp( - { result: Mock.of({ shortUrl: 'https://doma.in/abc123' }), saving: false, saved: true, error: false }, + { result: Mock.of({ shortUrl: 'https://s.test/abc123' }), saving: false, saved: true, error: false }, ); expect(copyToClipboard).not.toHaveBeenCalled(); diff --git a/test/short-urls/helpers/QrCodeModal.test.tsx b/test/short-urls/helpers/QrCodeModal.test.tsx index b5bacdbe..12bcad54 100644 --- a/test/short-urls/helpers/QrCodeModal.test.tsx +++ b/test/short-urls/helpers/QrCodeModal.test.tsx @@ -10,7 +10,7 @@ import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { const saveImage = jest.fn().mockReturnValue(Promise.resolve()); const QrCodeModal = createQrCodeModal(Mock.of({ saveImage })); - const shortUrl = 'https://doma.in/abc123'; + const shortUrl = 'https://s.test/abc123'; const setUp = (version: SemVer = '2.8.0') => renderWithEvents( ({ describe('', () => { const timeoutToggle = jest.fn(() => true); const useTimeoutToggle = jest.fn(() => [false, timeoutToggle]) as TimeoutToggle; - const server = Mock.of({ url: 'https://doma.in' }); + const server = Mock.of({ url: 'https://s.test' }); const shortUrl: ShortUrl = { shortCode: 'abc123', - shortUrl: 'https://doma.in/abc123', + shortUrl: 'https://s.test/abc123', longUrl: 'https://foo.com/bar', dateCreated: formatISO(parseDate('2018-05-23 18:30:41', 'yyyy-MM-dd HH:mm:ss')), tags: [], diff --git a/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx b/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx index 3a996b3c..c0324e50 100644 --- a/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx +++ b/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx @@ -11,7 +11,7 @@ describe('', () => { const selectedServer = Mock.of({ id: 'abc123' }); const shortUrl = Mock.of({ shortCode: 'abc123', - shortUrl: 'https://doma.in/abc123', + shortUrl: 'https://s.test/abc123', }); const setUp = () => renderWithEvents( diff --git a/test/utils/helpers/uri.test.ts b/test/utils/helpers/uri.test.ts index 85302577..00bc9c40 100644 --- a/test/utils/helpers/uri.test.ts +++ b/test/utils/helpers/uri.test.ts @@ -4,7 +4,7 @@ describe('uri-helper', () => { describe('replaceAuthorityFromUri', () => { it.each([ ['http://something.com/foo/bar', 'www.new.to', 'http://www.new.to/foo/bar'], - ['https://www.authori.ty:8000/', 'doma.in', 'https://doma.in/'], + ['https://www.authori.ty:8000/', 's.test', 'https://s.test/'], ['http://localhost:8080/this/is-a-long/path', 'somewhere:8888', 'http://somewhere:8888/this/is-a-long/path'], ])('replaces authority as expected', (uri, newAuthority, expectedResult) => { expect(replaceAuthorityFromUri(uri, newAuthority)).toEqual(expectedResult); diff --git a/test/visits/ShortUrlVisitsHeader.test.tsx b/test/visits/ShortUrlVisitsHeader.test.tsx index 12c8fa80..92b8adcc 100644 --- a/test/visits/ShortUrlVisitsHeader.test.tsx +++ b/test/visits/ShortUrlVisitsHeader.test.tsx @@ -16,7 +16,7 @@ describe('', () => { const setUp = (title?: string | null) => { const shortUrlDetail = Mock.of({ shortUrl: { - shortUrl: 'https://doma.in/abc123', + shortUrl: 'https://s.test/abc123', longUrl, dateCreated, title, From 699d3d3eaa5721b3f1c5c797df97f098ce4e5f65 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 28 Jan 2023 11:18:08 +0100 Subject: [PATCH 04/11] Fix twitter badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 11d437ed..b2af0799 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![GitHub release](https://img.shields.io/github/release/shlinkio/shlink-web-client.svg?style=flat-square)](https://github.com/shlinkio/shlink-web-client/releases/latest) [![Docker pulls](https://img.shields.io/docker/pulls/shlinkio/shlink-web-client.svg?logo=docker&style=flat-square)](https://hub.docker.com/r/shlinkio/shlink-web-client/) [![GitHub license](https://img.shields.io/github/license/shlinkio/shlink-web-client.svg?style=flat-square)](https://github.com/shlinkio/shlink-web-client/blob/main/LICENSE) -[![Twitter](https://img.shields.io/twitter/follow/shlinkio?color=blue&label=follow&logo=twitter&style=flat-square)](https://twitter.com/shlinkio) +[![Twitter](https://img.shields.io/badge/follow-shlinkio-blue.svg?style=flat-square&logo=twitter&color=blue)](https://twitter.com/shlinkio) [![Mastodon](https://img.shields.io/mastodon/follow/109329425426175098?color=%236364ff&domain=https%3A%2F%2Ffosstodon.org&label=follow&logo=mastodon&logoColor=white&style=flat-square)](https://fosstodon.org/@shlinkio) [![Paypal Donate](https://img.shields.io/badge/Donate-paypal-blue.svg?style=flat-square&logo=paypal&colorA=cccccc)](https://slnk.to/donate) From c54fff5472f506c660aa017a208cf0ac343760f8 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 11 Feb 2023 13:16:41 +0100 Subject: [PATCH 05/11] Update to vite 4.1 --- CHANGELOG.md | 17 ++ package-lock.json | 500 +++++++++++++++++++++++----------------------- package.json | 6 +- 3 files changed, 270 insertions(+), 253 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50df8d93..433ac3b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org). +## [Unreleased] +### Added +* *Nothing* + +### Changed +* Updated to Vite 4.1 + +### Deprecated +* *Nothing* + +### Removed +* *Nothing* + +### Fixed +* *Nothing* + + ## [3.9.1] - 2022-12-31 ### Added * *Nothing* diff --git a/package-lock.json b/package-lock.json index aba628d4..d3f3d3b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,7 +74,7 @@ "@types/react-dom": "^18.0.10", "@types/react-tag-autocomplete": "^6.3.0", "@types/uuid": "^8.3.4", - "@vitejs/plugin-react": "^3.0.0", + "@vitejs/plugin-react": "^3.1.0", "adm-zip": "^0.5.10", "babel-jest": "^29.3.1", "chalk": "^5.2.0", @@ -90,8 +90,8 @@ "stylelint": "^14.16.0", "ts-mockery": "^1.2.0", "typescript": "^4.9.4", - "vite": "^4.0.3", - "vite-plugin-pwa": "^0.14.0" + "vite": "^4.1.1", + "vite-plugin-pwa": "^0.14.1" } }, "node_modules/@adobe/css-tools": { @@ -131,24 +131,24 @@ } }, "node_modules/@babel/core": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", - "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", "@babel/helpers": "^7.20.7", "@babel/parser": "^7.20.7", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.12", "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" }, "engines": { @@ -588,9 +588,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1889,9 +1889,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", - "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "dependencies": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", @@ -1899,7 +1899,7 @@ "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", + "@babel/parser": "^7.20.13", "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" @@ -1967,9 +1967,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.10.tgz", - "integrity": "sha512-RmJjQTRrO6VwUWDrzTBLmV4OJZTarYsiepLGlF2rYTVB701hSorPywPGvP6d8HCuuRibyXa5JX4s3jN2kHEtjQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", "cpu": [ "arm" ], @@ -1983,9 +1983,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.10.tgz", - "integrity": "sha512-47Y+NwVKTldTlDhSgJHZ/RpvBQMUDG7eKihqaF/u6g7s0ZPz4J1vy8A3rwnnUOF2CuDn7w7Gj/QcMoWz3U3SJw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", "cpu": [ "arm64" ], @@ -1999,9 +1999,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.10.tgz", - "integrity": "sha512-C4PfnrBMcuAcOurQzpF1tTtZz94IXO5JmICJJ3NFJRHbXXsQUg9RFG45KvydKqtFfBaFLCHpduUkUfXwIvGnRg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", "cpu": [ "x64" ], @@ -2015,9 +2015,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.10.tgz", - "integrity": "sha512-bH/bpFwldyOKdi9HSLCLhhKeVgRYr9KblchwXgY2NeUHBB/BzTUHtUSBgGBmpydB1/4E37m+ggXXfSrnD7/E7g==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "cpu": [ "arm64" ], @@ -2031,9 +2031,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.10.tgz", - "integrity": "sha512-OXt7ijoLuy+AjDSKQWu+KdDFMBbdeaL6wtgMKtDUXKWHiAMKHan5+R1QAG6HD4+K0nnOvEJXKHeA9QhXNAjOTQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "cpu": [ "x64" ], @@ -2047,9 +2047,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.10.tgz", - "integrity": "sha512-shSQX/3GHuspE3Uxtq5kcFG/zqC+VuMnJkqV7LczO41cIe6CQaXHD3QdMLA4ziRq/m0vZo7JdterlgbmgNIAlQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", "cpu": [ "arm64" ], @@ -2063,9 +2063,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.10.tgz", - "integrity": "sha512-5YVc1zdeaJGASijZmTzSO4h6uKzsQGG3pkjI6fuXvolhm3hVRhZwnHJkforaZLmzvNv5Tb7a3QL2FAVmrgySIA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", "cpu": [ "x64" ], @@ -2079,9 +2079,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.10.tgz", - "integrity": "sha512-c360287ZWI2miBnvIj23bPyVctgzeMT2kQKR+x94pVqIN44h3GF8VMEs1SFPH1UgyDr3yBbx3vowDS1SVhyVhA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", "cpu": [ "arm" ], @@ -2095,9 +2095,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.10.tgz", - "integrity": "sha512-2aqeNVxIaRfPcIaMZIFoblLh588sWyCbmj1HHCCs9WmeNWm+EIN0SmvsmPvTa/TsNZFKnxTcvkX2eszTcCqIrA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", "cpu": [ "arm64" ], @@ -2111,9 +2111,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.10.tgz", - "integrity": "sha512-sqMIEWeyrLGU7J5RB5fTkLRIFwsgsQ7ieWXlDLEmC2HblPYGb3AucD7inw2OrKFpRPKsec1l+lssiM3+NV5aOw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", "cpu": [ "ia32" ], @@ -2127,9 +2127,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.10.tgz", - "integrity": "sha512-O7Pd5hLEtTg37NC73pfhUOGTjx/+aXu5YoSq3ahCxcN7Bcr2F47mv+kG5t840thnsEzrv0oB70+LJu3gUgchvg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", "cpu": [ "loong64" ], @@ -2143,9 +2143,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.10.tgz", - "integrity": "sha512-FN8mZOH7531iPHM0kaFhAOqqNHoAb6r/YHW2ZIxNi0a85UBi2DO4Vuyn7t1p4UN8a4LoAnLOT1PqNgHkgBJgbA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", "cpu": [ "mips64el" ], @@ -2159,9 +2159,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.10.tgz", - "integrity": "sha512-Dg9RiqdvHOAWnOKIOTsIx8dFX9EDlY2IbPEY7YFzchrCiTZmMkD7jWA9UdZbNUygPjdmQBVPRCrLydReFlX9yg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", "cpu": [ "ppc64" ], @@ -2175,9 +2175,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.10.tgz", - "integrity": "sha512-XMqtpjwzbmlar0BJIxmzu/RZ7EWlfVfH68Vadrva0Wj5UKOdKvqskuev2jY2oPV3aoQUyXwnMbMrFmloO2GfAw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", "cpu": [ "riscv64" ], @@ -2191,9 +2191,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.10.tgz", - "integrity": "sha512-fu7XtnoeRNFMx8DjK3gPWpFBDM2u5ba+FYwg27SjMJwKvJr4bDyKz5c+FLXLUSSAkMAt/UL+cUbEbra+rYtUgw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", "cpu": [ "s390x" ], @@ -2207,9 +2207,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.10.tgz", - "integrity": "sha512-61lcjVC/RldNNMUzQQdyCWjCxp9YLEQgIxErxU9XluX7juBdGKb0pvddS0vPNuCvotRbzijZ1pzII+26haWzbA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", "cpu": [ "x64" ], @@ -2223,9 +2223,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.10.tgz", - "integrity": "sha512-JeZXCX3viSA9j4HqSoygjssdqYdfHd6yCFWyfSekLbz4Ef+D2EjvsN02ZQPwYl5a5gg/ehdHgegHhlfOFP0HCA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", "cpu": [ "x64" ], @@ -2239,9 +2239,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.10.tgz", - "integrity": "sha512-3qpxQKuEVIIg8SebpXsp82OBrqjPV/OwNWmG+TnZDr3VGyChNnGMHccC1xkbxCHDQNnnXjxhMQNyHmdFJbmbRA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", "cpu": [ "x64" ], @@ -2255,9 +2255,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.10.tgz", - "integrity": "sha512-z+q0xZ+et/7etz7WoMyXTHZ1rB8PMSNp/FOqURLJLOPb3GWJ2aj4oCqFCjPwEbW1rsT7JPpxeH/DwGAWk/I1Bg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", "cpu": [ "x64" ], @@ -2271,9 +2271,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.10.tgz", - "integrity": "sha512-+YYu5sbQ9npkNT9Dec+tn1F/kjg6SMgr6bfi/6FpXYZvCRfu2YFPZGb+3x8K30s8eRxFpoG4sGhiSUkr1xbHEw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", "cpu": [ "arm64" ], @@ -2287,9 +2287,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.10.tgz", - "integrity": "sha512-Aw7Fupk7XNehR1ftHGYwUteyJ2q+em/aE+fVU3YMTBN2V5A7Z4aVCSV+SvCp9HIIHZavPFBpbdP3VfjQpdf6Xg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", "cpu": [ "ia32" ], @@ -2303,9 +2303,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.10.tgz", - "integrity": "sha512-qddWullt3sC1EIpfHvCRBq3H4g3L86DZpD6n8k2XFjFVyp01D++uNbN1hT/JRsHxTbyyemZcpwL5aRlJwc/zFw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", "cpu": [ "x64" ], @@ -4944,12 +4944,12 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz", - "integrity": "sha512-1mvyPc0xYW5G8CHQvJIJXLoMjl5Ct3q2g5Y2s6Ccfgwm45y48LBvsla7az+GkkAtYikWQ4Lxqcsq5RHLcZgtNQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", "dev": true, "dependencies": { - "@babel/core": "^7.20.5", + "@babel/core": "^7.20.12", "@babel/plugin-transform-react-jsx-self": "^7.18.6", "@babel/plugin-transform-react-jsx-source": "^7.19.6", "magic-string": "^0.27.0", @@ -4959,7 +4959,7 @@ "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.0.0" + "vite": "^4.1.0-beta.0" } }, "node_modules/@vitejs/plugin-react/node_modules/react-refresh": { @@ -6828,9 +6828,9 @@ } }, "node_modules/esbuild": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.10.tgz", - "integrity": "sha512-z5dIViHoVnw2l+NCJ3zj5behdXjYvXne9gL18OOivCadXDUhyDkeSvEtLcGVAJW2fNmh33TDUpsi704XYlDodw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "hasInstallScript": true, "bin": { @@ -6840,28 +6840,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.10", - "@esbuild/android-arm64": "0.16.10", - "@esbuild/android-x64": "0.16.10", - "@esbuild/darwin-arm64": "0.16.10", - "@esbuild/darwin-x64": "0.16.10", - "@esbuild/freebsd-arm64": "0.16.10", - "@esbuild/freebsd-x64": "0.16.10", - "@esbuild/linux-arm": "0.16.10", - "@esbuild/linux-arm64": "0.16.10", - "@esbuild/linux-ia32": "0.16.10", - "@esbuild/linux-loong64": "0.16.10", - "@esbuild/linux-mips64el": "0.16.10", - "@esbuild/linux-ppc64": "0.16.10", - "@esbuild/linux-riscv64": "0.16.10", - "@esbuild/linux-s390x": "0.16.10", - "@esbuild/linux-x64": "0.16.10", - "@esbuild/netbsd-x64": "0.16.10", - "@esbuild/openbsd-x64": "0.16.10", - "@esbuild/sunos-x64": "0.16.10", - "@esbuild/win32-arm64": "0.16.10", - "@esbuild/win32-ia32": "0.16.10", - "@esbuild/win32-x64": "0.16.10" + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" } }, "node_modules/escalade": { @@ -12648,9 +12648,9 @@ } }, "node_modules/postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "funding": [ { @@ -13632,9 +13632,9 @@ } }, "node_modules/rollup": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.8.1.tgz", - "integrity": "sha512-4yh9eMW7byOroYcN8DlF9P/2jCpu6txVIHjEqquQVSx7DI0RgyCCN3tjrcy4ra6yVtV336aLBB3v2AarYAxePQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.1.tgz", + "integrity": "sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -15202,15 +15202,15 @@ } }, "node_modules/vite": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz", - "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz", + "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==", "dev": true, "dependencies": { - "esbuild": "^0.16.3", - "postcss": "^8.4.20", + "esbuild": "^0.16.14", + "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.7.0" + "rollup": "^3.10.0" }, "bin": { "vite": "bin/vite.js" @@ -15251,9 +15251,9 @@ } }, "node_modules/vite-plugin-pwa": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.14.0.tgz", - "integrity": "sha512-3wZx47PLWTckOQhc8Y6YZjAbNZ89Ovh4TdCT97MGhgl7aFd2LUekVnAmIgFwgMqyxzJ93nmkPF/ALpEW/i2qCg==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.14.1.tgz", + "integrity": "sha512-5zx7yhQ8RTLwV71+GA9YsQQ63ALKG8XXIMqRJDdZkR8ZYftFcRgnzM7wOWmQZ/DATspyhPih5wCdcZnAIsM+mA==", "dev": true, "dependencies": { "@rollup/plugin-replace": "^5.0.1", @@ -16166,24 +16166,24 @@ "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==" }, "@babel/core": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz", - "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==", + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", "@babel/helpers": "^7.20.7", "@babel/parser": "^7.20.7", "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", + "@babel/traverse": "^7.20.12", "@babel/types": "^7.20.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", + "json5": "^2.2.2", "semver": "^6.3.0" }, "dependencies": { @@ -16503,9 +16503,9 @@ } }, "@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -17347,9 +17347,9 @@ } }, "@babel/traverse": { - "version": "7.20.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz", - "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", "requires": { "@babel/code-frame": "^7.18.6", "@babel/generator": "^7.20.7", @@ -17357,7 +17357,7 @@ "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.7", + "@babel/parser": "^7.20.13", "@babel/types": "^7.20.7", "debug": "^4.1.0", "globals": "^11.1.0" @@ -17402,156 +17402,156 @@ "requires": {} }, "@esbuild/android-arm": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.10.tgz", - "integrity": "sha512-RmJjQTRrO6VwUWDrzTBLmV4OJZTarYsiepLGlF2rYTVB701hSorPywPGvP6d8HCuuRibyXa5JX4s3jN2kHEtjQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.10.tgz", - "integrity": "sha512-47Y+NwVKTldTlDhSgJHZ/RpvBQMUDG7eKihqaF/u6g7s0ZPz4J1vy8A3rwnnUOF2CuDn7w7Gj/QcMoWz3U3SJw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.10.tgz", - "integrity": "sha512-C4PfnrBMcuAcOurQzpF1tTtZz94IXO5JmICJJ3NFJRHbXXsQUg9RFG45KvydKqtFfBaFLCHpduUkUfXwIvGnRg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.10.tgz", - "integrity": "sha512-bH/bpFwldyOKdi9HSLCLhhKeVgRYr9KblchwXgY2NeUHBB/BzTUHtUSBgGBmpydB1/4E37m+ggXXfSrnD7/E7g==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.10.tgz", - "integrity": "sha512-OXt7ijoLuy+AjDSKQWu+KdDFMBbdeaL6wtgMKtDUXKWHiAMKHan5+R1QAG6HD4+K0nnOvEJXKHeA9QhXNAjOTQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.10.tgz", - "integrity": "sha512-shSQX/3GHuspE3Uxtq5kcFG/zqC+VuMnJkqV7LczO41cIe6CQaXHD3QdMLA4ziRq/m0vZo7JdterlgbmgNIAlQ==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.10.tgz", - "integrity": "sha512-5YVc1zdeaJGASijZmTzSO4h6uKzsQGG3pkjI6fuXvolhm3hVRhZwnHJkforaZLmzvNv5Tb7a3QL2FAVmrgySIA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.10.tgz", - "integrity": "sha512-c360287ZWI2miBnvIj23bPyVctgzeMT2kQKR+x94pVqIN44h3GF8VMEs1SFPH1UgyDr3yBbx3vowDS1SVhyVhA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.10.tgz", - "integrity": "sha512-2aqeNVxIaRfPcIaMZIFoblLh588sWyCbmj1HHCCs9WmeNWm+EIN0SmvsmPvTa/TsNZFKnxTcvkX2eszTcCqIrA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.10.tgz", - "integrity": "sha512-sqMIEWeyrLGU7J5RB5fTkLRIFwsgsQ7ieWXlDLEmC2HblPYGb3AucD7inw2OrKFpRPKsec1l+lssiM3+NV5aOw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.10.tgz", - "integrity": "sha512-O7Pd5hLEtTg37NC73pfhUOGTjx/+aXu5YoSq3ahCxcN7Bcr2F47mv+kG5t840thnsEzrv0oB70+LJu3gUgchvg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.10.tgz", - "integrity": "sha512-FN8mZOH7531iPHM0kaFhAOqqNHoAb6r/YHW2ZIxNi0a85UBi2DO4Vuyn7t1p4UN8a4LoAnLOT1PqNgHkgBJgbA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.10.tgz", - "integrity": "sha512-Dg9RiqdvHOAWnOKIOTsIx8dFX9EDlY2IbPEY7YFzchrCiTZmMkD7jWA9UdZbNUygPjdmQBVPRCrLydReFlX9yg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.10.tgz", - "integrity": "sha512-XMqtpjwzbmlar0BJIxmzu/RZ7EWlfVfH68Vadrva0Wj5UKOdKvqskuev2jY2oPV3aoQUyXwnMbMrFmloO2GfAw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.10.tgz", - "integrity": "sha512-fu7XtnoeRNFMx8DjK3gPWpFBDM2u5ba+FYwg27SjMJwKvJr4bDyKz5c+FLXLUSSAkMAt/UL+cUbEbra+rYtUgw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.10.tgz", - "integrity": "sha512-61lcjVC/RldNNMUzQQdyCWjCxp9YLEQgIxErxU9XluX7juBdGKb0pvddS0vPNuCvotRbzijZ1pzII+26haWzbA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.10.tgz", - "integrity": "sha512-JeZXCX3viSA9j4HqSoygjssdqYdfHd6yCFWyfSekLbz4Ef+D2EjvsN02ZQPwYl5a5gg/ehdHgegHhlfOFP0HCA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.10.tgz", - "integrity": "sha512-3qpxQKuEVIIg8SebpXsp82OBrqjPV/OwNWmG+TnZDr3VGyChNnGMHccC1xkbxCHDQNnnXjxhMQNyHmdFJbmbRA==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.10.tgz", - "integrity": "sha512-z+q0xZ+et/7etz7WoMyXTHZ1rB8PMSNp/FOqURLJLOPb3GWJ2aj4oCqFCjPwEbW1rsT7JPpxeH/DwGAWk/I1Bg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.10.tgz", - "integrity": "sha512-+YYu5sbQ9npkNT9Dec+tn1F/kjg6SMgr6bfi/6FpXYZvCRfu2YFPZGb+3x8K30s8eRxFpoG4sGhiSUkr1xbHEw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.10.tgz", - "integrity": "sha512-Aw7Fupk7XNehR1ftHGYwUteyJ2q+em/aE+fVU3YMTBN2V5A7Z4aVCSV+SvCp9HIIHZavPFBpbdP3VfjQpdf6Xg==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.10.tgz", - "integrity": "sha512-qddWullt3sC1EIpfHvCRBq3H4g3L86DZpD6n8k2XFjFVyp01D++uNbN1hT/JRsHxTbyyemZcpwL5aRlJwc/zFw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", "dev": true, "optional": true }, @@ -19541,12 +19541,12 @@ } }, "@vitejs/plugin-react": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz", - "integrity": "sha512-1mvyPc0xYW5G8CHQvJIJXLoMjl5Ct3q2g5Y2s6Ccfgwm45y48LBvsla7az+GkkAtYikWQ4Lxqcsq5RHLcZgtNQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", "dev": true, "requires": { - "@babel/core": "^7.20.5", + "@babel/core": "^7.20.12", "@babel/plugin-transform-react-jsx-self": "^7.18.6", "@babel/plugin-transform-react-jsx-source": "^7.19.6", "magic-string": "^0.27.0", @@ -20924,33 +20924,33 @@ } }, "esbuild": { - "version": "0.16.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.10.tgz", - "integrity": "sha512-z5dIViHoVnw2l+NCJ3zj5behdXjYvXne9gL18OOivCadXDUhyDkeSvEtLcGVAJW2fNmh33TDUpsi704XYlDodw==", + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", "dev": true, "requires": { - "@esbuild/android-arm": "0.16.10", - "@esbuild/android-arm64": "0.16.10", - "@esbuild/android-x64": "0.16.10", - "@esbuild/darwin-arm64": "0.16.10", - "@esbuild/darwin-x64": "0.16.10", - "@esbuild/freebsd-arm64": "0.16.10", - "@esbuild/freebsd-x64": "0.16.10", - "@esbuild/linux-arm": "0.16.10", - "@esbuild/linux-arm64": "0.16.10", - "@esbuild/linux-ia32": "0.16.10", - "@esbuild/linux-loong64": "0.16.10", - "@esbuild/linux-mips64el": "0.16.10", - "@esbuild/linux-ppc64": "0.16.10", - "@esbuild/linux-riscv64": "0.16.10", - "@esbuild/linux-s390x": "0.16.10", - "@esbuild/linux-x64": "0.16.10", - "@esbuild/netbsd-x64": "0.16.10", - "@esbuild/openbsd-x64": "0.16.10", - "@esbuild/sunos-x64": "0.16.10", - "@esbuild/win32-arm64": "0.16.10", - "@esbuild/win32-ia32": "0.16.10", - "@esbuild/win32-x64": "0.16.10" + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" } }, "escalade": { @@ -25216,9 +25216,9 @@ } }, "postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "dev": true, "requires": { "nanoid": "^3.3.4", @@ -25930,9 +25930,9 @@ } }, "rollup": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.8.1.tgz", - "integrity": "sha512-4yh9eMW7byOroYcN8DlF9P/2jCpu6txVIHjEqquQVSx7DI0RgyCCN3tjrcy4ra6yVtV336aLBB3v2AarYAxePQ==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.1.tgz", + "integrity": "sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -27145,22 +27145,22 @@ "dev": true }, "vite": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz", - "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz", + "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==", "dev": true, "requires": { - "esbuild": "^0.16.3", + "esbuild": "^0.16.14", "fsevents": "~2.3.2", - "postcss": "^8.4.20", + "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.7.0" + "rollup": "^3.10.0" } }, "vite-plugin-pwa": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.14.0.tgz", - "integrity": "sha512-3wZx47PLWTckOQhc8Y6YZjAbNZ89Ovh4TdCT97MGhgl7aFd2LUekVnAmIgFwgMqyxzJ93nmkPF/ALpEW/i2qCg==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.14.1.tgz", + "integrity": "sha512-5zx7yhQ8RTLwV71+GA9YsQQ63ALKG8XXIMqRJDdZkR8ZYftFcRgnzM7wOWmQZ/DATspyhPih5wCdcZnAIsM+mA==", "dev": true, "requires": { "@rollup/plugin-replace": "^5.0.1", diff --git a/package.json b/package.json index 8cc5adb5..113ab9ab 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "@types/react-dom": "^18.0.10", "@types/react-tag-autocomplete": "^6.3.0", "@types/uuid": "^8.3.4", - "@vitejs/plugin-react": "^3.0.0", + "@vitejs/plugin-react": "^3.1.0", "adm-zip": "^0.5.10", "babel-jest": "^29.3.1", "chalk": "^5.2.0", @@ -107,8 +107,8 @@ "stylelint": "^14.16.0", "ts-mockery": "^1.2.0", "typescript": "^4.9.4", - "vite": "^4.0.3", - "vite-plugin-pwa": "^0.14.0" + "vite": "^4.1.1", + "vite-plugin-pwa": "^0.14.1" }, "browserslist": [ ">0.2%", From 3503f1f580302ee02b4f09e41a307bd0710d4c45 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Fri, 17 Feb 2023 20:09:31 +0100 Subject: [PATCH 06/11] Remove stryker and mutation testing --- .dockerignore | 1 - .github/workflows/ci.yml | 1 - .gitignore | 1 - jest.config.js | 2 - package-lock.json | 2733 -------------------------------------- package.json | 7 +- 6 files changed, 1 insertion(+), 2744 deletions(-) diff --git a/.dockerignore b/.dockerignore index c118f1c6..1d878882 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ ./.github -./.stryker-tmp ./build ./coverage ./node_modules diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2dc6b4e6..5f23a750 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,5 @@ jobs: uses: shlinkio/github-actions/.github/workflows/web-app-ci.yml@main with: node-version: 18.12 - with-mutation-tests: true publish-coverage: true force-install: true diff --git a/.gitignore b/.gitignore index 1b558dfb..fa8cf3f8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ # testing /coverage -/.stryker-tmp /reports # production diff --git a/jest.config.js b/jest.config.js index cb2b1a57..4f2d9e03 100644 --- a/jest.config.js +++ b/jest.config.js @@ -17,7 +17,6 @@ module.exports = { }, setupFilesAfterEnv: ['/config/jest/setupTests.ts'], testMatch: ['/test/**/*.test.{ts,tsx}'], - modulePathIgnorePatterns: ['/.stryker-tmp'], testEnvironment: 'jsdom', testEnvironmentOptions: { url: 'http://localhost', @@ -28,7 +27,6 @@ module.exports = { '^(?!.*\\.(ts|tsx|js|json|scss)$)': '/config/jest/fileTransform.js', }, transformIgnorePatterns: [ - '/.stryker-tmp', 'node_modules\/(?!(\@react-leaflet|react-leaflet|leaflet|react-chartjs-2|react-colorful)\/)', '^.+\\.module\\.scss$', ], diff --git a/package-lock.json b/package-lock.json index d3f3d3b7..70510eb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,9 +56,6 @@ "devDependencies": { "@shlinkio/eslint-config-js-coding-standard": "~2.0.2", "@shlinkio/stylelint-config-css-coding-standard": "~1.0.1", - "@stryker-mutator/core": "^6.3.1", - "@stryker-mutator/jest-runner": "^6.3.1", - "@stryker-mutator/typescript-checker": "^6.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -86,7 +83,6 @@ "resize-observer-polyfill": "^1.5.1", "sass": "^1.57.1", "serve": "^14.1.2", - "stryker-cli": "^1.0.2", "stylelint": "^14.16.0", "ts-mockery": "^1.2.0", "typescript": "^4.9.4", @@ -676,25 +672,6 @@ "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz", - "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", @@ -929,21 +906,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -3529,471 +3491,6 @@ "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.10.tgz", "integrity": "sha512-juqNFdqqmY/nvsODq1Vba7PWIaqr01VcqICIrxbws97QKSQhQUMml8FqdHLmevwVpqH39H5mVXKFWiWCi1ke0w==" }, - "node_modules/@stryker-mutator/api": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/api/-/api-6.3.1.tgz", - "integrity": "sha512-NmD3MwU+zujV/jvkDaesyvuwOzCFJ6cAusw5BsMdaCEi+wt6pmPw77FETD1fsBkoHhRaH4g8ptKjFMDyKX2Xug==", - "dev": true, - "dependencies": { - "mutation-testing-metrics": "1.7.10", - "mutation-testing-report-schema": "1.7.10", - "tslib": "~2.4.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@stryker-mutator/api/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/@stryker-mutator/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/core/-/core-6.3.1.tgz", - "integrity": "sha512-ii1E9RkZKFODf2Q5OTZQEllCAHuHmrOAEmta2siNQZYUd7LyvEgsjqXg2XP1NifMw0vJeHXaJAu+ZFyi8aDvgA==", - "dev": true, - "dependencies": { - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/instrumenter": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "ajv": "~8.11.0", - "chalk": "~5.2.0", - "commander": "~9.4.0", - "diff-match-patch": "1.0.5", - "emoji-regex": "~10.2.1", - "execa": "~6.1.0", - "file-url": "~4.0.0", - "get-port": "~6.1.0", - "glob": "~8.0.0", - "inquirer": "~9.1.0", - "lodash.flatmap": "~4.5.0", - "lodash.groupby": "~4.6.0", - "log4js": "~6.7.0", - "minimatch": "~5.1.0", - "mkdirp": "~1.0.3", - "mutation-testing-elements": "1.7.12", - "mutation-testing-metrics": "1.7.10", - "mutation-testing-report-schema": "1.7.10", - "npm-run-path": "~5.1.0", - "progress": "~2.0.0", - "rimraf": "~3.0.0", - "rxjs": "~7.8.0", - "semver": "^7.3.5", - "source-map": "~0.7.3", - "tree-kill": "~1.2.2", - "tslib": "~2.4.0", - "typed-inject": "~3.0.0", - "typed-rest-client": "~1.8.0" - }, - "bin": { - "stryker": "bin/stryker.js" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@stryker-mutator/core/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@stryker-mutator/core/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@stryker-mutator/core/node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@stryker-mutator/core/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@stryker-mutator/core/node_modules/emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", - "dev": true - }, - "node_modules/@stryker-mutator/core/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@stryker-mutator/core/node_modules/execa/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@stryker-mutator/core/node_modules/execa/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@stryker-mutator/core/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@stryker-mutator/core/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/@stryker-mutator/core/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@stryker-mutator/core/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/@stryker-mutator/core/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@stryker-mutator/core/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@stryker-mutator/core/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@stryker-mutator/core/node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@stryker-mutator/core/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@stryker-mutator/core/node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@stryker-mutator/core/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@stryker-mutator/core/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@stryker-mutator/core/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@stryker-mutator/core/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@stryker-mutator/core/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@stryker-mutator/core/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/@stryker-mutator/core/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@stryker-mutator/instrumenter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/instrumenter/-/instrumenter-6.3.1.tgz", - "integrity": "sha512-cxg88sHr3qDz41c0fS3t8t2mBI0dY55ksUrrkbhJy+b9KhPwjRhL2L3ixyMFsDyNY+ur+038mDYjS2emOsF2fg==", - "dev": true, - "dependencies": { - "@babel/core": "~7.20.0", - "@babel/generator": "~7.20.0", - "@babel/parser": "~7.20.0", - "@babel/plugin-proposal-class-properties": "~7.18.0", - "@babel/plugin-proposal-decorators": "~7.20.0", - "@babel/plugin-proposal-private-methods": "~7.18.0", - "@babel/preset-typescript": "~7.18.0", - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "angular-html-parser": "~3.0.0", - "weapon-regex": "~1.0.2" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@stryker-mutator/jest-runner": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/jest-runner/-/jest-runner-6.3.1.tgz", - "integrity": "sha512-kJJ8OCuMvrFyc2XrczBsudqcekfRaDOhyC7OaMUVJOwMOGdBzGAAGV5TBwdZR3FXnaoOU24lqhqUxuB2E8Yo2w==", - "dev": true, - "dependencies": { - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "semver": "~7.3.7", - "tslib": "~2.4.0" - }, - "engines": { - "node": ">=14.18.0" - }, - "peerDependencies": { - "@stryker-mutator/core": "~6.3.0" - } - }, - "node_modules/@stryker-mutator/jest-runner/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@stryker-mutator/jest-runner/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/@stryker-mutator/typescript-checker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/typescript-checker/-/typescript-checker-6.3.1.tgz", - "integrity": "sha512-XB0Ja5SrPQ8f/GYJmgKcROiM6hPuRZum/nTMFsnY/1+wWCq7dZr5MT6d3Z91l5RbJwObZRqth/B5QPxzo0O8+w==", - "dev": true, - "dependencies": { - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "semver": "~7.3.2" - }, - "engines": { - "node": ">=14.18.0" - }, - "peerDependencies": { - "@stryker-mutator/core": "~6.3.0", - "typescript": ">=3.6" - } - }, - "node_modules/@stryker-mutator/typescript-checker/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@stryker-mutator/util": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/util/-/util-6.3.1.tgz", - "integrity": "sha512-Oi5IulxqhncZ39QS4KcmUI6k4IWH03EfY/3TFc75IeODwClOVZpB7TasMfDVimAqchCmFzKFZUouqGRbrdcYWg==", - "dev": true, - "dependencies": { - "lodash.flatmap": "~4.5.0" - } - }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -5077,24 +4574,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/angular-html-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/angular-html-parser/-/angular-html-parser-3.0.0.tgz", - "integrity": "sha512-2UVNx5UmO2wj2JzwIIb0927/jr3d8vYv4cMIFsh4a8dLUIhf2YpMU7UgRMXJJo19jAihTW/MO2whnl/0xvAfqg==", - "dev": true, - "dependencies": { - "tslib": "2.4.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/angular-html-parser/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -5560,26 +5039,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -5589,37 +5048,6 @@ "node": ">=8" } }, - "node_modules/bl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", - "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5836,30 +5264,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -6061,12 +5465,6 @@ "node": ">=10" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", - "dev": true - }, "node_modules/chart.js": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.1.tgz", @@ -6134,36 +5532,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, "node_modules/clipboardy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", @@ -6218,15 +5586,6 @@ "node": ">=8" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -6532,15 +5891,6 @@ "url": "https://opencollective.com/date-fns" } }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz", @@ -6617,15 +5967,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - } - }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -6656,12 +5997,6 @@ "node": ">=8" } }, - "node_modules/diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "dev": true - }, "node_modules/diff-sequences": { "version": "29.3.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", @@ -7883,20 +7218,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/external-editor": { - "version": "3.0.3", - "resolved": "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha1-WGbbKal4Jtvkvzr9JAcOrZ6kOic=", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7973,18 +7294,6 @@ "bser": "2.1.1" } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -7997,18 +7306,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-4.0.0.tgz", - "integrity": "sha512-vRCdScQ6j3Ku6Kd7W1kZk9c++5SqD6Xz5Jotrjr/nkY714M14RFHy/AAVA2WQvpsqVAVgTbDrYyBpU205F0cLw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -8221,18 +7518,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-port": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz", - "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -8583,18 +7868,6 @@ "node": ">=10.17.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", @@ -8612,26 +7885,6 @@ "node": ">=4" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -8737,251 +7990,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/inquirer": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.2.tgz", - "integrity": "sha512-Hj2Ml1WpxKJU2npP2Rj0OURGkHV+GtNW2CwFdHDiXlqUBAUrWTcZHxCkFywX/XHzOS7wrG/kExgJFbUkVgyHzg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^5.0.0", - "chalk": "^5.0.1", - "cli-cursor": "^4.0.0", - "cli-width": "^4.0.0", - "external-editor": "^3.0.3", - "figures": "^5.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^6.1.2", - "run-async": "^2.4.0", - "rxjs": "^7.5.6", - "string-width": "^5.1.2", - "strip-ansi": "^7.0.1", - "through": "^2.3.6", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, - "dependencies": { - "type-fest": "^1.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.1.tgz", - "integrity": "sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/cli-width": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", - "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/inquirer/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/inquirer/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/inquirer/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "node_modules/inquirer/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -9098,15 +8106,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -9128,18 +8127,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -9309,18 +8296,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -11558,15 +10533,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -11689,23 +10655,11 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, - "node_modules/lodash.flatmap": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", - "dev": true - }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, - "node_modules/lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -11724,61 +10678,6 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, - "node_modules/log-symbols": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", - "dev": true, - "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/log4js/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/log4js/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz", @@ -11970,15 +10869,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -12035,33 +10925,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/mutation-testing-elements": { - "version": "1.7.12", - "resolved": "https://registry.npmjs.org/mutation-testing-elements/-/mutation-testing-elements-1.7.12.tgz", - "integrity": "sha512-6L5PiREMKWirDOVoMVpJtq4r1MfHZgme78PFQl9W59YQq/rqmHpYAcwrdUYikPVYASp4r91ZupiKlFHgCPiVBw==", - "dev": true - }, - "node_modules/mutation-testing-metrics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/mutation-testing-metrics/-/mutation-testing-metrics-1.7.10.tgz", - "integrity": "sha512-wQnfnvMoSkV/5AHurRaDouiXf2ENoo23cXNZw70ks+mftEGPwLMStlyQZytQrcY/9lQDdrNSdMSPt2Zri75OcA==", - "dev": true, - "dependencies": { - "mutation-testing-report-schema": "1.7.10" - } - }, - "node_modules/mutation-testing-report-schema": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/mutation-testing-report-schema/-/mutation-testing-report-schema-1.7.10.tgz", - "integrity": "sha512-lPbEVTAlx0XCXA5GKpb6+0mtDk9MoepYVsXhEtRcwiHRjmqBn2frwXL1Xmkh6HxYnEDIQddzZAgk8SIbkV7p+g==", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -12270,18 +11133,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -12299,120 +11150,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", - "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", - "dev": true, - "dependencies": { - "bl": "^5.0.0", - "chalk": "^5.0.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.6.1", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.1.0", - "log-symbols": "^5.1.0", - "strip-ansi": "^7.0.1", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", @@ -12821,15 +11558,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz", - "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -13587,19 +12315,6 @@ "node": ">=10" } }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -13610,12 +12325,6 @@ "node": ">=0.10.0" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -13647,15 +12356,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -13679,18 +12379,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -14022,81 +12710,6 @@ "node": ">=8" } }, - "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/streamroller/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/streamroller/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/streamroller/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -14110,40 +12723,6 @@ "node": ">=10" } }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/string.prototype.matchall": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", @@ -14283,91 +12862,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stryker-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stryker-cli/-/stryker-cli-1.0.2.tgz", - "integrity": "sha512-HUrpmscQpATia2VQkM9rjUBqQ3tblWJ7nomI0Zs6zx5tDaHZ980ZQswGcBZ4hYTfU1Nct2RUi0wzRhe0rsc4Pg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "inquirer": "^6.2.2", - "resolve": "^1.10.0" - }, - "bin": { - "stryker": "bin/stryker-cli" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stryker-cli/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/stryker-cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/stryker-cli/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/stryker-cli/node_modules/inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/stryker-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -14767,24 +13261,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -14843,15 +13319,6 @@ "node": ">=12" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -14923,15 +13390,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -14965,26 +13423,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-inject": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/typed-inject/-/typed-inject-3.0.0.tgz", - "integrity": "sha512-LDuyPsk6mO1R0qpe/rm/4u/6pPgT2Fob5T+u2D/wDlORxqlwtG9oWxruTaFZ6L61kzwWGzSp80soc3UUScHmaQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/typed-rest-client": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz", - "integrity": "sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg==", - "dev": true, - "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, "node_modules/typescript": { "version": "4.9.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", @@ -15013,12 +13451,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -15325,21 +13757,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/weapon-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/weapon-regex/-/weapon-regex-1.0.3.tgz", - "integrity": "sha512-V8X6hPIzY1juvrSVREmtRhK9AHn/8c2z8XxaibESU+jyG/RinZ9x9x6aw8qEuFAi7R6Kl/EWGbU2Yq/9u6TTjw==", - "dev": true - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -16555,19 +14972,6 @@ "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, - "@babel/plugin-proposal-decorators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.7.tgz", - "integrity": "sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.19.0" - } - }, "@babel/plugin-proposal-dynamic-import": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", @@ -16715,15 +15119,6 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/plugin-syntax-decorators": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz", - "integrity": "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -18445,352 +16840,6 @@ "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.10.tgz", "integrity": "sha512-juqNFdqqmY/nvsODq1Vba7PWIaqr01VcqICIrxbws97QKSQhQUMml8FqdHLmevwVpqH39H5mVXKFWiWCi1ke0w==" }, - "@stryker-mutator/api": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/api/-/api-6.3.1.tgz", - "integrity": "sha512-NmD3MwU+zujV/jvkDaesyvuwOzCFJ6cAusw5BsMdaCEi+wt6pmPw77FETD1fsBkoHhRaH4g8ptKjFMDyKX2Xug==", - "dev": true, - "requires": { - "mutation-testing-metrics": "1.7.10", - "mutation-testing-report-schema": "1.7.10", - "tslib": "~2.4.0" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - } - } - }, - "@stryker-mutator/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/core/-/core-6.3.1.tgz", - "integrity": "sha512-ii1E9RkZKFODf2Q5OTZQEllCAHuHmrOAEmta2siNQZYUd7LyvEgsjqXg2XP1NifMw0vJeHXaJAu+ZFyi8aDvgA==", - "dev": true, - "requires": { - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/instrumenter": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "ajv": "~8.11.0", - "chalk": "~5.2.0", - "commander": "~9.4.0", - "diff-match-patch": "1.0.5", - "emoji-regex": "~10.2.1", - "execa": "~6.1.0", - "file-url": "~4.0.0", - "get-port": "~6.1.0", - "glob": "~8.0.0", - "inquirer": "~9.1.0", - "lodash.flatmap": "~4.5.0", - "lodash.groupby": "~4.6.0", - "log4js": "~6.7.0", - "minimatch": "~5.1.0", - "mkdirp": "~1.0.3", - "mutation-testing-elements": "1.7.12", - "mutation-testing-metrics": "1.7.10", - "mutation-testing-report-schema": "1.7.10", - "npm-run-path": "~5.1.0", - "progress": "~2.0.0", - "rimraf": "~3.0.0", - "rxjs": "~7.8.0", - "semver": "^7.3.5", - "source-map": "~0.7.3", - "tree-kill": "~1.2.2", - "tslib": "~2.4.0", - "typed-inject": "~3.0.0", - "typed-rest-client": "~1.8.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "emoji-regex": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", - "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", - "dev": true - }, - "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - } - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - } - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@stryker-mutator/instrumenter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/instrumenter/-/instrumenter-6.3.1.tgz", - "integrity": "sha512-cxg88sHr3qDz41c0fS3t8t2mBI0dY55ksUrrkbhJy+b9KhPwjRhL2L3ixyMFsDyNY+ur+038mDYjS2emOsF2fg==", - "dev": true, - "requires": { - "@babel/core": "~7.20.0", - "@babel/generator": "~7.20.0", - "@babel/parser": "~7.20.0", - "@babel/plugin-proposal-class-properties": "~7.18.0", - "@babel/plugin-proposal-decorators": "~7.20.0", - "@babel/plugin-proposal-private-methods": "~7.18.0", - "@babel/preset-typescript": "~7.18.0", - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "angular-html-parser": "~3.0.0", - "weapon-regex": "~1.0.2" - } - }, - "@stryker-mutator/jest-runner": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/jest-runner/-/jest-runner-6.3.1.tgz", - "integrity": "sha512-kJJ8OCuMvrFyc2XrczBsudqcekfRaDOhyC7OaMUVJOwMOGdBzGAAGV5TBwdZR3FXnaoOU24lqhqUxuB2E8Yo2w==", - "dev": true, - "requires": { - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "semver": "~7.3.7", - "tslib": "~2.4.0" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - } - } - }, - "@stryker-mutator/typescript-checker": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/typescript-checker/-/typescript-checker-6.3.1.tgz", - "integrity": "sha512-XB0Ja5SrPQ8f/GYJmgKcROiM6hPuRZum/nTMFsnY/1+wWCq7dZr5MT6d3Z91l5RbJwObZRqth/B5QPxzo0O8+w==", - "dev": true, - "requires": { - "@stryker-mutator/api": "6.3.1", - "@stryker-mutator/util": "6.3.1", - "semver": "~7.3.2" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@stryker-mutator/util": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@stryker-mutator/util/-/util-6.3.1.tgz", - "integrity": "sha512-Oi5IulxqhncZ39QS4KcmUI6k4IWH03EfY/3TFc75IeODwClOVZpB7TasMfDVimAqchCmFzKFZUouqGRbrdcYWg==", - "dev": true, - "requires": { - "lodash.flatmap": "~4.5.0" - } - }, "@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -19640,23 +17689,6 @@ "uri-js": "^4.2.2" } }, - "angular-html-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/angular-html-parser/-/angular-html-parser-3.0.0.tgz", - "integrity": "sha512-2UVNx5UmO2wj2JzwIIb0927/jr3d8vYv4cMIFsh4a8dLUIhf2YpMU7UgRMXJJo19jAihTW/MO2whnl/0xvAfqg==", - "dev": true, - "requires": { - "tslib": "2.4.1" - }, - "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - } - } - }, "ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -20002,48 +18034,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bl": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz", - "integrity": "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==", - "dev": true, - "requires": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -20183,16 +18179,6 @@ "node-int64": "^0.4.0" } }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -20322,12 +18308,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", - "dev": true - }, "chart.js": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.1.1.tgz", @@ -20375,27 +18355,6 @@ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, "clipboardy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", @@ -20437,12 +18396,6 @@ } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -20689,12 +18642,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz", @@ -20758,15 +18705,6 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -20788,12 +18726,6 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, - "diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "dev": true - }, "diff-sequences": { "version": "29.3.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz", @@ -21708,17 +19640,6 @@ "jest-util": "^29.3.1" } }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha1-WGbbKal4Jtvkvzr9JAcOrZ6kOic=", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -21791,15 +19712,6 @@ "bser": "2.1.1" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -21809,12 +19721,6 @@ "flat-cache": "^3.0.4" } }, - "file-url": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-4.0.0.tgz", - "integrity": "sha512-vRCdScQ6j3Ku6Kd7W1kZk9c++5SqD6Xz5Jotrjr/nkY714M14RFHy/AAVA2WQvpsqVAVgTbDrYyBpU205F0cLw==", - "dev": true - }, "filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -21985,12 +19891,6 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, - "get-port": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz", - "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", - "dev": true - }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -22247,15 +20147,6 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", @@ -22270,12 +20161,6 @@ "harmony-reflect": "^1.4.6" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -22353,172 +20238,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "inquirer": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.1.2.tgz", - "integrity": "sha512-Hj2Ml1WpxKJU2npP2Rj0OURGkHV+GtNW2CwFdHDiXlqUBAUrWTcZHxCkFywX/XHzOS7wrG/kExgJFbUkVgyHzg==", - "dev": true, - "requires": { - "ansi-escapes": "^5.0.0", - "chalk": "^5.0.1", - "cli-cursor": "^4.0.0", - "cli-width": "^4.0.0", - "external-editor": "^3.0.3", - "figures": "^5.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^6.1.2", - "run-async": "^2.4.0", - "rxjs": "^7.5.6", - "string-width": "^5.1.2", - "strip-ansi": "^7.0.1", - "through": "^2.3.6", - "wrap-ansi": "^8.0.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, - "requires": { - "type-fest": "^1.0.2" - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.1.tgz", - "integrity": "sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg==", - "dev": true - }, - "cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "requires": { - "restore-cursor": "^4.0.0" - } - }, - "cli-width": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", - "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true - }, - "figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "requires": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - }, - "wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -22596,12 +20315,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -22617,12 +20330,6 @@ "is-extglob": "^2.1.1" } }, - "is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "dev": true - }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -22729,12 +20436,6 @@ "has-symbols": "^1.0.2" } }, - "is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -24392,15 +22093,6 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -24499,23 +22191,11 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, - "lodash.flatmap": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", - "dev": true - }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, - "lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", - "dev": true - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -24534,46 +22214,6 @@ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, - "log-symbols": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", - "dev": true, - "requires": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" - } - }, - "log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz", @@ -24714,12 +22354,6 @@ "mime-db": "1.52.0" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", - "dev": true - }, "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -24767,33 +22401,6 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "mutation-testing-elements": { - "version": "1.7.12", - "resolved": "https://registry.npmjs.org/mutation-testing-elements/-/mutation-testing-elements-1.7.12.tgz", - "integrity": "sha512-6L5PiREMKWirDOVoMVpJtq4r1MfHZgme78PFQl9W59YQq/rqmHpYAcwrdUYikPVYASp4r91ZupiKlFHgCPiVBw==", - "dev": true - }, - "mutation-testing-metrics": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/mutation-testing-metrics/-/mutation-testing-metrics-1.7.10.tgz", - "integrity": "sha512-wQnfnvMoSkV/5AHurRaDouiXf2ENoo23cXNZw70ks+mftEGPwLMStlyQZytQrcY/9lQDdrNSdMSPt2Zri75OcA==", - "dev": true, - "requires": { - "mutation-testing-report-schema": "1.7.10" - } - }, - "mutation-testing-report-schema": { - "version": "1.7.10", - "resolved": "https://registry.npmjs.org/mutation-testing-report-schema/-/mutation-testing-report-schema-1.7.10.tgz", - "integrity": "sha512-lPbEVTAlx0XCXA5GKpb6+0mtDk9MoepYVsXhEtRcwiHRjmqBn2frwXL1Xmkh6HxYnEDIQddzZAgk8SIbkV7p+g==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -24947,15 +22554,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -24970,80 +22568,6 @@ "word-wrap": "^1.2.3" } }, - "ora": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz", - "integrity": "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==", - "dev": true, - "requires": { - "bl": "^5.0.0", - "chalk": "^5.0.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.6.1", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.1.0", - "log-symbols": "^5.1.0", - "strip-ansi": "^7.0.1", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "requires": { - "restore-cursor": "^4.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, "p-limit": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", @@ -25334,12 +22858,6 @@ } } }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz", - "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", - "dev": true - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -25898,28 +23416,12 @@ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -25938,12 +23440,6 @@ "fsevents": "~2.3.2" } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -25953,15 +23449,6 @@ "queue-microtask": "^1.2.2" } }, - "rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -26233,68 +23720,6 @@ } } }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true - } - } - }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -26305,33 +23730,6 @@ "strip-ansi": "^6.0.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "string.prototype.matchall": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", @@ -26434,72 +23832,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "stryker-cli": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stryker-cli/-/stryker-cli-1.0.2.tgz", - "integrity": "sha512-HUrpmscQpATia2VQkM9rjUBqQ3tblWJ7nomI0Zs6zx5tDaHZ980ZQswGcBZ4hYTfU1Nct2RUi0wzRhe0rsc4Pg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "inquirer": "^6.2.2", - "resolve": "^1.10.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -26817,21 +24149,6 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -26878,12 +24195,6 @@ "punycode": "^2.1.1" } }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -26943,12 +24254,6 @@ "tslib": "^1.8.1" } }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -26970,23 +24275,6 @@ "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true }, - "typed-inject": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/typed-inject/-/typed-inject-3.0.0.tgz", - "integrity": "sha512-LDuyPsk6mO1R0qpe/rm/4u/6pPgT2Fob5T+u2D/wDlORxqlwtG9oWxruTaFZ6L61kzwWGzSp80soc3UUScHmaQ==", - "dev": true - }, - "typed-rest-client": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz", - "integrity": "sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg==", - "dev": true, - "requires": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, "typescript": { "version": "4.9.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", @@ -27005,12 +24293,6 @@ "which-boxed-primitive": "^1.0.2" } }, - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -27215,21 +24497,6 @@ "loose-envify": "^1.0.0" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "weapon-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/weapon-regex/-/weapon-regex-1.0.3.tgz", - "integrity": "sha512-V8X6hPIzY1juvrSVREmtRhK9AHn/8c2z8XxaibESU+jyG/RinZ9x9x6aw8qEuFAi7R6Kl/EWGbU2Yq/9u6TTjw==", - "dev": true - }, "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index 113ab9ab..bd227d51 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,7 @@ "test:coverage": "npm run test -- --coverage --coverageReporters=text --coverageReporters=text-summary", "test:ci": "npm run test:coverage -- --coverageReporters=clover --ci", "test:pretty": "npm run test:coverage -- --coverageReporters=html", - "test:verbose": "npm run test -- --verbose", - "mutate": "./node_modules/.bin/stryker run --concurrency 4 --ignoreStatic" + "test:verbose": "npm run test -- --verbose" }, "dependencies": { "@babel/preset-env": "^7.20.2", @@ -73,9 +72,6 @@ "devDependencies": { "@shlinkio/eslint-config-js-coding-standard": "~2.0.2", "@shlinkio/stylelint-config-css-coding-standard": "~1.0.1", - "@stryker-mutator/core": "^6.3.1", - "@stryker-mutator/jest-runner": "^6.3.1", - "@stryker-mutator/typescript-checker": "^6.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", @@ -103,7 +99,6 @@ "resize-observer-polyfill": "^1.5.1", "sass": "^1.57.1", "serve": "^14.1.2", - "stryker-cli": "^1.0.2", "stylelint": "^14.16.0", "ts-mockery": "^1.2.0", "typescript": "^4.9.4", From e639cd0bd21314795989d914f8c309c1acd9f12b Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Fri, 17 Feb 2023 20:27:48 +0100 Subject: [PATCH 07/11] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 433ac3b2..e2e325ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed * Updated to Vite 4.1 +* [#798](https://github.com/shlinkio/shlink-web-client/issues/798) Remove stryker and mutation testing. ### Deprecated * *Nothing* From 2a5480da79957c045cfac223d31121c80b5d73c1 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sat, 18 Feb 2023 10:40:37 +0100 Subject: [PATCH 08/11] Add import type whenever possible --- src/api/ShlinkApiError.tsx | 2 +- src/api/services/ShlinkApiClient.ts | 8 ++--- src/api/services/ShlinkApiClientBuilder.ts | 7 ++-- src/api/services/provideServices.ts | 2 +- src/api/types/index.ts | 8 ++--- src/api/utils/index.ts | 9 ++--- src/app/App.tsx | 7 ++-- src/app/services/provideServices.ts | 4 +-- src/common/AppUpdateBanner.tsx | 2 +- src/common/AsideMenu.tsx | 10 +++--- src/common/ErrorHandler.tsx | 3 +- src/common/Home.tsx | 2 +- src/common/MainHeader.tsx | 3 +- src/common/MenuLayout.tsx | 5 +-- src/common/NoMenuLayout.tsx | 2 +- src/common/NotFound.tsx | 2 +- src/common/ScrollToTop.tsx | 3 +- src/common/ShlinkVersions.tsx | 3 +- src/common/ShlinkVersionsContainer.tsx | 4 +-- src/common/SimplePaginator.tsx | 5 +-- src/common/services/HttpClient.ts | 2 +- src/common/services/ImageDownloader.ts | 2 +- src/common/services/ReportExporter.ts | 6 ++-- src/common/services/provideServices.ts | 4 +-- src/container/index.ts | 5 +-- src/container/store.ts | 7 ++-- src/container/types.ts | 36 +++++++++---------- src/domains/DomainRow.tsx | 13 +++---- src/domains/DomainSelector.tsx | 5 +-- src/domains/ManageDomains.tsx | 9 ++--- src/domains/data/index.ts | 2 +- src/domains/helpers/DomainDropdown.tsx | 9 ++--- src/domains/helpers/DomainStatusIcon.tsx | 7 ++-- .../helpers/EditDomainRedirectsModal.tsx | 10 +++--- src/domains/reducers/domainRedirects.ts | 4 +-- src/domains/reducers/domainsList.ts | 13 +++---- src/domains/services/provideServices.ts | 4 +-- src/mercure/helpers/boundToMercureHub.tsx | 7 ++-- src/mercure/helpers/index.ts | 2 +- src/mercure/reducers/mercureInfo.ts | 4 +-- src/mercure/services/provideServices.ts | 2 +- src/reducers/index.ts | 4 +-- src/servers/CreateServer.tsx | 10 +++--- src/servers/DeleteServerButton.tsx | 6 ++-- src/servers/DeleteServerModal.tsx | 5 +-- src/servers/EditServer.tsx | 5 +-- src/servers/ManageServers.tsx | 13 +++---- src/servers/ManageServersRow.tsx | 6 ++-- src/servers/ManageServersRowDropdown.tsx | 6 ++-- src/servers/Overview.tsx | 19 +++++----- src/servers/ServersDropdown.tsx | 3 +- src/servers/ServersListGroup.tsx | 4 +-- src/servers/data/index.ts | 2 +- .../helpers/DuplicatedServersModal.tsx | 5 +-- src/servers/helpers/HighlightCard.tsx | 2 +- src/servers/helpers/ImportServersBtn.tsx | 7 ++-- src/servers/helpers/ServerError.tsx | 7 ++-- src/servers/helpers/ServerForm.tsx | 5 +-- src/servers/helpers/withSelectedServer.tsx | 6 ++-- src/servers/helpers/withoutSelectedServer.tsx | 3 +- src/servers/reducers/remoteServers.ts | 5 +-- src/servers/reducers/selectedServer.ts | 10 +++--- src/servers/reducers/servers.ts | 5 +-- src/servers/services/ServersExporter.ts | 7 ++-- src/servers/services/ServersImporter.ts | 4 +-- src/servers/services/provideServices.ts | 4 +-- src/settings/RealTimeUpdatesSettings.tsx | 2 +- src/settings/Settings.tsx | 2 +- src/settings/ShortUrlCreationSettings.tsx | 4 +-- src/settings/ShortUrlsListSettings.tsx | 5 +-- src/settings/TagsSettings.tsx | 4 +-- src/settings/UserInterfaceSettings.tsx | 7 ++-- src/settings/VisitsSettings.tsx | 6 ++-- src/settings/helpers/index.ts | 2 +- src/settings/reducers/settings.ts | 11 +++--- src/settings/services/provideServices.ts | 4 +-- src/short-urls/CreateShortUrl.tsx | 15 ++++---- src/short-urls/EditShortUrl.tsx | 15 ++++---- src/short-urls/Paginator.tsx | 5 +-- src/short-urls/ShortUrlForm.tsx | 19 +++++----- src/short-urls/ShortUrlsFilteringBar.tsx | 18 +++++----- src/short-urls/ShortUrlsList.tsx | 19 +++++----- src/short-urls/ShortUrlsTable.tsx | 10 +++--- src/short-urls/data/index.ts | 4 +-- .../helpers/CreateShortUrlResult.tsx | 4 +-- .../helpers/DeleteShortUrlModal.tsx | 4 +-- src/short-urls/helpers/ExportShortUrlsBtn.tsx | 11 +++--- src/short-urls/helpers/QrCodeModal.tsx | 9 ++--- src/short-urls/helpers/ShortUrlDetailLink.tsx | 7 ++-- .../helpers/ShortUrlFormCheckboxGroup.tsx | 2 +- src/short-urls/helpers/ShortUrlStatus.tsx | 6 ++-- .../helpers/ShortUrlVisitsCount.tsx | 4 +-- .../helpers/ShortUrlsFilterDropdown.tsx | 2 +- src/short-urls/helpers/ShortUrlsRow.tsx | 15 ++++---- src/short-urls/helpers/ShortUrlsRowMenu.tsx | 6 ++-- src/short-urls/helpers/Tags.tsx | 4 +-- src/short-urls/helpers/hooks.ts | 7 ++-- src/short-urls/helpers/index.ts | 6 ++-- .../qr-codes/QrErrorCorrectionDropdown.tsx | 4 +-- .../helpers/qr-codes/QrFormatDropdown.tsx | 4 +-- src/short-urls/reducers/shortUrlCreation.ts | 9 ++--- src/short-urls/reducers/shortUrlDeletion.ts | 6 ++-- src/short-urls/reducers/shortUrlDetail.ts | 9 ++--- src/short-urls/reducers/shortUrlEdition.ts | 9 ++--- src/short-urls/reducers/shortUrlsList.ts | 10 +++--- src/short-urls/services/provideServices.ts | 4 +-- src/tags/TagsList.tsx | 16 +++++---- src/tags/TagsTable.tsx | 7 ++-- src/tags/TagsTableRow.tsx | 9 ++--- src/tags/data/TagsListChildrenProps.ts | 6 ++-- src/tags/helpers/DeleteTagConfirmModal.tsx | 4 +-- src/tags/helpers/EditTagModal.tsx | 6 ++-- src/tags/helpers/Tag.tsx | 4 +-- src/tags/helpers/TagBullet.tsx | 2 +- src/tags/helpers/TagsSelector.tsx | 9 ++--- src/tags/reducers/tagDelete.ts | 4 +-- src/tags/reducers/tagEdit.ts | 9 ++--- src/tags/reducers/tagsList.ts | 12 +++---- src/tags/services/provideServices.ts | 5 +-- src/utils/BooleanControl.tsx | 2 +- src/utils/Checkbox.tsx | 5 +-- src/utils/CopyToClipboardIcon.tsx | 2 +- src/utils/DropdownBtn.tsx | 2 +- src/utils/DropdownBtnMenu.tsx | 2 +- src/utils/ExportBtn.tsx | 5 +-- src/utils/InfoTooltip.tsx | 4 +-- src/utils/Message.tsx | 2 +- src/utils/NavPills.tsx | 3 +- src/utils/OrderingDropdown.tsx | 3 +- src/utils/Result.tsx | 2 +- src/utils/SimpleCard.tsx | 5 +-- src/utils/ToggleSwitch.tsx | 5 +-- src/utils/dates/DateInput.tsx | 3 +- src/utils/dates/DateIntervalDropdownItems.tsx | 5 +-- src/utils/dates/DateIntervalSelector.tsx | 5 +-- src/utils/dates/DateRangeRow.tsx | 2 +- src/utils/dates/DateRangeSelector.tsx | 5 +-- src/utils/dates/DateTimeInput.tsx | 4 +-- src/utils/forms/FormText.tsx | 2 +- src/utils/forms/InputFormGroup.tsx | 4 +-- src/utils/forms/LabeledFormGroup.tsx | 2 +- src/utils/helpers/charts.ts | 2 +- src/utils/helpers/date.ts | 2 +- src/utils/helpers/dateIntervals.ts | 3 +- src/utils/helpers/features.ts | 6 ++-- src/utils/helpers/hooks.ts | 3 +- src/utils/helpers/redux.ts | 5 +-- src/utils/helpers/version.ts | 3 +- src/utils/helpers/visits.ts | 5 +-- src/utils/services/ColorGenerator.ts | 2 +- src/utils/services/provideServices.ts | 2 +- src/utils/table/TableOrderIcon.tsx | 2 +- src/utils/utils.ts | 2 +- src/visits/DomainVisits.tsx | 10 +++--- src/visits/NonOrphanVisits.tsx | 8 ++--- src/visits/OrphanVisits.tsx | 10 +++--- src/visits/ShortUrlVisits.tsx | 12 +++---- src/visits/ShortUrlVisitsHeader.tsx | 4 +-- src/visits/TagVisits.tsx | 12 +++---- src/visits/TagVisitsHeader.tsx | 4 +-- src/visits/VisitsHeader.tsx | 6 ++-- src/visits/VisitsStats.tsx | 17 +++++---- src/visits/VisitsTable.tsx | 7 ++-- src/visits/charts/ChartCard.tsx | 2 +- src/visits/charts/DoughnutChart.tsx | 7 ++-- src/visits/charts/DoughnutChartCard.tsx | 4 +-- src/visits/charts/DoughnutChartLegend.tsx | 4 +-- src/visits/charts/HorizontalBarChart.tsx | 7 ++-- src/visits/charts/LineChartCard.tsx | 7 ++-- src/visits/charts/SortableBarChartCard.tsx | 10 +++--- src/visits/helpers/MapModal.tsx | 7 ++-- src/visits/helpers/OpenMapModalBtn.tsx | 2 +- src/visits/helpers/VisitsFilterDropdown.tsx | 5 +-- src/visits/helpers/hooks.ts | 10 +++--- src/visits/reducers/common.ts | 11 +++--- src/visits/reducers/domainVisits.ts | 4 +-- src/visits/reducers/nonOrphanVisits.ts | 4 +-- src/visits/reducers/orphanVisits.ts | 6 ++-- src/visits/reducers/shortUrlVisits.ts | 6 ++-- src/visits/reducers/tagVisits.ts | 4 +-- src/visits/reducers/types/index.ts | 8 ++--- src/visits/reducers/visitCreation.ts | 5 +-- src/visits/reducers/visitsOverview.ts | 7 ++-- src/visits/services/VisitsParser.ts | 2 +- src/visits/services/provideServices.ts | 4 +-- src/visits/types/CommonVisitsProps.ts | 2 +- src/visits/types/helpers.ts | 4 +-- src/visits/types/index.ts | 4 +-- test/__helpers__/TestModalWrapper.tsx | 2 +- test/__helpers__/setUpTest.ts | 2 +- test/api/ShlinkApiError.test.tsx | 6 ++-- test/api/services/ShlinkApiClient.test.ts | 8 ++--- .../services/ShlinkApiClientBuilder.test.ts | 6 ++-- test/app/App.test.tsx | 2 +- test/common/AsideMenu.test.tsx | 2 +- test/common/Home.test.tsx | 2 +- test/common/MenuLayout.test.tsx | 4 +-- test/common/ShlinkVersions.test.tsx | 5 +-- test/common/ShlinkVersionsContainer.test.tsx | 4 +-- test/common/img/ShlinkLogo.test.tsx | 3 +- test/common/services/ImageDownloader.test.ts | 2 +- test/common/services/ReportExporter.test.ts | 4 +-- test/domains/DomainRow.test.tsx | 6 ++-- test/domains/DomainSelector.test.tsx | 4 +-- test/domains/ManageDomains.test.tsx | 8 ++--- test/domains/helpers/DomainDropdown.test.tsx | 6 ++-- .../domains/helpers/DomainStatusIcon.test.tsx | 2 +- .../helpers/EditDomainRedirectsModal.test.tsx | 2 +- test/domains/reducers/domainRedirects.test.ts | 7 ++-- test/domains/reducers/domainsList.test.ts | 13 +++---- test/mercure/helpers/index.test.tsx | 2 +- test/mercure/reducers/mercureInfo.test.ts | 4 +-- test/servers/CreateServer.test.tsx | 2 +- test/servers/DeleteServerButton.test.tsx | 4 +-- test/servers/DeleteServerModal.test.tsx | 2 +- test/servers/EditServer.test.tsx | 2 +- test/servers/ManageServers.test.tsx | 4 +-- test/servers/ManageServersRow.test.tsx | 2 +- .../servers/ManageServersRowDropdown.test.tsx | 2 +- test/servers/Overview.test.tsx | 10 +++--- test/servers/ServersDropdown.test.tsx | 2 +- test/servers/ServersListGroup.test.tsx | 2 +- .../helpers/DuplicatedServersModal.test.tsx | 2 +- test/servers/helpers/HighlightCard.test.tsx | 5 +-- .../servers/helpers/ImportServersBtn.test.tsx | 7 ++-- test/servers/helpers/ServerError.test.tsx | 2 +- test/servers/reducers/remoteServers.test.ts | 2 +- test/servers/reducers/selectedServer.test.ts | 6 ++-- test/servers/reducers/servers.test.ts | 2 +- test/servers/services/ServersExporter.test.ts | 2 +- test/servers/services/ServersImporter.test.ts | 2 +- .../settings/RealTimeUpdatesSettings.test.tsx | 2 +- .../ShortUrlCreationSettings.test.tsx | 2 +- test/settings/ShortUrlsListSettings.test.tsx | 4 +-- test/settings/TagsSettings.test.tsx | 4 +-- test/settings/UserInterfaceSettings.test.tsx | 4 +-- test/settings/VisitsSettings.test.tsx | 2 +- test/settings/helpers/index.test.ts | 2 +- test/short-urls/CreateShortUrl.test.tsx | 4 +-- test/short-urls/EditShortUrl.test.tsx | 8 ++--- test/short-urls/Paginator.test.tsx | 2 +- test/short-urls/ShortUrlForm.test.tsx | 9 ++--- .../short-urls/ShortUrlsFilteringBar.test.tsx | 6 ++-- test/short-urls/ShortUrlsList.test.tsx | 14 ++++---- test/short-urls/ShortUrlsTable.test.tsx | 7 ++-- .../helpers/CreateShortUrlResult.test.tsx | 6 ++-- .../helpers/DeleteShortUrlModal.test.tsx | 7 ++-- .../helpers/ExportShortUrlsBtn.test.tsx | 4 +-- test/short-urls/helpers/QrCodeModal.test.tsx | 8 ++--- .../helpers/ShortUrlDetailLink.test.tsx | 7 ++-- .../helpers/ShortUrlStatus.test.tsx | 2 +- .../helpers/ShortUrlVisitsCount.test.tsx | 2 +- test/short-urls/helpers/ShortUrlsRow.test.tsx | 10 +++--- .../helpers/ShortUrlsRowMenu.test.tsx | 4 +-- test/short-urls/helpers/index.test.ts | 2 +- .../QrErrorCorrectionDropdown.test.tsx | 2 +- .../qr-codes/QrFormatDropdown.test.tsx | 2 +- .../reducers/shortUrlCreation.test.ts | 9 ++--- .../reducers/shortUrlDeletion.test.ts | 4 +-- .../reducers/shortUrlDetail.test.ts | 11 +++--- .../reducers/shortUrlEdition.test.ts | 9 ++--- .../short-urls/reducers/shortUrlsList.test.ts | 6 ++-- test/tags/TagsList.test.tsx | 9 ++--- test/tags/TagsTable.test.tsx | 4 +-- test/tags/TagsTableRow.test.tsx | 2 +- .../helpers/DeleteTagConfirmModal.test.tsx | 2 +- test/tags/helpers/EditTagModal.test.tsx | 6 ++-- test/tags/helpers/Tag.test.tsx | 4 +-- test/tags/helpers/TagsSelector.test.tsx | 4 +-- test/tags/reducers/tagDelete.test.ts | 4 +-- test/tags/reducers/tagEdit.test.ts | 9 ++--- test/tags/reducers/tagsList.test.ts | 7 ++-- test/utils/DropdownBtn.test.tsx | 5 +-- test/utils/DropdownBtnMenu.test.tsx | 3 +- test/utils/InfoTooltip.test.tsx | 5 +-- test/utils/Message.test.tsx | 5 +-- test/utils/OrderingDropdown.test.tsx | 5 +-- test/utils/Result.test.tsx | 3 +- test/utils/dates/DateInput.test.tsx | 3 +- .../dates/DateIntervalDropdownItems.test.tsx | 3 +- .../utils/dates/DateIntervalSelector.test.tsx | 3 +- test/utils/dates/DateRangeSelector.test.tsx | 5 +-- test/utils/dates/Time.test.tsx | 3 +- test/utils/helpers/dateIntervals.test.ts | 3 +- test/utils/helpers/ordering.test.ts | 3 +- test/utils/helpers/qrCodes.test.ts | 3 +- test/utils/helpers/version.test.ts | 5 +-- test/utils/services/ColorGenerator.test.ts | 2 +- .../services/__mocks__/ColorGenerator.mock.ts | 2 +- test/utils/table/TableOrderIcon.test.tsx | 2 +- test/visits/DomainVisits.test.tsx | 10 +++--- test/visits/NonOrphanVisits.test.tsx | 10 +++--- test/visits/OrphanVisits.test.tsx | 10 +++--- test/visits/ShortUrlVisits.test.tsx | 15 ++++---- test/visits/ShortUrlVisitsHeader.test.tsx | 4 +-- test/visits/TagVisits.test.tsx | 15 ++++---- test/visits/TagVisitsHeader.test.tsx | 4 +-- test/visits/VisitsHeader.test.tsx | 2 +- test/visits/VisitsStats.test.tsx | 6 ++-- test/visits/VisitsTable.test.tsx | 5 +-- test/visits/charts/ChartCard.test.tsx | 2 +- .../charts/DoughnutChartLegend.test.tsx | 2 +- .../visits/charts/HorizontalBarChart.test.tsx | 3 +- test/visits/charts/LineChartCard.test.tsx | 2 +- .../charts/SortableBarChartCard.test.tsx | 4 +-- test/visits/helpers/MapModal.test.tsx | 2 +- test/visits/helpers/OpenMapModalBtn.test.tsx | 2 +- .../helpers/VisitsFilterDropdown.test.tsx | 2 +- test/visits/reducers/domainVisits.test.ts | 15 ++++---- test/visits/reducers/nonOrphanVisits.test.ts | 12 +++---- test/visits/reducers/orphanVisits.test.ts | 12 +++---- test/visits/reducers/shortUrlVisits.test.ts | 13 +++---- test/visits/reducers/tagVisits.test.ts | 13 +++---- test/visits/reducers/visitCreation.test.ts | 4 +-- test/visits/reducers/visitsOverview.test.ts | 16 +++++---- test/visits/services/VisitsParser.test.ts | 2 +- test/visits/types/helpers.test.ts | 7 ++-- 317 files changed, 955 insertions(+), 807 deletions(-) diff --git a/src/api/ShlinkApiError.tsx b/src/api/ShlinkApiError.tsx index 6b78da38..2277165a 100644 --- a/src/api/ShlinkApiError.tsx +++ b/src/api/ShlinkApiError.tsx @@ -1,5 +1,5 @@ import { isInvalidArgumentError } from './utils'; -import { ProblemDetailsError } from './types/errors'; +import type { ProblemDetailsError } from './types/errors'; export interface ShlinkApiErrorProps { errorData?: ProblemDetailsError; diff --git a/src/api/services/ShlinkApiClient.ts b/src/api/services/ShlinkApiClient.ts index d3f1626b..3d160d36 100644 --- a/src/api/services/ShlinkApiClient.ts +++ b/src/api/services/ShlinkApiClient.ts @@ -1,7 +1,7 @@ import { isEmpty, isNil, reject } from 'ramda'; -import { ShortUrl, ShortUrlData } from '../../short-urls/data'; -import { OptionalString } from '../../utils/utils'; -import { +import type { ShortUrl, ShortUrlData } from '../../short-urls/data'; +import type { OptionalString } from '../../utils/utils'; +import type { ShlinkHealth, ShlinkMercureInfo, ShlinkShortUrlsResponse, @@ -20,7 +20,7 @@ import { import { orderToString } from '../../utils/helpers/ordering'; import { isRegularNotFound, parseApiError } from '../utils'; import { stringifyQuery } from '../../utils/helpers/query'; -import { HttpClient } from '../../common/services/HttpClient'; +import type { HttpClient } from '../../common/services/HttpClient'; const buildShlinkBaseUrl = (url: string, version: 2 | 3) => `${url}/rest/v${version}`; const rejectNilProps = reject(isNil); diff --git a/src/api/services/ShlinkApiClientBuilder.ts b/src/api/services/ShlinkApiClientBuilder.ts index ef74356a..0bc7c98f 100644 --- a/src/api/services/ShlinkApiClientBuilder.ts +++ b/src/api/services/ShlinkApiClientBuilder.ts @@ -1,7 +1,8 @@ -import { hasServerData, ServerWithId } from '../../servers/data'; -import { GetState } from '../../container/types'; +import type { ServerWithId } from '../../servers/data'; +import { hasServerData } from '../../servers/data'; +import type { GetState } from '../../container/types'; import { ShlinkApiClient } from './ShlinkApiClient'; -import { HttpClient } from '../../common/services/HttpClient'; +import type { HttpClient } from '../../common/services/HttpClient'; const apiClients: Record = {}; diff --git a/src/api/services/provideServices.ts b/src/api/services/provideServices.ts index c8bcd854..b541006c 100644 --- a/src/api/services/provideServices.ts +++ b/src/api/services/provideServices.ts @@ -1,4 +1,4 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { buildShlinkApiClient } from './ShlinkApiClientBuilder'; const provideServices = (bottle: Bottle) => { diff --git a/src/api/types/index.ts b/src/api/types/index.ts index ef51e9b2..a1c8d028 100644 --- a/src/api/types/index.ts +++ b/src/api/types/index.ts @@ -1,7 +1,7 @@ -import { Visit } from '../../visits/types'; -import { OptionalString } from '../../utils/utils'; -import { ShortUrl, ShortUrlMeta } from '../../short-urls/data'; -import { Order } from '../../utils/helpers/ordering'; +import type { Visit } from '../../visits/types'; +import type { OptionalString } from '../../utils/utils'; +import type { ShortUrl, ShortUrlMeta } from '../../short-urls/data'; +import type { Order } from '../../utils/helpers/ordering'; export interface ShlinkShortUrlsResponse { data: ShortUrl[]; diff --git a/src/api/utils/index.ts b/src/api/utils/index.ts index 4d60a21e..f9af97fe 100644 --- a/src/api/utils/index.ts +++ b/src/api/utils/index.ts @@ -1,10 +1,11 @@ -import { - ErrorTypeV2, - ErrorTypeV3, +import type { InvalidArgumentError, InvalidShortUrlDeletion, ProblemDetailsError, - RegularNotFound, + RegularNotFound } from '../types/errors'; +import { + ErrorTypeV2, + ErrorTypeV3, } from '../types/errors'; const isProblemDetails = (e: unknown): e is ProblemDetailsError => diff --git a/src/app/App.tsx b/src/app/App.tsx index 457a50d7..c3f68a9e 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1,9 +1,10 @@ -import { useEffect, FC } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { Route, Routes, useLocation } from 'react-router-dom'; import classNames from 'classnames'; import { NotFound } from '../common/NotFound'; -import { ServersMap } from '../servers/data'; -import { Settings } from '../settings/reducers/settings'; +import type { ServersMap } from '../servers/data'; +import type { Settings } from '../settings/reducers/settings'; import { changeThemeInMarkup } from '../utils/theme'; import { AppUpdateBanner } from '../common/AppUpdateBanner'; import { forceUpdate } from '../utils/helpers/sw'; diff --git a/src/app/services/provideServices.ts b/src/app/services/provideServices.ts index a69d6cbc..f04b87b6 100644 --- a/src/app/services/provideServices.ts +++ b/src/app/services/provideServices.ts @@ -1,7 +1,7 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { appUpdateAvailable, resetAppUpdate } from '../reducers/appUpdates'; import { App } from '../App'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; const provideServices = (bottle: Bottle, connect: ConnectDecorator) => { // Components diff --git a/src/common/AppUpdateBanner.tsx b/src/common/AppUpdateBanner.tsx index 300679c7..553e3d8d 100644 --- a/src/common/AppUpdateBanner.tsx +++ b/src/common/AppUpdateBanner.tsx @@ -1,4 +1,4 @@ -import { FC, MouseEventHandler } from 'react'; +import type { FC, MouseEventHandler } from 'react'; import { Alert, Button } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSyncAlt as reloadIcon } from '@fortawesome/free-solid-svg-icons'; diff --git a/src/common/AsideMenu.tsx b/src/common/AsideMenu.tsx index b8ae44f8..25a09418 100644 --- a/src/common/AsideMenu.tsx +++ b/src/common/AsideMenu.tsx @@ -7,11 +7,13 @@ import { faGlobe as domainsIcon, } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { FC } from 'react'; -import { NavLink, NavLinkProps, useLocation } from 'react-router-dom'; +import type { FC } from 'react'; +import type { NavLinkProps } from 'react-router-dom'; +import { NavLink, useLocation } from 'react-router-dom'; import classNames from 'classnames'; -import { DeleteServerButtonProps } from '../servers/DeleteServerButton'; -import { isServerWithId, SelectedServer } from '../servers/data'; +import type { DeleteServerButtonProps } from '../servers/DeleteServerButton'; +import type { SelectedServer } from '../servers/data'; +import { isServerWithId } from '../servers/data'; import './AsideMenu.scss'; export interface AsideMenuProps { diff --git a/src/common/ErrorHandler.tsx b/src/common/ErrorHandler.tsx index 0a23968b..f01178cc 100644 --- a/src/common/ErrorHandler.tsx +++ b/src/common/ErrorHandler.tsx @@ -1,4 +1,5 @@ -import { Component, ReactNode } from 'react'; +import type { ReactNode } from 'react'; +import { Component } from 'react'; import { Button } from 'reactstrap'; import { SimpleCard } from '../utils/SimpleCard'; diff --git a/src/common/Home.tsx b/src/common/Home.tsx index 018f9ce3..74570e2a 100644 --- a/src/common/Home.tsx +++ b/src/common/Home.tsx @@ -6,7 +6,7 @@ import { ExternalLink } from 'react-external-link'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faExternalLinkAlt, faPlus } from '@fortawesome/free-solid-svg-icons'; import { ServersListGroup } from '../servers/ServersListGroup'; -import { ServersMap } from '../servers/data'; +import type { ServersMap } from '../servers/data'; import { ShlinkLogo } from './img/ShlinkLogo'; import './Home.scss'; diff --git a/src/common/MainHeader.tsx b/src/common/MainHeader.tsx index 29c6f41c..1d07f698 100644 --- a/src/common/MainHeader.tsx +++ b/src/common/MainHeader.tsx @@ -1,6 +1,7 @@ import { faChevronDown as arrowIcon, faCogs as cogsIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { Collapse, Nav, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap'; import classNames from 'classnames'; diff --git a/src/common/MenuLayout.tsx b/src/common/MenuLayout.tsx index 58f7da2d..a1c441f5 100644 --- a/src/common/MenuLayout.tsx +++ b/src/common/MenuLayout.tsx @@ -1,4 +1,5 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; import { faBars as burgerIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -8,7 +9,7 @@ import { useSwipeable, useToggle } from '../utils/helpers/hooks'; import { supportsDomainVisits, supportsNonOrphanVisits } from '../utils/helpers/features'; import { isReachableServer } from '../servers/data'; import { NotFound } from './NotFound'; -import { AsideMenuProps } from './AsideMenu'; +import type { AsideMenuProps } from './AsideMenu'; import './MenuLayout.scss'; interface MenuLayoutProps { diff --git a/src/common/NoMenuLayout.tsx b/src/common/NoMenuLayout.tsx index 9e44c15b..e853774d 100644 --- a/src/common/NoMenuLayout.tsx +++ b/src/common/NoMenuLayout.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import './NoMenuLayout.scss'; export const NoMenuLayout: FC> = ({ children }) => ( diff --git a/src/common/NotFound.tsx b/src/common/NotFound.tsx index 76926d5d..2e5660cc 100644 --- a/src/common/NotFound.tsx +++ b/src/common/NotFound.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { Link } from 'react-router-dom'; import { SimpleCard } from '../utils/SimpleCard'; diff --git a/src/common/ScrollToTop.tsx b/src/common/ScrollToTop.tsx index 0fbdda39..33f4bb3a 100644 --- a/src/common/ScrollToTop.tsx +++ b/src/common/ScrollToTop.tsx @@ -1,4 +1,5 @@ -import { FC, PropsWithChildren, useEffect } from 'react'; +import type { FC, PropsWithChildren } from 'react'; +import { useEffect } from 'react'; import { useLocation } from 'react-router-dom'; export const ScrollToTop: FC> = ({ children }) => { diff --git a/src/common/ShlinkVersions.tsx b/src/common/ShlinkVersions.tsx index e750b25f..18c1a6c8 100644 --- a/src/common/ShlinkVersions.tsx +++ b/src/common/ShlinkVersions.tsx @@ -1,7 +1,8 @@ import { pipe } from 'ramda'; import { ExternalLink } from 'react-external-link'; import { versionToPrintable, versionToSemVer } from '../utils/helpers/version'; -import { isReachableServer, SelectedServer } from '../servers/data'; +import type { SelectedServer } from '../servers/data'; +import { isReachableServer } from '../servers/data'; const SHLINK_WEB_CLIENT_VERSION = '%_VERSION_%'; const normalizeVersion = pipe(versionToSemVer(), versionToPrintable); diff --git a/src/common/ShlinkVersionsContainer.tsx b/src/common/ShlinkVersionsContainer.tsx index 0cdf8405..d6afcf45 100644 --- a/src/common/ShlinkVersionsContainer.tsx +++ b/src/common/ShlinkVersionsContainer.tsx @@ -1,7 +1,7 @@ import classNames from 'classnames'; -import { SelectedServer } from '../servers/data'; +import type { SelectedServer } from '../servers/data'; import { ShlinkVersions } from './ShlinkVersions'; -import { Sidebar } from './reducers/sidebar'; +import type { Sidebar } from './reducers/sidebar'; import './ShlinkVersionsContainer.scss'; export interface ShlinkVersionsContainerProps { diff --git a/src/common/SimplePaginator.tsx b/src/common/SimplePaginator.tsx index 9ebc2ef4..3c3cfeab 100644 --- a/src/common/SimplePaginator.tsx +++ b/src/common/SimplePaginator.tsx @@ -1,10 +1,11 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import classNames from 'classnames'; import { Pagination, PaginationItem, PaginationLink } from 'reactstrap'; +import type { + NumberOrEllipsis } from '../utils/helpers/pagination'; import { pageIsEllipsis, keyForPage, - NumberOrEllipsis, progressivePagination, prettifyPageNumber, } from '../utils/helpers/pagination'; diff --git a/src/common/services/HttpClient.ts b/src/common/services/HttpClient.ts index 9a07cfea..d43cb031 100644 --- a/src/common/services/HttpClient.ts +++ b/src/common/services/HttpClient.ts @@ -1,4 +1,4 @@ -import { Fetch } from '../../utils/types'; +import type { Fetch } from '../../utils/types'; const applicationJsonHeader = { 'Content-Type': 'application/json' }; const withJsonContentType = (options?: RequestInit): RequestInit | undefined => { diff --git a/src/common/services/ImageDownloader.ts b/src/common/services/ImageDownloader.ts index 39314d7e..780de082 100644 --- a/src/common/services/ImageDownloader.ts +++ b/src/common/services/ImageDownloader.ts @@ -1,5 +1,5 @@ import { saveUrl } from '../../utils/helpers/files'; -import { HttpClient } from './HttpClient'; +import type { HttpClient } from './HttpClient'; export class ImageDownloader { public constructor(private readonly httpClient: HttpClient, private readonly window: Window) {} diff --git a/src/common/services/ReportExporter.ts b/src/common/services/ReportExporter.ts index 8976e9d9..d929b8f7 100644 --- a/src/common/services/ReportExporter.ts +++ b/src/common/services/ReportExporter.ts @@ -1,7 +1,7 @@ -import { NormalizedVisit } from '../../visits/types'; -import { ExportableShortUrl } from '../../short-urls/data'; +import type { NormalizedVisit } from '../../visits/types'; +import type { ExportableShortUrl } from '../../short-urls/data'; import { saveCsv } from '../../utils/helpers/files'; -import { JsonToCsv } from '../../utils/helpers/csvjson'; +import type { JsonToCsv } from '../../utils/helpers/csvjson'; export class ReportExporter { public constructor(private readonly window: Window, private readonly jsonToCsv: JsonToCsv) {} diff --git a/src/common/services/provideServices.ts b/src/common/services/provideServices.ts index 88a68575..918e080f 100644 --- a/src/common/services/provideServices.ts +++ b/src/common/services/provideServices.ts @@ -1,4 +1,4 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { ScrollToTop } from '../ScrollToTop'; import { MainHeader } from '../MainHeader'; import { Home } from '../Home'; @@ -6,7 +6,7 @@ import { MenuLayout } from '../MenuLayout'; import { AsideMenu } from '../AsideMenu'; import { ErrorHandler } from '../ErrorHandler'; import { ShlinkVersionsContainer } from '../ShlinkVersionsContainer'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; import { withoutSelectedServer } from '../../servers/helpers/withoutSelectedServer'; import { sidebarNotPresent, sidebarPresent } from '../reducers/sidebar'; import { ImageDownloader } from './ImageDownloader'; diff --git a/src/container/index.ts b/src/container/index.ts index 4618d561..86ea418e 100644 --- a/src/container/index.ts +++ b/src/container/index.ts @@ -1,4 +1,5 @@ -import Bottle, { IContainer } from 'bottlejs'; +import type { IContainer } from 'bottlejs'; +import Bottle from 'bottlejs'; import { connect as reduxConnect } from 'react-redux'; import { pick } from 'ramda'; import provideApiServices from '../api/services/provideServices'; @@ -12,7 +13,7 @@ import provideMercureServices from '../mercure/services/provideServices'; import provideSettingsServices from '../settings/services/provideServices'; import provideDomainsServices from '../domains/services/provideServices'; import provideAppServices from '../app/services/provideServices'; -import { ConnectDecorator } from './types'; +import type { ConnectDecorator } from './types'; type LazyActionMap = Record; diff --git a/src/container/store.ts b/src/container/store.ts index 590c8382..1fab3d92 100644 --- a/src/container/store.ts +++ b/src/container/store.ts @@ -1,9 +1,10 @@ -import { IContainer } from 'bottlejs'; -import { save, load, RLSOptions } from 'redux-localstorage-simple'; +import type { IContainer } from 'bottlejs'; +import type { RLSOptions } from 'redux-localstorage-simple'; +import { save, load } from 'redux-localstorage-simple'; import { configureStore } from '@reduxjs/toolkit'; import reducer from '../reducers'; import { migrateDeprecatedSettings } from '../settings/helpers'; -import { ShlinkState } from './types'; +import type { ShlinkState } from './types'; const isProduction = process.env.NODE_ENV === 'production'; const localStorageConfig: RLSOptions = { diff --git a/src/container/types.ts b/src/container/types.ts index 3be8ee4c..8013b405 100644 --- a/src/container/types.ts +++ b/src/container/types.ts @@ -1,21 +1,21 @@ -import { MercureInfo } from '../mercure/reducers/mercureInfo'; -import { SelectedServer, ServersMap } from '../servers/data'; -import { Settings } from '../settings/reducers/settings'; -import { ShortUrlCreation } from '../short-urls/reducers/shortUrlCreation'; -import { ShortUrlDeletion } from '../short-urls/reducers/shortUrlDeletion'; -import { ShortUrlEdition } from '../short-urls/reducers/shortUrlEdition'; -import { ShortUrlsList } from '../short-urls/reducers/shortUrlsList'; -import { TagDeletion } from '../tags/reducers/tagDelete'; -import { TagEdition } from '../tags/reducers/tagEdit'; -import { TagsList } from '../tags/reducers/tagsList'; -import { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail'; -import { ShortUrlVisits } from '../visits/reducers/shortUrlVisits'; -import { TagVisits } from '../visits/reducers/tagVisits'; -import { DomainsList } from '../domains/reducers/domainsList'; -import { VisitsOverview } from '../visits/reducers/visitsOverview'; -import { Sidebar } from '../common/reducers/sidebar'; -import { DomainVisits } from '../visits/reducers/domainVisits'; -import { VisitsInfo } from '../visits/reducers/types'; +import type { MercureInfo } from '../mercure/reducers/mercureInfo'; +import type { SelectedServer, ServersMap } from '../servers/data'; +import type { Settings } from '../settings/reducers/settings'; +import type { ShortUrlCreation } from '../short-urls/reducers/shortUrlCreation'; +import type { ShortUrlDeletion } from '../short-urls/reducers/shortUrlDeletion'; +import type { ShortUrlEdition } from '../short-urls/reducers/shortUrlEdition'; +import type { ShortUrlsList } from '../short-urls/reducers/shortUrlsList'; +import type { TagDeletion } from '../tags/reducers/tagDelete'; +import type { TagEdition } from '../tags/reducers/tagEdit'; +import type { TagsList } from '../tags/reducers/tagsList'; +import type { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail'; +import type { ShortUrlVisits } from '../visits/reducers/shortUrlVisits'; +import type { TagVisits } from '../visits/reducers/tagVisits'; +import type { DomainsList } from '../domains/reducers/domainsList'; +import type { VisitsOverview } from '../visits/reducers/visitsOverview'; +import type { Sidebar } from '../common/reducers/sidebar'; +import type { DomainVisits } from '../visits/reducers/domainVisits'; +import type { VisitsInfo } from '../visits/reducers/types'; export interface ShlinkState { servers: ServersMap; diff --git a/src/domains/DomainRow.tsx b/src/domains/DomainRow.tsx index e57b0f36..429a4ee5 100644 --- a/src/domains/DomainRow.tsx +++ b/src/domains/DomainRow.tsx @@ -1,14 +1,15 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { UncontrolledTooltip } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faDotCircle as defaultDomainIcon } from '@fortawesome/free-solid-svg-icons'; -import { ShlinkDomainRedirects } from '../api/types'; -import { OptionalString } from '../utils/utils'; -import { SelectedServer } from '../servers/data'; -import { Domain } from './data'; +import type { ShlinkDomainRedirects } from '../api/types'; +import type { OptionalString } from '../utils/utils'; +import type { SelectedServer } from '../servers/data'; +import type { Domain } from './data'; import { DomainStatusIcon } from './helpers/DomainStatusIcon'; import { DomainDropdown } from './helpers/DomainDropdown'; -import { EditDomainRedirects } from './reducers/domainRedirects'; +import type { EditDomainRedirects } from './reducers/domainRedirects'; interface DomainRowProps { domain: Domain; diff --git a/src/domains/DomainSelector.tsx b/src/domains/DomainSelector.tsx index 0c8671b4..14084a79 100644 --- a/src/domains/DomainSelector.tsx +++ b/src/domains/DomainSelector.tsx @@ -1,11 +1,12 @@ import { useEffect } from 'react'; -import { Button, DropdownItem, Input, InputGroup, UncontrolledTooltip, InputProps } from 'reactstrap'; +import type { InputProps } from 'reactstrap'; +import { Button, DropdownItem, Input, InputGroup, UncontrolledTooltip } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faUndo } from '@fortawesome/free-solid-svg-icons'; import { isEmpty, pipe } from 'ramda'; import { DropdownBtn } from '../utils/DropdownBtn'; import { useToggle } from '../utils/helpers/hooks'; -import { DomainsList } from './reducers/domainsList'; +import type { DomainsList } from './reducers/domainsList'; import './DomainSelector.scss'; export interface DomainSelectorProps extends Omit { diff --git a/src/domains/ManageDomains.tsx b/src/domains/ManageDomains.tsx index f7c52992..de3f9e5e 100644 --- a/src/domains/ManageDomains.tsx +++ b/src/domains/ManageDomains.tsx @@ -1,12 +1,13 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { Message } from '../utils/Message'; import { Result } from '../utils/Result'; import { ShlinkApiError } from '../api/ShlinkApiError'; import { SimpleCard } from '../utils/SimpleCard'; import { SearchField } from '../utils/SearchField'; -import { EditDomainRedirects } from './reducers/domainRedirects'; -import { SelectedServer } from '../servers/data'; -import { DomainsList } from './reducers/domainsList'; +import type { EditDomainRedirects } from './reducers/domainRedirects'; +import type { SelectedServer } from '../servers/data'; +import type { DomainsList } from './reducers/domainsList'; import { DomainRow } from './DomainRow'; interface ManageDomainsProps { diff --git a/src/domains/data/index.ts b/src/domains/data/index.ts index e427d87d..a6600f15 100644 --- a/src/domains/data/index.ts +++ b/src/domains/data/index.ts @@ -1,4 +1,4 @@ -import { ShlinkDomain } from '../../api/types'; +import type { ShlinkDomain } from '../../api/types'; export type DomainStatus = 'validating' | 'valid' | 'invalid'; diff --git a/src/domains/helpers/DomainDropdown.tsx b/src/domains/helpers/DomainDropdown.tsx index a91b40a8..b6d101fe 100644 --- a/src/domains/helpers/DomainDropdown.tsx +++ b/src/domains/helpers/DomainDropdown.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { DropdownItem } from 'reactstrap'; import { Link } from 'react-router-dom'; import { faChartPie as pieChartIcon, faEdit as editIcon } from '@fortawesome/free-solid-svg-icons'; @@ -6,10 +6,11 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useToggle } from '../../utils/helpers/hooks'; import { DropdownBtnMenu } from '../../utils/DropdownBtnMenu'; import { EditDomainRedirectsModal } from './EditDomainRedirectsModal'; -import { Domain } from '../data'; -import { EditDomainRedirects } from '../reducers/domainRedirects'; +import type { Domain } from '../data'; +import type { EditDomainRedirects } from '../reducers/domainRedirects'; import { supportsDefaultDomainRedirectsEdition, supportsDomainVisits } from '../../utils/helpers/features'; -import { getServerId, SelectedServer } from '../../servers/data'; +import type { SelectedServer } from '../../servers/data'; +import { getServerId } from '../../servers/data'; import { DEFAULT_DOMAIN } from '../../visits/reducers/domainVisits'; interface DomainDropdownProps { diff --git a/src/domains/helpers/DomainStatusIcon.tsx b/src/domains/helpers/DomainStatusIcon.tsx index 7a1e6ded..6dba2f6c 100644 --- a/src/domains/helpers/DomainStatusIcon.tsx +++ b/src/domains/helpers/DomainStatusIcon.tsx @@ -1,4 +1,5 @@ -import { FC, useEffect, useState } from 'react'; +import type { FC } from 'react'; +import { useEffect, useState } from 'react'; import { UncontrolledTooltip } from 'reactstrap'; import { ExternalLink } from 'react-external-link'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -7,8 +8,8 @@ import { faCheck as checkIcon, faCircleNotch as loadingStatusIcon, } from '@fortawesome/free-solid-svg-icons'; -import { MediaMatcher } from '../../utils/types'; -import { DomainStatus } from '../data'; +import type { MediaMatcher } from '../../utils/types'; +import type { DomainStatus } from '../data'; import { useElementRef } from '../../utils/helpers/hooks'; interface DomainStatusIconProps { diff --git a/src/domains/helpers/EditDomainRedirectsModal.tsx b/src/domains/helpers/EditDomainRedirectsModal.tsx index 26d11be5..928acfb5 100644 --- a/src/domains/helpers/EditDomainRedirectsModal.tsx +++ b/src/domains/helpers/EditDomainRedirectsModal.tsx @@ -1,10 +1,12 @@ -import { FC, useState } from 'react'; +import type { FC } from 'react'; +import { useState } from 'react'; import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap'; -import { ShlinkDomain } from '../../api/types'; -import { InputFormGroup, InputFormGroupProps } from '../../utils/forms/InputFormGroup'; +import type { ShlinkDomain } from '../../api/types'; +import type { InputFormGroupProps } from '../../utils/forms/InputFormGroup'; +import { InputFormGroup } from '../../utils/forms/InputFormGroup'; import { handleEventPreventingDefault, nonEmptyValueOrNull } from '../../utils/utils'; import { InfoTooltip } from '../../utils/InfoTooltip'; -import { EditDomainRedirects } from '../reducers/domainRedirects'; +import type { EditDomainRedirects } from '../reducers/domainRedirects'; interface EditDomainRedirectsModalProps { domain: ShlinkDomain; diff --git a/src/domains/reducers/domainRedirects.ts b/src/domains/reducers/domainRedirects.ts index 7aea1b15..6f9e7e1e 100644 --- a/src/domains/reducers/domainRedirects.ts +++ b/src/domains/reducers/domainRedirects.ts @@ -1,6 +1,6 @@ import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -import { ShlinkDomainRedirects } from '../../api/types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkDomainRedirects } from '../../api/types'; const EDIT_DOMAIN_REDIRECTS = 'shlink/domainRedirects/EDIT_DOMAIN_REDIRECTS'; diff --git a/src/domains/reducers/domainsList.ts b/src/domains/reducers/domainsList.ts index f1e622e0..a4eeaec3 100644 --- a/src/domains/reducers/domainsList.ts +++ b/src/domains/reducers/domainsList.ts @@ -1,13 +1,14 @@ -import { createSlice, createAction, SliceCaseReducers, AsyncThunk } from '@reduxjs/toolkit'; +import type { SliceCaseReducers, AsyncThunk } from '@reduxjs/toolkit'; +import { createSlice, createAction } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkDomainRedirects } from '../../api/types'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -import { Domain, DomainStatus } from '../data'; +import type { ShlinkDomainRedirects } from '../../api/types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { Domain, DomainStatus } from '../data'; import { hasServerData } from '../../servers/data'; import { replaceAuthorityFromUri } from '../../utils/helpers/uri'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; import { parseApiError } from '../../api/utils'; -import { EditDomainRedirects } from './domainRedirects'; +import type { EditDomainRedirects } from './domainRedirects'; const REDUCER_PREFIX = 'shlink/domainsList'; diff --git a/src/domains/services/provideServices.ts b/src/domains/services/provideServices.ts index 827302a3..66dbc06a 100644 --- a/src/domains/services/provideServices.ts +++ b/src/domains/services/provideServices.ts @@ -1,6 +1,6 @@ import { prop } from 'ramda'; -import Bottle from 'bottlejs'; -import { ConnectDecorator } from '../../container/types'; +import type Bottle from 'bottlejs'; +import type { ConnectDecorator } from '../../container/types'; import { domainsListReducerCreator } from '../reducers/domainsList'; import { DomainSelector } from '../DomainSelector'; import { ManageDomains } from '../ManageDomains'; diff --git a/src/mercure/helpers/boundToMercureHub.tsx b/src/mercure/helpers/boundToMercureHub.tsx index a9436237..9334a754 100644 --- a/src/mercure/helpers/boundToMercureHub.tsx +++ b/src/mercure/helpers/boundToMercureHub.tsx @@ -1,8 +1,9 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { pipe } from 'ramda'; import { useParams } from 'react-router-dom'; -import { CreateVisit } from '../../visits/types'; -import { MercureInfo } from '../reducers/mercureInfo'; +import type { CreateVisit } from '../../visits/types'; +import type { MercureInfo } from '../reducers/mercureInfo'; import { bindToMercureTopic } from './index'; export interface MercureBoundProps { diff --git a/src/mercure/helpers/index.ts b/src/mercure/helpers/index.ts index 0368c8ee..26d2f09a 100644 --- a/src/mercure/helpers/index.ts +++ b/src/mercure/helpers/index.ts @@ -1,5 +1,5 @@ import { EventSourcePolyfill as EventSource } from 'event-source-polyfill'; -import { MercureInfo } from '../reducers/mercureInfo'; +import type { MercureInfo } from '../reducers/mercureInfo'; export const bindToMercureTopic = (mercureInfo: MercureInfo, topics: string[], onMessage: (message: T) => void, onTokenExpired: () => void) => { // eslint-disable-line max-len const { mercureHubUrl, token, loading, error } = mercureInfo; diff --git a/src/mercure/reducers/mercureInfo.ts b/src/mercure/reducers/mercureInfo.ts index d9ec7974..6b704e79 100644 --- a/src/mercure/reducers/mercureInfo.ts +++ b/src/mercure/reducers/mercureInfo.ts @@ -1,7 +1,7 @@ import { createSlice } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkMercureInfo } from '../../api/types'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkMercureInfo } from '../../api/types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; const REDUCER_PREFIX = 'shlink/mercure'; diff --git a/src/mercure/services/provideServices.ts b/src/mercure/services/provideServices.ts index 06c341c7..07e3c18f 100644 --- a/src/mercure/services/provideServices.ts +++ b/src/mercure/services/provideServices.ts @@ -1,5 +1,5 @@ import { prop } from 'ramda'; -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { mercureInfoReducerCreator } from '../reducers/mercureInfo'; const provideServices = (bottle: Bottle) => { diff --git a/src/reducers/index.ts b/src/reducers/index.ts index 56734ac7..23b9732c 100644 --- a/src/reducers/index.ts +++ b/src/reducers/index.ts @@ -1,10 +1,10 @@ -import { IContainer } from 'bottlejs'; +import type { IContainer } from 'bottlejs'; import { combineReducers } from '@reduxjs/toolkit'; import { serversReducer } from '../servers/reducers/servers'; import { settingsReducer } from '../settings/reducers/settings'; import { appUpdatesReducer } from '../app/reducers/appUpdates'; import { sidebarReducer } from '../common/reducers/sidebar'; -import { ShlinkState } from '../container/types'; +import type { ShlinkState } from '../container/types'; export default (container: IContainer) => combineReducers({ servers: serversReducer, diff --git a/src/servers/CreateServer.tsx b/src/servers/CreateServer.tsx index 4ffd93ea..754cb6eb 100644 --- a/src/servers/CreateServer.tsx +++ b/src/servers/CreateServer.tsx @@ -1,13 +1,15 @@ -import { FC, useEffect, useState } from 'react'; +import type { FC } from 'react'; +import { useEffect, useState } from 'react'; import { v4 as uuid } from 'uuid'; import { Button } from 'reactstrap'; import { useNavigate } from 'react-router-dom'; import { Result } from '../utils/Result'; import { NoMenuLayout } from '../common/NoMenuLayout'; -import { TimeoutToggle, useGoBack, useToggle } from '../utils/helpers/hooks'; +import type { TimeoutToggle } from '../utils/helpers/hooks'; +import { useGoBack, useToggle } from '../utils/helpers/hooks'; import { ServerForm } from './helpers/ServerForm'; -import { ImportServersBtnProps } from './helpers/ImportServersBtn'; -import { ServerData, ServersMap, ServerWithId } from './data'; +import type { ImportServersBtnProps } from './helpers/ImportServersBtn'; +import type { ServerData, ServersMap, ServerWithId } from './data'; import { DuplicatedServersModal } from './helpers/DuplicatedServersModal'; const SHOW_IMPORT_MSG_TIME = 4000; diff --git a/src/servers/DeleteServerButton.tsx b/src/servers/DeleteServerButton.tsx index 4759938c..29b31ca6 100644 --- a/src/servers/DeleteServerButton.tsx +++ b/src/servers/DeleteServerButton.tsx @@ -1,9 +1,9 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { faMinusCircle as deleteIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useToggle } from '../utils/helpers/hooks'; -import { DeleteServerModalProps } from './DeleteServerModal'; -import { ServerWithId } from './data'; +import type { DeleteServerModalProps } from './DeleteServerModal'; +import type { ServerWithId } from './data'; export type DeleteServerButtonProps = PropsWithChildren<{ server: ServerWithId; diff --git a/src/servers/DeleteServerModal.tsx b/src/servers/DeleteServerModal.tsx index d22c93c4..1ef0284c 100644 --- a/src/servers/DeleteServerModal.tsx +++ b/src/servers/DeleteServerModal.tsx @@ -1,7 +1,8 @@ -import { FC, useRef } from 'react'; +import type { FC } from 'react'; +import { useRef } from 'react'; import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap'; import { useNavigate } from 'react-router-dom'; -import { ServerWithId } from './data'; +import type { ServerWithId } from './data'; export interface DeleteServerModalProps { server: ServerWithId; diff --git a/src/servers/EditServer.tsx b/src/servers/EditServer.tsx index e95b4daa..4ce07501 100644 --- a/src/servers/EditServer.tsx +++ b/src/servers/EditServer.tsx @@ -1,10 +1,11 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { Button } from 'reactstrap'; import { NoMenuLayout } from '../common/NoMenuLayout'; import { useGoBack, useParsedQuery } from '../utils/helpers/hooks'; import { ServerForm } from './helpers/ServerForm'; import { withSelectedServer } from './helpers/withSelectedServer'; -import { isServerWithId, ServerData } from './data'; +import type { ServerData } from './data'; +import { isServerWithId } from './data'; interface EditServerProps { editServer: (serverId: string, serverData: ServerData) => void; diff --git a/src/servers/ManageServers.tsx b/src/servers/ManageServers.tsx index 80f91d61..4c6c9c42 100644 --- a/src/servers/ManageServers.tsx +++ b/src/servers/ManageServers.tsx @@ -1,4 +1,5 @@ -import { FC, useEffect, useState } from 'react'; +import type { FC } from 'react'; +import { useEffect, useState } from 'react'; import { Button, Row } from 'reactstrap'; import { faFileDownload as exportIcon, faPlus as plusIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -7,11 +8,11 @@ import { NoMenuLayout } from '../common/NoMenuLayout'; import { SimpleCard } from '../utils/SimpleCard'; import { SearchField } from '../utils/SearchField'; import { Result } from '../utils/Result'; -import { TimeoutToggle } from '../utils/helpers/hooks'; -import { ImportServersBtnProps } from './helpers/ImportServersBtn'; -import { ServersMap } from './data'; -import { ManageServersRowProps } from './ManageServersRow'; -import ServersExporter from './services/ServersExporter'; +import type { TimeoutToggle } from '../utils/helpers/hooks'; +import type { ImportServersBtnProps } from './helpers/ImportServersBtn'; +import type { ServersMap } from './data'; +import type { ManageServersRowProps } from './ManageServersRow'; +import type ServersExporter from './services/ServersExporter'; interface ManageServersProps { servers: ServersMap; diff --git a/src/servers/ManageServersRow.tsx b/src/servers/ManageServersRow.tsx index b072bf2b..913fb21f 100644 --- a/src/servers/ManageServersRow.tsx +++ b/src/servers/ManageServersRow.tsx @@ -1,10 +1,10 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { UncontrolledTooltip } from 'reactstrap'; import { Link } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCheck as checkIcon } from '@fortawesome/free-solid-svg-icons'; -import { ServerWithId } from './data'; -import { ManageServersRowDropdownProps } from './ManageServersRowDropdown'; +import type { ServerWithId } from './data'; +import type { ManageServersRowDropdownProps } from './ManageServersRowDropdown'; export interface ManageServersRowProps { server: ServerWithId; diff --git a/src/servers/ManageServersRowDropdown.tsx b/src/servers/ManageServersRowDropdown.tsx index f0da17a5..0a4f7d0c 100644 --- a/src/servers/ManageServersRowDropdown.tsx +++ b/src/servers/ManageServersRowDropdown.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { DropdownItem } from 'reactstrap'; import { Link } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -11,8 +11,8 @@ import { import { faCircle as toggleOnIcon } from '@fortawesome/free-regular-svg-icons'; import { DropdownBtnMenu } from '../utils/DropdownBtnMenu'; import { useToggle } from '../utils/helpers/hooks'; -import { DeleteServerModalProps } from './DeleteServerModal'; -import { ServerWithId } from './data'; +import type { DeleteServerModalProps } from './DeleteServerModal'; +import type { ServerWithId } from './data'; export interface ManageServersRowDropdownProps { server: ServerWithId; diff --git a/src/servers/Overview.tsx b/src/servers/Overview.tsx index d751a534..d7c52b22 100644 --- a/src/servers/Overview.tsx +++ b/src/servers/Overview.tsx @@ -1,17 +1,20 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { Card, CardBody, CardHeader, Row } from 'reactstrap'; import { Link, useNavigate } from 'react-router-dom'; -import { ITEMS_IN_OVERVIEW_PAGE, ShortUrlsList as ShortUrlsListState } from '../short-urls/reducers/shortUrlsList'; +import type { ShortUrlsList as ShortUrlsListState } from '../short-urls/reducers/shortUrlsList'; +import { ITEMS_IN_OVERVIEW_PAGE } from '../short-urls/reducers/shortUrlsList'; import { prettify } from '../utils/helpers/numbers'; -import { TagsList } from '../tags/reducers/tagsList'; -import { ShortUrlsTableType } from '../short-urls/ShortUrlsTable'; +import type { TagsList } from '../tags/reducers/tagsList'; +import type { ShortUrlsTableType } from '../short-urls/ShortUrlsTable'; import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; -import { CreateShortUrlProps } from '../short-urls/CreateShortUrl'; -import { VisitsOverview } from '../visits/reducers/visitsOverview'; +import type { CreateShortUrlProps } from '../short-urls/CreateShortUrl'; +import type { VisitsOverview } from '../visits/reducers/visitsOverview'; import { Topics } from '../mercure/helpers/Topics'; -import { ShlinkShortUrlsListParams } from '../api/types'; +import type { ShlinkShortUrlsListParams } from '../api/types'; import { supportsNonOrphanVisits } from '../utils/helpers/features'; -import { getServerId, SelectedServer } from './data'; +import type { SelectedServer } from './data'; +import { getServerId } from './data'; import { HighlightCard } from './helpers/HighlightCard'; interface OverviewConnectProps { diff --git a/src/servers/ServersDropdown.tsx b/src/servers/ServersDropdown.tsx index e549471a..b50e087f 100644 --- a/src/servers/ServersDropdown.tsx +++ b/src/servers/ServersDropdown.tsx @@ -3,7 +3,8 @@ import { DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown } from import { Link } from 'react-router-dom'; import { faPlus as plusIcon, faServer as serverIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { getServerId, SelectedServer, ServersMap } from './data'; +import type { SelectedServer, ServersMap } from './data'; +import { getServerId } from './data'; export interface ServersDropdownProps { servers: ServersMap; diff --git a/src/servers/ServersListGroup.tsx b/src/servers/ServersListGroup.tsx index 36bac3bf..0e3944b4 100644 --- a/src/servers/ServersListGroup.tsx +++ b/src/servers/ServersListGroup.tsx @@ -1,10 +1,10 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { ListGroup, ListGroupItem } from 'reactstrap'; import { Link } from 'react-router-dom'; import classNames from 'classnames'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faChevronRight as chevronIcon } from '@fortawesome/free-solid-svg-icons'; -import { ServerWithId } from './data'; +import type { ServerWithId } from './data'; import './ServersListGroup.scss'; type ServersListGroupProps = PropsWithChildren<{ diff --git a/src/servers/data/index.ts b/src/servers/data/index.ts index 7ee3351e..52a98a6f 100644 --- a/src/servers/data/index.ts +++ b/src/servers/data/index.ts @@ -1,5 +1,5 @@ import { omit } from 'ramda'; -import { SemVer } from '../../utils/helpers/version'; +import type { SemVer } from '../../utils/helpers/version'; export interface ServerData { name: string; diff --git a/src/servers/helpers/DuplicatedServersModal.tsx b/src/servers/helpers/DuplicatedServersModal.tsx index 2f8a43c1..858e7993 100644 --- a/src/servers/helpers/DuplicatedServersModal.tsx +++ b/src/servers/helpers/DuplicatedServersModal.tsx @@ -1,6 +1,7 @@ -import { FC, Fragment } from 'react'; +import type { FC } from 'react'; +import { Fragment } from 'react'; import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap'; -import { ServerData } from '../data'; +import type { ServerData } from '../data'; interface DuplicatedServersModalProps { duplicatedServers: ServerData[]; diff --git a/src/servers/helpers/HighlightCard.tsx b/src/servers/helpers/HighlightCard.tsx index d5a6f1ef..ea6bf908 100644 --- a/src/servers/helpers/HighlightCard.tsx +++ b/src/servers/helpers/HighlightCard.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { Card, CardText, CardTitle } from 'reactstrap'; import { Link } from 'react-router-dom'; import { faArrowAltCircleRight as linkIcon } from '@fortawesome/free-regular-svg-icons'; diff --git a/src/servers/helpers/ImportServersBtn.tsx b/src/servers/helpers/ImportServersBtn.tsx index 4ce8502a..d163b6d3 100644 --- a/src/servers/helpers/ImportServersBtn.tsx +++ b/src/servers/helpers/ImportServersBtn.tsx @@ -1,11 +1,12 @@ -import { ChangeEvent, useState, useEffect, FC, PropsWithChildren } from 'react'; +import type { ChangeEvent, FC, PropsWithChildren } from 'react'; +import { useState, useEffect } from 'react'; import { Button, UncontrolledTooltip } from 'reactstrap'; import { complement, pipe } from 'ramda'; import { faFileUpload as importIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useElementRef, useToggle } from '../../utils/helpers/hooks'; -import { ServersImporter } from '../services/ServersImporter'; -import { ServerData, ServersMap } from '../data'; +import type { ServersImporter } from '../services/ServersImporter'; +import type { ServerData, ServersMap } from '../data'; import { DuplicatedServersModal } from './DuplicatedServersModal'; import './ImportServersBtn.scss'; diff --git a/src/servers/helpers/ServerError.tsx b/src/servers/helpers/ServerError.tsx index f133d494..51ece6e1 100644 --- a/src/servers/helpers/ServerError.tsx +++ b/src/servers/helpers/ServerError.tsx @@ -1,9 +1,10 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { Link } from 'react-router-dom'; import { Message } from '../../utils/Message'; import { ServersListGroup } from '../ServersListGroup'; -import { DeleteServerButtonProps } from '../DeleteServerButton'; -import { isServerWithId, SelectedServer, ServersMap } from '../data'; +import type { DeleteServerButtonProps } from '../DeleteServerButton'; +import type { SelectedServer, ServersMap } from '../data'; +import { isServerWithId } from '../data'; import { NoMenuLayout } from '../../common/NoMenuLayout'; import './ServerError.scss'; diff --git a/src/servers/helpers/ServerForm.tsx b/src/servers/helpers/ServerForm.tsx index 5c781069..54376e86 100644 --- a/src/servers/helpers/ServerForm.tsx +++ b/src/servers/helpers/ServerForm.tsx @@ -1,7 +1,8 @@ -import { FC, PropsWithChildren, ReactNode, useEffect, useState } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; +import { useEffect, useState } from 'react'; import { InputFormGroup } from '../../utils/forms/InputFormGroup'; import { handleEventPreventingDefault } from '../../utils/utils'; -import { ServerData } from '../data'; +import type { ServerData } from '../data'; import { SimpleCard } from '../../utils/SimpleCard'; type ServerFormProps = PropsWithChildren<{ diff --git a/src/servers/helpers/withSelectedServer.tsx b/src/servers/helpers/withSelectedServer.tsx index dcd7e228..e5859e11 100644 --- a/src/servers/helpers/withSelectedServer.tsx +++ b/src/servers/helpers/withSelectedServer.tsx @@ -1,7 +1,9 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; import { useParams } from 'react-router-dom'; import { Message } from '../../utils/Message'; -import { isNotFoundServer, SelectedServer } from '../data'; +import type { SelectedServer } from '../data'; +import { isNotFoundServer } from '../data'; import { NoMenuLayout } from '../../common/NoMenuLayout'; interface WithSelectedServerProps { diff --git a/src/servers/helpers/withoutSelectedServer.tsx b/src/servers/helpers/withoutSelectedServer.tsx index c2ee7329..53f5b4c7 100644 --- a/src/servers/helpers/withoutSelectedServer.tsx +++ b/src/servers/helpers/withoutSelectedServer.tsx @@ -1,4 +1,5 @@ -import { FC, useEffect } from 'react'; +import type { FC } from 'react'; +import { useEffect } from 'react'; interface WithoutSelectedServerProps { resetSelectedServer: Function; diff --git a/src/servers/reducers/remoteServers.ts b/src/servers/reducers/remoteServers.ts index 8776441d..ec584527 100644 --- a/src/servers/reducers/remoteServers.ts +++ b/src/servers/reducers/remoteServers.ts @@ -1,8 +1,9 @@ import pack from '../../../package.json'; -import { hasServerData, ServerData } from '../data'; +import type { ServerData } from '../data'; +import { hasServerData } from '../data'; import { createServers } from './servers'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { HttpClient } from '../../common/services/HttpClient'; +import type { HttpClient } from '../../common/services/HttpClient'; const responseToServersList = (data: any): ServerData[] => (Array.isArray(data) ? data.filter(hasServerData) : []); diff --git a/src/servers/reducers/selectedServer.ts b/src/servers/reducers/selectedServer.ts index b69647f0..341b42a5 100644 --- a/src/servers/reducers/selectedServer.ts +++ b/src/servers/reducers/selectedServer.ts @@ -1,10 +1,12 @@ -import { createAction, createListenerMiddleware, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createAction, createListenerMiddleware, createSlice } from '@reduxjs/toolkit'; import { memoizeWith, pipe } from 'ramda'; import { versionToPrintable, versionToSemVer as toSemVer } from '../../utils/helpers/version'; -import { isReachableServer, SelectedServer, ServerWithId } from '../data'; -import { ShlinkHealth } from '../../api/types'; +import type { SelectedServer, ServerWithId } from '../data'; +import { isReachableServer } from '../data'; +import type { ShlinkHealth } from '../../api/types'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; const REDUCER_PREFIX = 'shlink/selectedServer'; diff --git a/src/servers/reducers/servers.ts b/src/servers/reducers/servers.ts index faa2c9c6..2402dc46 100644 --- a/src/servers/reducers/servers.ts +++ b/src/servers/reducers/servers.ts @@ -1,7 +1,8 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; import { assoc, dissoc, fromPairs, map, pipe, reduce, toPairs } from 'ramda'; import { v4 as uuid } from 'uuid'; -import { ServerData, ServersMap, ServerWithId } from '../data'; +import type { ServerData, ServersMap, ServerWithId } from '../data'; interface EditServer { serverId: string; diff --git a/src/servers/services/ServersExporter.ts b/src/servers/services/ServersExporter.ts index df4fa680..e12ba7e0 100644 --- a/src/servers/services/ServersExporter.ts +++ b/src/servers/services/ServersExporter.ts @@ -1,8 +1,9 @@ import { values } from 'ramda'; -import { LocalStorage } from '../../utils/services/LocalStorage'; -import { ServersMap, serverWithIdToServerData } from '../data'; +import type { LocalStorage } from '../../utils/services/LocalStorage'; +import type { ServersMap } from '../data'; +import { serverWithIdToServerData } from '../data'; import { saveCsv } from '../../utils/helpers/files'; -import { JsonToCsv } from '../../utils/helpers/csvjson'; +import type { JsonToCsv } from '../../utils/helpers/csvjson'; const SERVERS_FILENAME = 'shlink-servers.csv'; diff --git a/src/servers/services/ServersImporter.ts b/src/servers/services/ServersImporter.ts index 8fb560b7..1705a89d 100644 --- a/src/servers/services/ServersImporter.ts +++ b/src/servers/services/ServersImporter.ts @@ -1,5 +1,5 @@ -import { ServerData } from '../data'; -import { CsvToJson } from '../../utils/helpers/csvjson'; +import type { ServerData } from '../data'; +import type { CsvToJson } from '../../utils/helpers/csvjson'; const validateServer = (server: any): server is ServerData => typeof server.url === 'string' && typeof server.apiKey === 'string' && typeof server.name === 'string'; diff --git a/src/servers/services/provideServices.ts b/src/servers/services/provideServices.ts index 92aaca58..b01905ba 100644 --- a/src/servers/services/provideServices.ts +++ b/src/servers/services/provideServices.ts @@ -1,5 +1,5 @@ import { prop } from 'ramda'; -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { CreateServer } from '../CreateServer'; import { ServersDropdown } from '../ServersDropdown'; import { DeleteServerModal } from '../DeleteServerModal'; @@ -15,7 +15,7 @@ import { import { createServers, deleteServer, editServer, setAutoConnect } from '../reducers/servers'; import { fetchServers } from '../reducers/remoteServers'; import { ServerError } from '../helpers/ServerError'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; import { withoutSelectedServer } from '../helpers/withoutSelectedServer'; import { Overview } from '../Overview'; import { ManageServers } from '../ManageServers'; diff --git a/src/settings/RealTimeUpdatesSettings.tsx b/src/settings/RealTimeUpdatesSettings.tsx index f587baa8..20eacf3c 100644 --- a/src/settings/RealTimeUpdatesSettings.tsx +++ b/src/settings/RealTimeUpdatesSettings.tsx @@ -4,7 +4,7 @@ import { ToggleSwitch } from '../utils/ToggleSwitch'; import { SimpleCard } from '../utils/SimpleCard'; import { FormText } from '../utils/forms/FormText'; import { LabeledFormGroup } from '../utils/forms/LabeledFormGroup'; -import { Settings } from './reducers/settings'; +import type { Settings } from './reducers/settings'; import { useDomId } from '../utils/helpers/hooks'; interface RealTimeUpdatesProps { diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index d1c8fd72..d83428cc 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -1,4 +1,4 @@ -import { FC, ReactNode } from 'react'; +import type { FC, ReactNode } from 'react'; import { Navigate, Routes, Route } from 'react-router-dom'; import { NoMenuLayout } from '../common/NoMenuLayout'; import { NavPillItem, NavPills } from '../utils/NavPills'; diff --git a/src/settings/ShortUrlCreationSettings.tsx b/src/settings/ShortUrlCreationSettings.tsx index d5523550..1fbffdcf 100644 --- a/src/settings/ShortUrlCreationSettings.tsx +++ b/src/settings/ShortUrlCreationSettings.tsx @@ -1,11 +1,11 @@ -import { FC, ReactNode } from 'react'; +import type { FC, ReactNode } from 'react'; import { DropdownItem, FormGroup } from 'reactstrap'; import { SimpleCard } from '../utils/SimpleCard'; import { ToggleSwitch } from '../utils/ToggleSwitch'; import { DropdownBtn } from '../utils/DropdownBtn'; import { FormText } from '../utils/forms/FormText'; import { LabeledFormGroup } from '../utils/forms/LabeledFormGroup'; -import { Settings, ShortUrlCreationSettings as ShortUrlsSettings, TagFilteringMode } from './reducers/settings'; +import type { Settings, ShortUrlCreationSettings as ShortUrlsSettings, TagFilteringMode } from './reducers/settings'; interface ShortUrlCreationProps { settings: Settings; diff --git a/src/settings/ShortUrlsListSettings.tsx b/src/settings/ShortUrlsListSettings.tsx index bb5f6f8c..57ef8751 100644 --- a/src/settings/ShortUrlsListSettings.tsx +++ b/src/settings/ShortUrlsListSettings.tsx @@ -1,9 +1,10 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { OrderingDropdown } from '../utils/OrderingDropdown'; import { SHORT_URLS_ORDERABLE_FIELDS } from '../short-urls/data'; import { SimpleCard } from '../utils/SimpleCard'; import { LabeledFormGroup } from '../utils/forms/LabeledFormGroup'; -import { DEFAULT_SHORT_URLS_ORDERING, Settings, ShortUrlsListSettings as ShortUrlsSettings } from './reducers/settings'; +import type { Settings, ShortUrlsListSettings as ShortUrlsSettings } from './reducers/settings'; +import { DEFAULT_SHORT_URLS_ORDERING } from './reducers/settings'; interface ShortUrlsListSettingsProps { settings: Settings; diff --git a/src/settings/TagsSettings.tsx b/src/settings/TagsSettings.tsx index 8cb5631d..46dd5fc3 100644 --- a/src/settings/TagsSettings.tsx +++ b/src/settings/TagsSettings.tsx @@ -1,9 +1,9 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { SimpleCard } from '../utils/SimpleCard'; import { OrderingDropdown } from '../utils/OrderingDropdown'; import { TAGS_ORDERABLE_FIELDS } from '../tags/data/TagsListChildrenProps'; import { LabeledFormGroup } from '../utils/forms/LabeledFormGroup'; -import { Settings, TagsSettings as TagsSettingsOptions } from './reducers/settings'; +import type { Settings, TagsSettings as TagsSettingsOptions } from './reducers/settings'; interface TagsProps { settings: Settings; diff --git a/src/settings/UserInterfaceSettings.tsx b/src/settings/UserInterfaceSettings.tsx index e21b3460..93ceb9bd 100644 --- a/src/settings/UserInterfaceSettings.tsx +++ b/src/settings/UserInterfaceSettings.tsx @@ -1,10 +1,11 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSun, faMoon } from '@fortawesome/free-solid-svg-icons'; import { SimpleCard } from '../utils/SimpleCard'; import { ToggleSwitch } from '../utils/ToggleSwitch'; -import { changeThemeInMarkup, Theme } from '../utils/theme'; -import { Settings, UiSettings } from './reducers/settings'; +import type { Theme } from '../utils/theme'; +import { changeThemeInMarkup } from '../utils/theme'; +import type { Settings, UiSettings } from './reducers/settings'; import './UserInterfaceSettings.scss'; interface UserInterfaceProps { diff --git a/src/settings/VisitsSettings.tsx b/src/settings/VisitsSettings.tsx index a799bd2a..3d1cc951 100644 --- a/src/settings/VisitsSettings.tsx +++ b/src/settings/VisitsSettings.tsx @@ -1,12 +1,12 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { FormGroup } from 'reactstrap'; import { SimpleCard } from '../utils/SimpleCard'; import { DateIntervalSelector } from '../utils/dates/DateIntervalSelector'; import { LabeledFormGroup } from '../utils/forms/LabeledFormGroup'; -import { Settings, VisitsSettings as VisitsSettingsConfig } from './reducers/settings'; +import type { Settings, VisitsSettings as VisitsSettingsConfig } from './reducers/settings'; import { ToggleSwitch } from '../utils/ToggleSwitch'; import { FormText } from '../utils/forms/FormText'; -import { DateInterval } from '../utils/helpers/dateIntervals'; +import type { DateInterval } from '../utils/helpers/dateIntervals'; interface VisitsProps { settings: Settings; diff --git a/src/settings/helpers/index.ts b/src/settings/helpers/index.ts index 10af7ccd..de01ff55 100644 --- a/src/settings/helpers/index.ts +++ b/src/settings/helpers/index.ts @@ -1,4 +1,4 @@ -import { ShlinkState } from '../../container/types'; +import type { ShlinkState } from '../../container/types'; /* eslint-disable no-param-reassign */ export const migrateDeprecatedSettings = (state: Partial): Partial => { diff --git a/src/settings/reducers/settings.ts b/src/settings/reducers/settings.ts index c8df4c48..35d0ee72 100644 --- a/src/settings/reducers/settings.ts +++ b/src/settings/reducers/settings.ts @@ -1,9 +1,10 @@ -import { createSlice, PayloadAction, PrepareAction } from '@reduxjs/toolkit'; +import type { PayloadAction, PrepareAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; import { mergeDeepRight } from 'ramda'; -import { Theme } from '../../utils/theme'; -import { DateInterval } from '../../utils/helpers/dateIntervals'; -import { TagsOrder } from '../../tags/data/TagsListChildrenProps'; -import { ShortUrlsOrder } from '../../short-urls/data'; +import type { Theme } from '../../utils/theme'; +import type { DateInterval } from '../../utils/helpers/dateIntervals'; +import type { TagsOrder } from '../../tags/data/TagsListChildrenProps'; +import type { ShortUrlsOrder } from '../../short-urls/data'; export const DEFAULT_SHORT_URLS_ORDERING: ShortUrlsOrder = { field: 'dateCreated', diff --git a/src/settings/services/provideServices.ts b/src/settings/services/provideServices.ts index d64b8592..723ca573 100644 --- a/src/settings/services/provideServices.ts +++ b/src/settings/services/provideServices.ts @@ -1,4 +1,4 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { RealTimeUpdatesSettings } from '../RealTimeUpdatesSettings'; import { Settings } from '../Settings'; import { @@ -10,7 +10,7 @@ import { setVisitsSettings, toggleRealTimeUpdates, } from '../reducers/settings'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; import { withoutSelectedServer } from '../../servers/helpers/withoutSelectedServer'; import { ShortUrlCreationSettings } from '../ShortUrlCreationSettings'; import { UserInterfaceSettings } from '../UserInterfaceSettings'; diff --git a/src/short-urls/CreateShortUrl.tsx b/src/short-urls/CreateShortUrl.tsx index 2f045023..a863d429 100644 --- a/src/short-urls/CreateShortUrl.tsx +++ b/src/short-urls/CreateShortUrl.tsx @@ -1,10 +1,11 @@ -import { FC, useMemo } from 'react'; -import { SelectedServer } from '../servers/data'; -import { Settings, ShortUrlCreationSettings } from '../settings/reducers/settings'; -import { ShortUrlData } from './data'; -import { ShortUrlCreation } from './reducers/shortUrlCreation'; -import { CreateShortUrlResultProps } from './helpers/CreateShortUrlResult'; -import { ShortUrlFormProps } from './ShortUrlForm'; +import type { FC } from 'react'; +import { useMemo } from 'react'; +import type { SelectedServer } from '../servers/data'; +import type { Settings, ShortUrlCreationSettings } from '../settings/reducers/settings'; +import type { ShortUrlData } from './data'; +import type { ShortUrlCreation } from './reducers/shortUrlCreation'; +import type { CreateShortUrlResultProps } from './helpers/CreateShortUrlResult'; +import type { ShortUrlFormProps } from './ShortUrlForm'; export interface CreateShortUrlProps { basicMode?: boolean; diff --git a/src/short-urls/EditShortUrl.tsx b/src/short-urls/EditShortUrl.tsx index db8c4d43..32477347 100644 --- a/src/short-urls/EditShortUrl.tsx +++ b/src/short-urls/EditShortUrl.tsx @@ -1,20 +1,21 @@ -import { FC, useEffect, useMemo } from 'react'; +import type { FC } from 'react'; +import { useEffect, useMemo } from 'react'; import { Button, Card } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faArrowLeft } from '@fortawesome/free-solid-svg-icons'; import { ExternalLink } from 'react-external-link'; import { useLocation, useParams } from 'react-router-dom'; -import { SelectedServer } from '../servers/data'; -import { Settings } from '../settings/reducers/settings'; -import { ShortUrlIdentifier } from './data'; +import type { SelectedServer } from '../servers/data'; +import type { Settings } from '../settings/reducers/settings'; +import type { ShortUrlIdentifier } from './data'; import { parseQuery } from '../utils/helpers/query'; import { Message } from '../utils/Message'; import { Result } from '../utils/Result'; import { ShlinkApiError } from '../api/ShlinkApiError'; import { useGoBack } from '../utils/helpers/hooks'; -import { ShortUrlFormProps } from './ShortUrlForm'; -import { ShortUrlDetail } from './reducers/shortUrlDetail'; -import { EditShortUrl as EditShortUrlInfo, ShortUrlEdition } from './reducers/shortUrlEdition'; +import type { ShortUrlFormProps } from './ShortUrlForm'; +import type { ShortUrlDetail } from './reducers/shortUrlDetail'; +import type { EditShortUrl as EditShortUrlInfo, ShortUrlEdition } from './reducers/shortUrlEdition'; import { shortUrlDataFromShortUrl, urlDecodeShortCode } from './helpers'; interface EditShortUrlConnectProps { diff --git a/src/short-urls/Paginator.tsx b/src/short-urls/Paginator.tsx index 5e7d488e..49187440 100644 --- a/src/short-urls/Paginator.tsx +++ b/src/short-urls/Paginator.tsx @@ -1,13 +1,14 @@ import { Link } from 'react-router-dom'; import { Pagination, PaginationItem, PaginationLink } from 'reactstrap'; +import type { + NumberOrEllipsis } from '../utils/helpers/pagination'; import { pageIsEllipsis, keyForPage, progressivePagination, prettifyPageNumber, - NumberOrEllipsis, } from '../utils/helpers/pagination'; -import { ShlinkPaginator } from '../api/types'; +import type { ShlinkPaginator } from '../api/types'; interface PaginatorProps { paginator?: ShlinkPaginator; diff --git a/src/short-urls/ShortUrlForm.tsx b/src/short-urls/ShortUrlForm.tsx index f949de66..85a79c0e 100644 --- a/src/short-urls/ShortUrlForm.tsx +++ b/src/short-urls/ShortUrlForm.tsx @@ -1,19 +1,22 @@ -import { FC, useEffect, useState } from 'react'; -import { InputType } from 'reactstrap/types/lib/Input'; +import type { FC } from 'react'; +import { useEffect, useState } from 'react'; +import type { InputType } from 'reactstrap/types/lib/Input'; import { Button, FormGroup, Input, Row } from 'reactstrap'; import { cond, isEmpty, pipe, replace, trim, T } from 'ramda'; import { parseISO } from 'date-fns'; -import { DateTimeInput, DateTimeInputProps } from '../utils/dates/DateTimeInput'; +import type { DateTimeInputProps } from '../utils/dates/DateTimeInput'; +import { DateTimeInput } from '../utils/dates/DateTimeInput'; import { supportsForwardQuery } from '../utils/helpers/features'; import { SimpleCard } from '../utils/SimpleCard'; -import { handleEventPreventingDefault, hasValue, OptionalString } from '../utils/utils'; +import type { OptionalString } from '../utils/utils'; +import { handleEventPreventingDefault, hasValue } from '../utils/utils'; import { Checkbox } from '../utils/Checkbox'; -import { SelectedServer } from '../servers/data'; -import { TagsSelectorProps } from '../tags/helpers/TagsSelector'; -import { DomainSelectorProps } from '../domains/DomainSelector'; +import type { SelectedServer } from '../servers/data'; +import type { TagsSelectorProps } from '../tags/helpers/TagsSelector'; +import type { DomainSelectorProps } from '../domains/DomainSelector'; import { formatIsoDate } from '../utils/helpers/date'; import { UseExistingIfFoundInfoIcon } from './UseExistingIfFoundInfoIcon'; -import { ShortUrlData } from './data'; +import type { ShortUrlData } from './data'; import { ShortUrlFormCheckboxGroup } from './helpers/ShortUrlFormCheckboxGroup'; import './ShortUrlForm.scss'; diff --git a/src/short-urls/ShortUrlsFilteringBar.tsx b/src/short-urls/ShortUrlsFilteringBar.tsx index b1cdb5a8..785a36f0 100644 --- a/src/short-urls/ShortUrlsFilteringBar.tsx +++ b/src/short-urls/ShortUrlsFilteringBar.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { isEmpty, pipe } from 'ramda'; import { Button, InputGroup, Row, UncontrolledTooltip } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; @@ -7,17 +7,19 @@ import classNames from 'classnames'; import { SearchField } from '../utils/SearchField'; import { DateRangeSelector } from '../utils/dates/DateRangeSelector'; import { formatIsoDate } from '../utils/helpers/date'; -import { DateRange, datesToDateRange } from '../utils/helpers/dateIntervals'; +import type { DateRange } from '../utils/helpers/dateIntervals'; +import { datesToDateRange } from '../utils/helpers/dateIntervals'; import { supportsAllTagsFiltering, supportsFilterDisabledUrls } from '../utils/helpers/features'; -import { SelectedServer } from '../servers/data'; -import { OrderDir } from '../utils/helpers/ordering'; +import type { SelectedServer } from '../servers/data'; +import type { OrderDir } from '../utils/helpers/ordering'; import { OrderingDropdown } from '../utils/OrderingDropdown'; import { useShortUrlsQuery } from './helpers/hooks'; -import { SHORT_URLS_ORDERABLE_FIELDS, ShortUrlsOrder, ShortUrlsOrderableFields } from './data'; -import { ExportShortUrlsBtnProps } from './helpers/ExportShortUrlsBtn'; -import { TagsSelectorProps } from '../tags/helpers/TagsSelector'; +import type { ShortUrlsOrder, ShortUrlsOrderableFields } from './data'; +import { SHORT_URLS_ORDERABLE_FIELDS } from './data'; +import type { ExportShortUrlsBtnProps } from './helpers/ExportShortUrlsBtn'; +import type { TagsSelectorProps } from '../tags/helpers/TagsSelector'; import { ShortUrlsFilterDropdown } from './helpers/ShortUrlsFilterDropdown'; -import { Settings } from '../settings/reducers/settings'; +import type { Settings } from '../settings/reducers/settings'; import './ShortUrlsFilteringBar.scss'; interface ShortUrlsFilteringProps { diff --git a/src/short-urls/ShortUrlsList.tsx b/src/short-urls/ShortUrlsList.tsx index b29dc925..c8b27bbc 100644 --- a/src/short-urls/ShortUrlsList.tsx +++ b/src/short-urls/ShortUrlsList.tsx @@ -2,19 +2,22 @@ import { pipe } from 'ramda'; import { useEffect, useState } from 'react'; import { Card } from 'reactstrap'; import { useLocation, useParams } from 'react-router-dom'; -import { determineOrderDir, OrderDir } from '../utils/helpers/ordering'; -import { getServerId, SelectedServer } from '../servers/data'; +import type { OrderDir } from '../utils/helpers/ordering'; +import { determineOrderDir } from '../utils/helpers/ordering'; +import type { SelectedServer } from '../servers/data'; +import { getServerId } from '../servers/data'; import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; import { Topics } from '../mercure/helpers/Topics'; import { TableOrderIcon } from '../utils/table/TableOrderIcon'; -import { ShlinkShortUrlsListParams, ShlinkShortUrlsOrder } from '../api/types'; -import { DEFAULT_SHORT_URLS_ORDERING, Settings } from '../settings/reducers/settings'; -import { ShortUrlsList as ShortUrlsListState } from './reducers/shortUrlsList'; -import { ShortUrlsTableType } from './ShortUrlsTable'; +import type { ShlinkShortUrlsListParams, ShlinkShortUrlsOrder } from '../api/types'; +import type { Settings } from '../settings/reducers/settings'; +import { DEFAULT_SHORT_URLS_ORDERING } from '../settings/reducers/settings'; +import type { ShortUrlsList as ShortUrlsListState } from './reducers/shortUrlsList'; +import type { ShortUrlsTableType } from './ShortUrlsTable'; import { Paginator } from './Paginator'; import { useShortUrlsQuery } from './helpers/hooks'; -import { ShortUrlsOrder, ShortUrlsOrderableFields } from './data'; -import { ShortUrlsFilteringBarType } from './ShortUrlsFilteringBar'; +import type { ShortUrlsOrder, ShortUrlsOrderableFields } from './data'; +import type { ShortUrlsFilteringBarType } from './ShortUrlsFilteringBar'; import { supportsExcludeBotsOnShortUrls } from '../utils/helpers/features'; interface ShortUrlsListProps { diff --git a/src/short-urls/ShortUrlsTable.tsx b/src/short-urls/ShortUrlsTable.tsx index 4448af12..e38ccfc0 100644 --- a/src/short-urls/ShortUrlsTable.tsx +++ b/src/short-urls/ShortUrlsTable.tsx @@ -1,10 +1,10 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import { isEmpty } from 'ramda'; import classNames from 'classnames'; -import { SelectedServer } from '../servers/data'; -import { ShortUrlsList as ShortUrlsListState } from './reducers/shortUrlsList'; -import { ShortUrlsRowType } from './helpers/ShortUrlsRow'; -import { ShortUrlsOrderableFields } from './data'; +import type { SelectedServer } from '../servers/data'; +import type { ShortUrlsList as ShortUrlsListState } from './reducers/shortUrlsList'; +import type { ShortUrlsRowType } from './helpers/ShortUrlsRow'; +import type { ShortUrlsOrderableFields } from './data'; import './ShortUrlsTable.scss'; interface ShortUrlsTableProps { diff --git a/src/short-urls/data/index.ts b/src/short-urls/data/index.ts index c0ed41e2..e3b7bac5 100644 --- a/src/short-urls/data/index.ts +++ b/src/short-urls/data/index.ts @@ -1,5 +1,5 @@ -import { Nullable, OptionalString } from '../../utils/utils'; -import { Order } from '../../utils/helpers/ordering'; +import type { Nullable, OptionalString } from '../../utils/utils'; +import type { Order } from '../../utils/helpers/ordering'; export interface EditShortUrlData { longUrl?: string; diff --git a/src/short-urls/helpers/CreateShortUrlResult.tsx b/src/short-urls/helpers/CreateShortUrlResult.tsx index 220eb42f..09939d2d 100644 --- a/src/short-urls/helpers/CreateShortUrlResult.tsx +++ b/src/short-urls/helpers/CreateShortUrlResult.tsx @@ -4,8 +4,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useEffect } from 'react'; import CopyToClipboard from 'react-copy-to-clipboard'; import { Tooltip } from 'reactstrap'; -import { ShortUrlCreation } from '../reducers/shortUrlCreation'; -import { TimeoutToggle } from '../../utils/helpers/hooks'; +import type { ShortUrlCreation } from '../reducers/shortUrlCreation'; +import type { TimeoutToggle } from '../../utils/helpers/hooks'; import { Result } from '../../utils/Result'; import './CreateShortUrlResult.scss'; import { ShlinkApiError } from '../../api/ShlinkApiError'; diff --git a/src/short-urls/helpers/DeleteShortUrlModal.tsx b/src/short-urls/helpers/DeleteShortUrlModal.tsx index e62a946e..2f77d403 100644 --- a/src/short-urls/helpers/DeleteShortUrlModal.tsx +++ b/src/short-urls/helpers/DeleteShortUrlModal.tsx @@ -1,8 +1,8 @@ import { useEffect, useState } from 'react'; import { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap'; import { pipe } from 'ramda'; -import { ShortUrlDeletion } from '../reducers/shortUrlDeletion'; -import { ShortUrlIdentifier, ShortUrlModalProps } from '../data'; +import type { ShortUrlDeletion } from '../reducers/shortUrlDeletion'; +import type { ShortUrlIdentifier, ShortUrlModalProps } from '../data'; import { handleEventPreventingDefault } from '../../utils/utils'; import { Result } from '../../utils/Result'; import { isInvalidDeletionError } from '../../api/utils'; diff --git a/src/short-urls/helpers/ExportShortUrlsBtn.tsx b/src/short-urls/helpers/ExportShortUrlsBtn.tsx index 35403d1d..e38f026c 100644 --- a/src/short-urls/helpers/ExportShortUrlsBtn.tsx +++ b/src/short-urls/helpers/ExportShortUrlsBtn.tsx @@ -1,10 +1,11 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { ExportBtn } from '../../utils/ExportBtn'; import { useToggle } from '../../utils/helpers/hooks'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -import { isServerWithId, SelectedServer } from '../../servers/data'; -import { ShortUrl } from '../data'; -import { ReportExporter } from '../../common/services/ReportExporter'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { SelectedServer } from '../../servers/data'; +import { isServerWithId } from '../../servers/data'; +import type { ShortUrl } from '../data'; +import type { ReportExporter } from '../../common/services/ReportExporter'; import { useShortUrlsQuery } from './hooks'; export interface ExportShortUrlsBtnProps { diff --git a/src/short-urls/helpers/QrCodeModal.tsx b/src/short-urls/helpers/QrCodeModal.tsx index f4bda9eb..682d3263 100644 --- a/src/short-urls/helpers/QrCodeModal.tsx +++ b/src/short-urls/helpers/QrCodeModal.tsx @@ -3,12 +3,13 @@ import { Modal, FormGroup, ModalBody, ModalHeader, Row, Button } from 'reactstra import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faFileDownload as downloadIcon } from '@fortawesome/free-solid-svg-icons'; import { ExternalLink } from 'react-external-link'; -import { ShortUrlModalProps } from '../data'; -import { SelectedServer } from '../../servers/data'; +import type { ShortUrlModalProps } from '../data'; +import type { SelectedServer } from '../../servers/data'; import { CopyToClipboardIcon } from '../../utils/CopyToClipboardIcon'; -import { buildQrCodeUrl, QrCodeFormat, QrErrorCorrection } from '../../utils/helpers/qrCodes'; +import type { QrCodeFormat, QrErrorCorrection } from '../../utils/helpers/qrCodes'; +import { buildQrCodeUrl } from '../../utils/helpers/qrCodes'; import { supportsNonRestCors } from '../../utils/helpers/features'; -import { ImageDownloader } from '../../common/services/ImageDownloader'; +import type { ImageDownloader } from '../../common/services/ImageDownloader'; import { QrFormatDropdown } from './qr-codes/QrFormatDropdown'; import { QrErrorCorrectionDropdown } from './qr-codes/QrErrorCorrectionDropdown'; import './QrCodeModal.scss'; diff --git a/src/short-urls/helpers/ShortUrlDetailLink.tsx b/src/short-urls/helpers/ShortUrlDetailLink.tsx index 82adc6ba..89a91726 100644 --- a/src/short-urls/helpers/ShortUrlDetailLink.tsx +++ b/src/short-urls/helpers/ShortUrlDetailLink.tsx @@ -1,7 +1,8 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { Link } from 'react-router-dom'; -import { isServerWithId, SelectedServer, ServerWithId } from '../../servers/data'; -import { ShortUrl } from '../data'; +import type { SelectedServer, ServerWithId } from '../../servers/data'; +import { isServerWithId } from '../../servers/data'; +import type { ShortUrl } from '../data'; import { urlEncodeShortCode } from './index'; export type LinkSuffix = 'visits' | 'edit'; diff --git a/src/short-urls/helpers/ShortUrlFormCheckboxGroup.tsx b/src/short-urls/helpers/ShortUrlFormCheckboxGroup.tsx index 8d933df5..67e17d79 100644 --- a/src/short-urls/helpers/ShortUrlFormCheckboxGroup.tsx +++ b/src/short-urls/helpers/ShortUrlFormCheckboxGroup.tsx @@ -1,4 +1,4 @@ -import { ChangeEvent, FC, PropsWithChildren } from 'react'; +import type { ChangeEvent, FC, PropsWithChildren } from 'react'; import { Checkbox } from '../../utils/Checkbox'; import { InfoTooltip } from '../../utils/InfoTooltip'; diff --git a/src/short-urls/helpers/ShortUrlStatus.tsx b/src/short-urls/helpers/ShortUrlStatus.tsx index 0803e658..3f02fb6b 100644 --- a/src/short-urls/helpers/ShortUrlStatus.tsx +++ b/src/short-urls/helpers/ShortUrlStatus.tsx @@ -1,10 +1,10 @@ -import { FC, ReactNode } from 'react'; +import type { FC, ReactNode } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { IconDefinition } from '@fortawesome/fontawesome-common-types'; +import type { IconDefinition } from '@fortawesome/fontawesome-common-types'; import { faLinkSlash, faCalendarXmark, faCheck } from '@fortawesome/free-solid-svg-icons'; import { UncontrolledTooltip } from 'reactstrap'; import { isBefore } from 'date-fns'; -import { ShortUrl } from '../data'; +import type { ShortUrl } from '../data'; import { formatHumanFriendly, now, parseISO } from '../../utils/helpers/date'; import { useElementRef } from '../../utils/helpers/hooks'; diff --git a/src/short-urls/helpers/ShortUrlVisitsCount.tsx b/src/short-urls/helpers/ShortUrlVisitsCount.tsx index b73cc595..a1e63be5 100644 --- a/src/short-urls/helpers/ShortUrlVisitsCount.tsx +++ b/src/short-urls/helpers/ShortUrlVisitsCount.tsx @@ -3,8 +3,8 @@ import { faInfoCircle as infoIcon } from '@fortawesome/free-solid-svg-icons'; import { UncontrolledTooltip } from 'reactstrap'; import classNames from 'classnames'; import { prettify } from '../../utils/helpers/numbers'; -import { ShortUrl } from '../data'; -import { SelectedServer } from '../../servers/data'; +import type { ShortUrl } from '../data'; +import type { SelectedServer } from '../../servers/data'; import { ShortUrlDetailLink } from './ShortUrlDetailLink'; import { formatHumanFriendly, parseISO } from '../../utils/helpers/date'; import { useElementRef } from '../../utils/helpers/hooks'; diff --git a/src/short-urls/helpers/ShortUrlsFilterDropdown.tsx b/src/short-urls/helpers/ShortUrlsFilterDropdown.tsx index 5d774e1a..3e1366a6 100644 --- a/src/short-urls/helpers/ShortUrlsFilterDropdown.tsx +++ b/src/short-urls/helpers/ShortUrlsFilterDropdown.tsx @@ -1,7 +1,7 @@ import { DropdownItem } from 'reactstrap'; import { DropdownBtn } from '../../utils/DropdownBtn'; import { hasValue } from '../../utils/utils'; -import { ShortUrlsFilter } from '../data'; +import type { ShortUrlsFilter } from '../data'; interface ShortUrlsFilterDropdownProps { onChange: (filters: ShortUrlsFilter) => void; diff --git a/src/short-urls/helpers/ShortUrlsRow.tsx b/src/short-urls/helpers/ShortUrlsRow.tsx index 1104ba83..bbb4104b 100644 --- a/src/short-urls/helpers/ShortUrlsRow.tsx +++ b/src/short-urls/helpers/ShortUrlsRow.tsx @@ -1,14 +1,15 @@ -import { FC, useEffect, useRef } from 'react'; +import type { FC } from 'react'; +import { useEffect, useRef } from 'react'; import { ExternalLink } from 'react-external-link'; -import { ColorGenerator } from '../../utils/services/ColorGenerator'; -import { TimeoutToggle } from '../../utils/helpers/hooks'; -import { SelectedServer } from '../../servers/data'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { TimeoutToggle } from '../../utils/helpers/hooks'; +import type { SelectedServer } from '../../servers/data'; import { CopyToClipboardIcon } from '../../utils/CopyToClipboardIcon'; -import { ShortUrl } from '../data'; +import type { ShortUrl } from '../data'; import { Time } from '../../utils/dates/Time'; -import { Settings } from '../../settings/reducers/settings'; +import type { Settings } from '../../settings/reducers/settings'; import { ShortUrlVisitsCount } from './ShortUrlVisitsCount'; -import { ShortUrlsRowMenuType } from './ShortUrlsRowMenu'; +import type { ShortUrlsRowMenuType } from './ShortUrlsRowMenu'; import { Tags } from './Tags'; import { ShortUrlStatus } from './ShortUrlStatus'; import { useShortUrlsQuery } from './hooks'; diff --git a/src/short-urls/helpers/ShortUrlsRowMenu.tsx b/src/short-urls/helpers/ShortUrlsRowMenu.tsx index 39d32075..b05351fe 100644 --- a/src/short-urls/helpers/ShortUrlsRowMenu.tsx +++ b/src/short-urls/helpers/ShortUrlsRowMenu.tsx @@ -5,11 +5,11 @@ import { faEdit as editIcon, } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { FC } from 'react'; +import type { FC } from 'react'; import { DropdownItem } from 'reactstrap'; import { useToggle } from '../../utils/helpers/hooks'; -import { ShortUrl, ShortUrlModalProps } from '../data'; -import { SelectedServer } from '../../servers/data'; +import type { ShortUrl, ShortUrlModalProps } from '../data'; +import type { SelectedServer } from '../../servers/data'; import { DropdownBtnMenu } from '../../utils/DropdownBtnMenu'; import { ShortUrlDetailLink } from './ShortUrlDetailLink'; diff --git a/src/short-urls/helpers/Tags.tsx b/src/short-urls/helpers/Tags.tsx index f95a4511..71f43316 100644 --- a/src/short-urls/helpers/Tags.tsx +++ b/src/short-urls/helpers/Tags.tsx @@ -1,7 +1,7 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { isEmpty } from 'ramda'; import { Tag } from '../../tags/helpers/Tag'; -import { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; interface TagsProps { tags: string[]; diff --git a/src/short-urls/helpers/hooks.ts b/src/short-urls/helpers/hooks.ts index 95cc5a43..c2dfcdbb 100644 --- a/src/short-urls/helpers/hooks.ts +++ b/src/short-urls/helpers/hooks.ts @@ -2,10 +2,11 @@ import { useParams, useLocation, useNavigate } from 'react-router-dom'; import { useMemo } from 'react'; import { isEmpty, pipe } from 'ramda'; import { parseQuery, stringifyQuery } from '../../utils/helpers/query'; -import { ShortUrlsOrder, ShortUrlsOrderableFields } from '../data'; +import type { ShortUrlsOrder, ShortUrlsOrderableFields } from '../data'; import { orderToString, stringToOrder } from '../../utils/helpers/ordering'; -import { TagsFilteringMode } from '../../api/types'; -import { BooleanString, parseOptionalBooleanToString } from '../../utils/utils'; +import type { TagsFilteringMode } from '../../api/types'; +import type { BooleanString } from '../../utils/utils'; +import { parseOptionalBooleanToString } from '../../utils/utils'; interface ShortUrlsQueryCommon { search?: string; diff --git a/src/short-urls/helpers/index.ts b/src/short-urls/helpers/index.ts index e4dd1f09..4fcfb676 100644 --- a/src/short-urls/helpers/index.ts +++ b/src/short-urls/helpers/index.ts @@ -1,8 +1,8 @@ import { isNil } from 'ramda'; -import { ShortUrl, ShortUrlData } from '../data'; -import { OptionalString } from '../../utils/utils'; +import type { ShortUrl, ShortUrlData } from '../data'; +import type { OptionalString } from '../../utils/utils'; import { DEFAULT_DOMAIN } from '../../visits/reducers/domainVisits'; -import { ShortUrlCreationSettings } from '../../settings/reducers/settings'; +import type { ShortUrlCreationSettings } from '../../settings/reducers/settings'; export const shortUrlMatches = (shortUrl: ShortUrl, shortCode: string, domain: OptionalString): boolean => { if (isNil(domain)) { diff --git a/src/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.tsx b/src/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.tsx index b6fd68b7..81673261 100644 --- a/src/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.tsx +++ b/src/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.tsx @@ -1,7 +1,7 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { DropdownItem } from 'reactstrap'; import { DropdownBtn } from '../../../utils/DropdownBtn'; -import { QrErrorCorrection } from '../../../utils/helpers/qrCodes'; +import type { QrErrorCorrection } from '../../../utils/helpers/qrCodes'; interface QrErrorCorrectionDropdownProps { errorCorrection: QrErrorCorrection; diff --git a/src/short-urls/helpers/qr-codes/QrFormatDropdown.tsx b/src/short-urls/helpers/qr-codes/QrFormatDropdown.tsx index 3c9ca705..c7170b9c 100644 --- a/src/short-urls/helpers/qr-codes/QrFormatDropdown.tsx +++ b/src/short-urls/helpers/qr-codes/QrFormatDropdown.tsx @@ -1,7 +1,7 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { DropdownItem } from 'reactstrap'; import { DropdownBtn } from '../../../utils/DropdownBtn'; -import { QrCodeFormat } from '../../../utils/helpers/qrCodes'; +import type { QrCodeFormat } from '../../../utils/helpers/qrCodes'; interface QrFormatDropdownProps { format: QrCodeFormat; diff --git a/src/short-urls/reducers/shortUrlCreation.ts b/src/short-urls/reducers/shortUrlCreation.ts index 1a48b63e..a6185983 100644 --- a/src/short-urls/reducers/shortUrlCreation.ts +++ b/src/short-urls/reducers/shortUrlCreation.ts @@ -1,9 +1,10 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { ShortUrl, ShortUrlData } from '../data'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; +import type { ShortUrl, ShortUrlData } from '../data'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { parseApiError } from '../../api/utils'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; const REDUCER_PREFIX = 'shlink/shortUrlCreation'; diff --git a/src/short-urls/reducers/shortUrlDeletion.ts b/src/short-urls/reducers/shortUrlDeletion.ts index 294e1986..f619d442 100644 --- a/src/short-urls/reducers/shortUrlDeletion.ts +++ b/src/short-urls/reducers/shortUrlDeletion.ts @@ -1,9 +1,9 @@ import { createAction, createSlice } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { parseApiError } from '../../api/utils'; -import { ProblemDetailsError } from '../../api/types/errors'; -import { ShortUrl, ShortUrlIdentifier } from '../data'; +import type { ProblemDetailsError } from '../../api/types/errors'; +import type { ShortUrl, ShortUrlIdentifier } from '../data'; const REDUCER_PREFIX = 'shlink/shortUrlDeletion'; diff --git a/src/short-urls/reducers/shortUrlDetail.ts b/src/short-urls/reducers/shortUrlDetail.ts index 4ad467f3..cc54ab2c 100644 --- a/src/short-urls/reducers/shortUrlDetail.ts +++ b/src/short-urls/reducers/shortUrlDetail.ts @@ -1,10 +1,11 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { ShortUrl, ShortUrlIdentifier } from '../data'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; +import type { ShortUrl, ShortUrlIdentifier } from '../data'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { shortUrlMatches } from '../helpers'; import { parseApiError } from '../../api/utils'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; const REDUCER_PREFIX = 'shlink/shortUrlDetail'; diff --git a/src/short-urls/reducers/shortUrlEdition.ts b/src/short-urls/reducers/shortUrlEdition.ts index 79ea145d..da707cc9 100644 --- a/src/short-urls/reducers/shortUrlEdition.ts +++ b/src/short-urls/reducers/shortUrlEdition.ts @@ -1,9 +1,10 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { EditShortUrlData, ShortUrl, ShortUrlIdentifier } from '../data'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { EditShortUrlData, ShortUrl, ShortUrlIdentifier } from '../data'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { parseApiError } from '../../api/utils'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; const REDUCER_PREFIX = 'shlink/shortUrlEdition'; diff --git a/src/short-urls/reducers/shortUrlsList.ts b/src/short-urls/reducers/shortUrlsList.ts index 5b8d52b1..220776e0 100644 --- a/src/short-urls/reducers/shortUrlsList.ts +++ b/src/short-urls/reducers/shortUrlsList.ts @@ -3,12 +3,12 @@ import { assocPath, last, pipe, reject } from 'ramda'; import { shortUrlMatches } from '../helpers'; import { createNewVisits } from '../../visits/reducers/visitCreation'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -import { ShlinkShortUrlsListParams, ShlinkShortUrlsResponse } from '../../api/types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkShortUrlsListParams, ShlinkShortUrlsResponse } from '../../api/types'; import { shortUrlDeleted } from './shortUrlDeletion'; -import { createShortUrl } from './shortUrlCreation'; -import { editShortUrl } from './shortUrlEdition'; -import { ShortUrl } from '../data'; +import type { createShortUrl } from './shortUrlCreation'; +import type { editShortUrl } from './shortUrlEdition'; +import type { ShortUrl } from '../data'; const REDUCER_PREFIX = 'shlink/shortUrlsList'; export const ITEMS_IN_OVERVIEW_PAGE = 5; diff --git a/src/short-urls/services/provideServices.ts b/src/short-urls/services/provideServices.ts index 185ab81e..054753d3 100644 --- a/src/short-urls/services/provideServices.ts +++ b/src/short-urls/services/provideServices.ts @@ -1,4 +1,4 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { prop } from 'ramda'; import { ShortUrlsFilteringBar } from '../ShortUrlsFilteringBar'; import { ShortUrlsList } from '../ShortUrlsList'; @@ -12,7 +12,7 @@ import { shortUrlCreationReducerCreator, createShortUrl } from '../reducers/shor import { shortUrlDeletionReducerCreator, deleteShortUrl, shortUrlDeleted } from '../reducers/shortUrlDeletion'; import { editShortUrl, shortUrlEditionReducerCreator } from '../reducers/shortUrlEdition'; import { shortUrlDetailReducerCreator } from '../reducers/shortUrlDetail'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; import { ShortUrlsTable } from '../ShortUrlsTable'; import { ShortUrlForm } from '../ShortUrlForm'; import { EditShortUrl } from '../EditShortUrl'; diff --git a/src/tags/TagsList.tsx b/src/tags/TagsList.tsx index be35f153..55b46844 100644 --- a/src/tags/TagsList.tsx +++ b/src/tags/TagsList.tsx @@ -1,20 +1,22 @@ -import { FC, useEffect, useState } from 'react'; +import type { FC } from 'react'; +import { useEffect, useState } from 'react'; import { Row } from 'reactstrap'; import { pipe } from 'ramda'; import { Message } from '../utils/Message'; import { SearchField } from '../utils/SearchField'; -import { SelectedServer } from '../servers/data'; +import type { SelectedServer } from '../servers/data'; import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; import { Result } from '../utils/Result'; import { ShlinkApiError } from '../api/ShlinkApiError'; import { Topics } from '../mercure/helpers/Topics'; -import { Settings } from '../settings/reducers/settings'; +import type { Settings } from '../settings/reducers/settings'; import { determineOrderDir, sortList } from '../utils/helpers/ordering'; import { OrderingDropdown } from '../utils/OrderingDropdown'; -import { TagsList as TagsListState } from './reducers/tagsList'; -import { TagsOrderableFields, TAGS_ORDERABLE_FIELDS, TagsOrder } from './data/TagsListChildrenProps'; -import { NormalizedTag } from './data'; -import { TagsTableProps } from './TagsTable'; +import type { TagsList as TagsListState } from './reducers/tagsList'; +import type { TagsOrderableFields, TagsOrder } from './data/TagsListChildrenProps'; +import { TAGS_ORDERABLE_FIELDS } from './data/TagsListChildrenProps'; +import type { NormalizedTag } from './data'; +import type { TagsTableProps } from './TagsTable'; export interface TagsListProps { filterTags: (searchTerm: string) => void; diff --git a/src/tags/TagsTable.tsx b/src/tags/TagsTable.tsx index 205196e8..71952f32 100644 --- a/src/tags/TagsTable.tsx +++ b/src/tags/TagsTable.tsx @@ -1,4 +1,5 @@ -import { FC, useEffect, useRef } from 'react'; +import type { FC } from 'react'; +import { useEffect, useRef } from 'react'; import { splitEvery } from 'ramda'; import { useLocation } from 'react-router-dom'; import { SimpleCard } from '../utils/SimpleCard'; @@ -6,8 +7,8 @@ import { SimplePaginator } from '../common/SimplePaginator'; import { useQueryState } from '../utils/helpers/hooks'; import { parseQuery } from '../utils/helpers/query'; import { TableOrderIcon } from '../utils/table/TableOrderIcon'; -import { TagsOrderableFields, TagsListChildrenProps, TagsOrder } from './data/TagsListChildrenProps'; -import { TagsTableRowProps } from './TagsTableRow'; +import type { TagsOrderableFields, TagsListChildrenProps, TagsOrder } from './data/TagsListChildrenProps'; +import type { TagsTableRowProps } from './TagsTableRow'; import './TagsTable.scss'; export interface TagsTableProps extends TagsListChildrenProps { diff --git a/src/tags/TagsTableRow.tsx b/src/tags/TagsTableRow.tsx index 1bad323e..c3e100b2 100644 --- a/src/tags/TagsTableRow.tsx +++ b/src/tags/TagsTableRow.tsx @@ -1,15 +1,16 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { Link } from 'react-router-dom'; import { DropdownItem } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faTrash as deleteIcon, faPencilAlt as editIcon } from '@fortawesome/free-solid-svg-icons'; -import { getServerId, SelectedServer } from '../servers/data'; -import { ColorGenerator } from '../utils/services/ColorGenerator'; +import type { SelectedServer } from '../servers/data'; +import { getServerId } from '../servers/data'; +import type { ColorGenerator } from '../utils/services/ColorGenerator'; import { prettify } from '../utils/helpers/numbers'; import { useToggle } from '../utils/helpers/hooks'; import { DropdownBtnMenu } from '../utils/DropdownBtnMenu'; import { TagBullet } from './helpers/TagBullet'; -import { NormalizedTag, TagModalProps } from './data'; +import type { NormalizedTag, TagModalProps } from './data'; export interface TagsTableRowProps { tag: NormalizedTag; diff --git a/src/tags/data/TagsListChildrenProps.ts b/src/tags/data/TagsListChildrenProps.ts index 54837ac7..a20720bc 100644 --- a/src/tags/data/TagsListChildrenProps.ts +++ b/src/tags/data/TagsListChildrenProps.ts @@ -1,6 +1,6 @@ -import { SelectedServer } from '../../servers/data'; -import { Order } from '../../utils/helpers/ordering'; -import { NormalizedTag } from './index'; +import type { SelectedServer } from '../../servers/data'; +import type { Order } from '../../utils/helpers/ordering'; +import type { NormalizedTag } from './index'; export const TAGS_ORDERABLE_FIELDS = { tag: 'Tag', diff --git a/src/tags/helpers/DeleteTagConfirmModal.tsx b/src/tags/helpers/DeleteTagConfirmModal.tsx index fd2cbfdb..5ac400a3 100644 --- a/src/tags/helpers/DeleteTagConfirmModal.tsx +++ b/src/tags/helpers/DeleteTagConfirmModal.tsx @@ -1,6 +1,6 @@ import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap'; -import { TagDeletion } from '../reducers/tagDelete'; -import { TagModalProps } from '../data'; +import type { TagDeletion } from '../reducers/tagDelete'; +import type { TagModalProps } from '../data'; import { Result } from '../../utils/Result'; import { ShlinkApiError } from '../../api/ShlinkApiError'; diff --git a/src/tags/helpers/EditTagModal.tsx b/src/tags/helpers/EditTagModal.tsx index 06dbefe5..3dedd963 100644 --- a/src/tags/helpers/EditTagModal.tsx +++ b/src/tags/helpers/EditTagModal.tsx @@ -6,9 +6,9 @@ import { faPalette as colorIcon } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useToggle } from '../../utils/helpers/hooks'; import { handleEventPreventingDefault } from '../../utils/utils'; -import { ColorGenerator } from '../../utils/services/ColorGenerator'; -import { TagModalProps } from '../data'; -import { EditTag, TagEdition } from '../reducers/tagEdit'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { TagModalProps } from '../data'; +import type { EditTag, TagEdition } from '../reducers/tagEdit'; import { Result } from '../../utils/Result'; import { ShlinkApiError } from '../../api/ShlinkApiError'; import './EditTagModal.scss'; diff --git a/src/tags/helpers/Tag.tsx b/src/tags/helpers/Tag.tsx index 61ab3057..771ecbd9 100644 --- a/src/tags/helpers/Tag.tsx +++ b/src/tags/helpers/Tag.tsx @@ -1,6 +1,6 @@ -import { FC, MouseEventHandler, PropsWithChildren } from 'react'; +import type { FC, MouseEventHandler, PropsWithChildren } from 'react'; import classNames from 'classnames'; -import { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; import './Tag.scss'; type TagProps = PropsWithChildren<{ diff --git a/src/tags/helpers/TagBullet.tsx b/src/tags/helpers/TagBullet.tsx index dc84f729..0c303571 100644 --- a/src/tags/helpers/TagBullet.tsx +++ b/src/tags/helpers/TagBullet.tsx @@ -1,4 +1,4 @@ -import { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; import './TagBullet.scss'; interface TagBulletProps { diff --git a/src/tags/helpers/TagsSelector.tsx b/src/tags/helpers/TagsSelector.tsx index 3d785af3..b1a929d4 100644 --- a/src/tags/helpers/TagsSelector.tsx +++ b/src/tags/helpers/TagsSelector.tsx @@ -1,8 +1,9 @@ import { useEffect } from 'react'; -import ReactTags, { SuggestionComponentProps, TagComponentProps } from 'react-tag-autocomplete'; -import { ColorGenerator } from '../../utils/services/ColorGenerator'; -import { Settings } from '../../settings/reducers/settings'; -import { TagsList } from '../reducers/tagsList'; +import type { SuggestionComponentProps, TagComponentProps } from 'react-tag-autocomplete'; +import ReactTags from 'react-tag-autocomplete'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { Settings } from '../../settings/reducers/settings'; +import type { TagsList } from '../reducers/tagsList'; import { TagBullet } from './TagBullet'; import { Tag } from './Tag'; diff --git a/src/tags/reducers/tagDelete.ts b/src/tags/reducers/tagDelete.ts index 5bac50a8..4a7a3e90 100644 --- a/src/tags/reducers/tagDelete.ts +++ b/src/tags/reducers/tagDelete.ts @@ -1,8 +1,8 @@ import { createAction, createSlice } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { parseApiError } from '../../api/utils'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; const REDUCER_PREFIX = 'shlink/tagDelete'; diff --git a/src/tags/reducers/tagEdit.ts b/src/tags/reducers/tagEdit.ts index 675f8898..13ee61f6 100644 --- a/src/tags/reducers/tagEdit.ts +++ b/src/tags/reducers/tagEdit.ts @@ -1,10 +1,11 @@ import { pick } from 'ramda'; -import { createAction, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createAction, createSlice } from '@reduxjs/toolkit'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ColorGenerator } from '../../utils/services/ColorGenerator'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ColorGenerator } from '../../utils/services/ColorGenerator'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { parseApiError } from '../../api/utils'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; const REDUCER_PREFIX = 'shlink/tagEdit'; diff --git a/src/tags/reducers/tagsList.ts b/src/tags/reducers/tagsList.ts index d348674c..4dea9d2f 100644 --- a/src/tags/reducers/tagsList.ts +++ b/src/tags/reducers/tagsList.ts @@ -2,15 +2,15 @@ import { createAction, createSlice } from '@reduxjs/toolkit'; import { isEmpty, reject } from 'ramda'; import { createNewVisits } from '../../visits/reducers/visitCreation'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkTags } from '../../api/types'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; -import { CreateVisit, Stats } from '../../visits/types'; +import type { ShlinkTags } from '../../api/types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { CreateVisit, Stats } from '../../visits/types'; import { parseApiError } from '../../api/utils'; -import { TagStats } from '../data'; -import { createShortUrl } from '../../short-urls/reducers/shortUrlCreation'; +import type { TagStats } from '../data'; +import type { createShortUrl } from '../../short-urls/reducers/shortUrlCreation'; import { tagDeleted } from './tagDelete'; import { tagEdited } from './tagEdit'; -import { ProblemDetailsError } from '../../api/types/errors'; +import type { ProblemDetailsError } from '../../api/types/errors'; const REDUCER_PREFIX = 'shlink/tagsList'; diff --git a/src/tags/services/provideServices.ts b/src/tags/services/provideServices.ts index 0fbda139..7fa9cc83 100644 --- a/src/tags/services/provideServices.ts +++ b/src/tags/services/provideServices.ts @@ -1,5 +1,6 @@ import { prop } from 'ramda'; -import Bottle, { IContainer } from 'bottlejs'; +import type { IContainer } from 'bottlejs'; +import type Bottle from 'bottlejs'; import { TagsSelector } from '../helpers/TagsSelector'; import { DeleteTagConfirmModal } from '../helpers/DeleteTagConfirmModal'; import { EditTagModal } from '../helpers/EditTagModal'; @@ -7,7 +8,7 @@ import { TagsList } from '../TagsList'; import { filterTags, listTags, tagsListReducerCreator } from '../reducers/tagsList'; import { tagDeleted, tagDeleteReducerCreator } from '../reducers/tagDelete'; import { editTag, tagEdited, tagEditReducerCreator } from '../reducers/tagEdit'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; import { TagsTable } from '../TagsTable'; import { TagsTableRow } from '../TagsTableRow'; diff --git a/src/utils/BooleanControl.tsx b/src/utils/BooleanControl.tsx index fd93a8d0..e66418cc 100644 --- a/src/utils/BooleanControl.tsx +++ b/src/utils/BooleanControl.tsx @@ -1,4 +1,4 @@ -import { ChangeEvent, FC, PropsWithChildren } from 'react'; +import type { ChangeEvent, FC, PropsWithChildren } from 'react'; import classNames from 'classnames'; import { identity } from 'ramda'; import { useDomId } from './helpers/hooks'; diff --git a/src/utils/Checkbox.tsx b/src/utils/Checkbox.tsx index 4e4ef083..fc61a7e1 100644 --- a/src/utils/Checkbox.tsx +++ b/src/utils/Checkbox.tsx @@ -1,4 +1,5 @@ -import { FC } from 'react'; -import { BooleanControl, BooleanControlProps } from './BooleanControl'; +import type { FC } from 'react'; +import type { BooleanControlProps } from './BooleanControl'; +import { BooleanControl } from './BooleanControl'; export const Checkbox: FC = (props) => ; diff --git a/src/utils/CopyToClipboardIcon.tsx b/src/utils/CopyToClipboardIcon.tsx index 79359a12..314af944 100644 --- a/src/utils/CopyToClipboardIcon.tsx +++ b/src/utils/CopyToClipboardIcon.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCopy as copyIcon } from '@fortawesome/free-regular-svg-icons'; import CopyToClipboard from 'react-copy-to-clipboard'; diff --git a/src/utils/DropdownBtn.tsx b/src/utils/DropdownBtn.tsx index 6bfe82cd..08e0ef4d 100644 --- a/src/utils/DropdownBtn.tsx +++ b/src/utils/DropdownBtn.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { Dropdown, DropdownMenu, DropdownToggle } from 'reactstrap'; import { useToggle } from './helpers/hooks'; import './DropdownBtn.scss'; diff --git a/src/utils/DropdownBtnMenu.tsx b/src/utils/DropdownBtnMenu.tsx index 694ccb89..cd62f0b5 100644 --- a/src/utils/DropdownBtnMenu.tsx +++ b/src/utils/DropdownBtnMenu.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { ButtonDropdown, DropdownMenu, DropdownToggle } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faEllipsisV as menuIcon } from '@fortawesome/free-solid-svg-icons'; diff --git a/src/utils/ExportBtn.tsx b/src/utils/ExportBtn.tsx index c6f141bb..42af9e57 100644 --- a/src/utils/ExportBtn.tsx +++ b/src/utils/ExportBtn.tsx @@ -1,5 +1,6 @@ -import { FC } from 'react'; -import { Button, ButtonProps } from 'reactstrap'; +import type { FC } from 'react'; +import type { ButtonProps } from 'reactstrap'; +import { Button } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faFileCsv } from '@fortawesome/free-solid-svg-icons'; import { prettify } from './helpers/numbers'; diff --git a/src/utils/InfoTooltip.tsx b/src/utils/InfoTooltip.tsx index 9d2eaa28..9e8103c4 100644 --- a/src/utils/InfoTooltip.tsx +++ b/src/utils/InfoTooltip.tsx @@ -1,8 +1,8 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faInfoCircle as infoIcon } from '@fortawesome/free-solid-svg-icons'; import { UncontrolledTooltip } from 'reactstrap'; -import { Placement } from '@popperjs/core'; +import type { Placement } from '@popperjs/core'; import { useElementRef } from './helpers/hooks'; export type InfoTooltipProps = PropsWithChildren<{ diff --git a/src/utils/Message.tsx b/src/utils/Message.tsx index e171e93c..2c166752 100644 --- a/src/utils/Message.tsx +++ b/src/utils/Message.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { Card, Row } from 'reactstrap'; import classNames from 'classnames'; import { faCircleNotch as preloader } from '@fortawesome/free-solid-svg-icons'; diff --git a/src/utils/NavPills.tsx b/src/utils/NavPills.tsx index 4eaf3f17..e08b6469 100644 --- a/src/utils/NavPills.tsx +++ b/src/utils/NavPills.tsx @@ -1,4 +1,5 @@ -import { FC, Children, isValidElement, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; +import { Children, isValidElement } from 'react'; import { Card, Nav, NavLink } from 'reactstrap'; import { NavLink as RouterNavLink } from 'react-router-dom'; import './NavPills.scss'; diff --git a/src/utils/OrderingDropdown.tsx b/src/utils/OrderingDropdown.tsx index 71afb672..254dcd4a 100644 --- a/src/utils/OrderingDropdown.tsx +++ b/src/utils/OrderingDropdown.tsx @@ -3,7 +3,8 @@ import { toPairs } from 'ramda'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSortAmountUp as sortAscIcon, faSortAmountDown as sortDescIcon } from '@fortawesome/free-solid-svg-icons'; import classNames from 'classnames'; -import { determineOrderDir, Order, OrderDir } from './helpers/ordering'; +import type { Order, OrderDir } from './helpers/ordering'; +import { determineOrderDir } from './helpers/ordering'; import './OrderingDropdown.scss'; export interface OrderingDropdownProps { diff --git a/src/utils/Result.tsx b/src/utils/Result.tsx index e32872a8..fe7a7564 100644 --- a/src/utils/Result.tsx +++ b/src/utils/Result.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; import { Row } from 'reactstrap'; import classNames from 'classnames'; import { SimpleCard } from './SimpleCard'; diff --git a/src/utils/SimpleCard.tsx b/src/utils/SimpleCard.tsx index 2243037b..12061c4c 100644 --- a/src/utils/SimpleCard.tsx +++ b/src/utils/SimpleCard.tsx @@ -1,5 +1,6 @@ -import { Card, CardBody, CardHeader, CardProps } from 'reactstrap'; -import { ReactNode } from 'react'; +import type { CardProps } from 'reactstrap'; +import { Card, CardBody, CardHeader } from 'reactstrap'; +import type { ReactNode } from 'react'; interface SimpleCardProps extends Omit { title?: ReactNode; diff --git a/src/utils/ToggleSwitch.tsx b/src/utils/ToggleSwitch.tsx index 797e9b5d..b9cc6b96 100644 --- a/src/utils/ToggleSwitch.tsx +++ b/src/utils/ToggleSwitch.tsx @@ -1,4 +1,5 @@ -import { FC } from 'react'; -import { BooleanControl, BooleanControlProps } from './BooleanControl'; +import type { FC } from 'react'; +import type { BooleanControlProps } from './BooleanControl'; +import { BooleanControl } from './BooleanControl'; export const ToggleSwitch: FC = (props) => ; diff --git a/src/utils/dates/DateInput.tsx b/src/utils/dates/DateInput.tsx index 15a95851..9bc653ea 100644 --- a/src/utils/dates/DateInput.tsx +++ b/src/utils/dates/DateInput.tsx @@ -1,6 +1,7 @@ import { useRef } from 'react'; import { isNil } from 'ramda'; -import DatePicker, { ReactDatePickerProps } from 'react-datepicker'; +import type { ReactDatePickerProps } from 'react-datepicker'; +import DatePicker from 'react-datepicker'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCalendarAlt as calendarIcon } from '@fortawesome/free-regular-svg-icons'; import classNames from 'classnames'; diff --git a/src/utils/dates/DateIntervalDropdownItems.tsx b/src/utils/dates/DateIntervalDropdownItems.tsx index bd2b8de4..0e3d59cd 100644 --- a/src/utils/dates/DateIntervalDropdownItems.tsx +++ b/src/utils/dates/DateIntervalDropdownItems.tsx @@ -1,6 +1,7 @@ import { DropdownItem } from 'reactstrap'; -import { FC } from 'react'; -import { DATE_INTERVALS, DateInterval, rangeOrIntervalToString } from '../helpers/dateIntervals'; +import type { FC } from 'react'; +import type { DateInterval } from '../helpers/dateIntervals'; +import { DATE_INTERVALS, rangeOrIntervalToString } from '../helpers/dateIntervals'; export interface DateIntervalDropdownProps { active?: DateInterval; diff --git a/src/utils/dates/DateIntervalSelector.tsx b/src/utils/dates/DateIntervalSelector.tsx index 3f4bccb3..094eb298 100644 --- a/src/utils/dates/DateIntervalSelector.tsx +++ b/src/utils/dates/DateIntervalSelector.tsx @@ -1,7 +1,8 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { DropdownBtn } from '../DropdownBtn'; import { rangeOrIntervalToString } from '../helpers/dateIntervals'; -import { DateIntervalDropdownItems, DateIntervalDropdownProps } from './DateIntervalDropdownItems'; +import type { DateIntervalDropdownProps } from './DateIntervalDropdownItems'; +import { DateIntervalDropdownItems } from './DateIntervalDropdownItems'; export const DateIntervalSelector: FC = ({ onChange, active, allText }) => ( diff --git a/src/utils/dates/DateRangeRow.tsx b/src/utils/dates/DateRangeRow.tsx index f5e33ff4..c469d561 100644 --- a/src/utils/dates/DateRangeRow.tsx +++ b/src/utils/dates/DateRangeRow.tsx @@ -1,6 +1,6 @@ import { endOfDay } from 'date-fns'; import { DateInput } from './DateInput'; -import { DateRange } from '../helpers/dateIntervals'; +import type { DateRange } from '../helpers/dateIntervals'; interface DateRangeRowProps extends DateRange { onStartDateChange: (date: Date | null) => void; diff --git a/src/utils/dates/DateRangeSelector.tsx b/src/utils/dates/DateRangeSelector.tsx index 3aaeaf9e..93195420 100644 --- a/src/utils/dates/DateRangeSelector.tsx +++ b/src/utils/dates/DateRangeSelector.tsx @@ -2,9 +2,10 @@ import { useState } from 'react'; import { DropdownItem } from 'reactstrap'; import { DropdownBtn } from '../DropdownBtn'; import { useEffectExceptFirstTime } from '../helpers/hooks'; -import { +import type { DateInterval, - DateRange, + DateRange } from '../helpers/dateIntervals'; +import { rangeOrIntervalToString, intervalToDateRange, rangeIsInterval, diff --git a/src/utils/dates/DateTimeInput.tsx b/src/utils/dates/DateTimeInput.tsx index ddc45acb..3b787909 100644 --- a/src/utils/dates/DateTimeInput.tsx +++ b/src/utils/dates/DateTimeInput.tsx @@ -1,5 +1,5 @@ -import { ReactDatePickerProps } from 'react-datepicker'; -import { FC } from 'react'; +import type { ReactDatePickerProps } from 'react-datepicker'; +import type { FC } from 'react'; import { DateInput } from './DateInput'; import { STANDARD_DATE_AND_TIME_FORMAT } from '../helpers/date'; diff --git a/src/utils/forms/FormText.tsx b/src/utils/forms/FormText.tsx index c3e1a685..f80b5094 100644 --- a/src/utils/forms/FormText.tsx +++ b/src/utils/forms/FormText.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; export const FormText: FC> = ({ children }) => ( {children} diff --git a/src/utils/forms/InputFormGroup.tsx b/src/utils/forms/InputFormGroup.tsx index 9dabb6b1..6fda7b60 100644 --- a/src/utils/forms/InputFormGroup.tsx +++ b/src/utils/forms/InputFormGroup.tsx @@ -1,5 +1,5 @@ -import { FC, PropsWithChildren } from 'react'; -import { InputType } from 'reactstrap/types/lib/Input'; +import type { FC, PropsWithChildren } from 'react'; +import type { InputType } from 'reactstrap/types/lib/Input'; import { LabeledFormGroup } from './LabeledFormGroup'; import { useDomId } from '../helpers/hooks'; diff --git a/src/utils/forms/LabeledFormGroup.tsx b/src/utils/forms/LabeledFormGroup.tsx index dfc68729..24ed4044 100644 --- a/src/utils/forms/LabeledFormGroup.tsx +++ b/src/utils/forms/LabeledFormGroup.tsx @@ -1,4 +1,4 @@ -import { FC, PropsWithChildren, ReactNode } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; type LabeledFormGroupProps = PropsWithChildren<{ label: ReactNode; diff --git a/src/utils/helpers/charts.ts b/src/utils/helpers/charts.ts index 7914eee8..87331d24 100644 --- a/src/utils/helpers/charts.ts +++ b/src/utils/helpers/charts.ts @@ -1,4 +1,4 @@ -import { ActiveElement, ChartEvent, ChartType, TooltipItem } from 'chart.js'; +import type { ActiveElement, ChartEvent, ChartType, TooltipItem } from 'chart.js'; import { prettify } from './numbers'; export const pointerOnHover = ({ native }: ChartEvent, [firstElement]: ActiveElement[]) => { diff --git a/src/utils/helpers/date.ts b/src/utils/helpers/date.ts index b766974c..ebb33605 100644 --- a/src/utils/helpers/date.ts +++ b/src/utils/helpers/date.ts @@ -1,5 +1,5 @@ import { format, formatISO, isBefore, isEqual, isWithinInterval, parse, parseISO as stdParseISO } from 'date-fns'; -import { OptionalString } from '../utils'; +import type { OptionalString } from '../utils'; export const STANDARD_DATE_FORMAT = 'yyyy-MM-dd'; diff --git a/src/utils/helpers/dateIntervals.ts b/src/utils/helpers/dateIntervals.ts index 248fcb5a..462feb87 100644 --- a/src/utils/helpers/dateIntervals.ts +++ b/src/utils/helpers/dateIntervals.ts @@ -1,6 +1,7 @@ import { subDays, startOfDay, endOfDay } from 'date-fns'; import { cond, filter, isEmpty, T } from 'ramda'; -import { dateOrNull, DateOrString, formatInternational, isBeforeOrEqual, now, parseISO } from './date'; +import type { DateOrString } from './date'; +import { dateOrNull, formatInternational, isBeforeOrEqual, now, parseISO } from './date'; import { equals } from '../utils'; export interface DateRange { diff --git a/src/utils/helpers/features.ts b/src/utils/helpers/features.ts index b85551cc..d4700802 100644 --- a/src/utils/helpers/features.ts +++ b/src/utils/helpers/features.ts @@ -1,5 +1,7 @@ -import { isReachableServer, SelectedServer } from '../../servers/data'; -import { SemVerPattern, versionMatch } from './version'; +import type { SelectedServer } from '../../servers/data'; +import { isReachableServer } from '../../servers/data'; +import type { SemVerPattern } from './version'; +import { versionMatch } from './version'; const serverMatchesMinVersion = (minVersion: SemVerPattern) => (selectedServer: SelectedServer): boolean => isReachableServer(selectedServer) && versionMatch(selectedServer.version, { minVersion }); diff --git a/src/utils/helpers/hooks.ts b/src/utils/helpers/hooks.ts index fc596ddb..020428a9 100644 --- a/src/utils/helpers/hooks.ts +++ b/src/utils/helpers/hooks.ts @@ -1,4 +1,5 @@ -import { DependencyList, EffectCallback, useEffect, useRef, useState } from 'react'; +import type { DependencyList, EffectCallback } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { useSwipeable as useReactSwipeable } from 'react-swipeable'; import { useLocation, useNavigate } from 'react-router-dom'; import { v4 as uuid } from 'uuid'; diff --git a/src/utils/helpers/redux.ts b/src/utils/helpers/redux.ts index 69309bf9..e113c937 100644 --- a/src/utils/helpers/redux.ts +++ b/src/utils/helpers/redux.ts @@ -1,6 +1,7 @@ -import { createAsyncThunk as baseCreateAsyncThunk, AsyncThunkPayloadCreator } from '@reduxjs/toolkit'; +import type { AsyncThunkPayloadCreator } from '@reduxjs/toolkit'; +import { createAsyncThunk as baseCreateAsyncThunk } from '@reduxjs/toolkit'; import { identity } from 'ramda'; -import { ShlinkState } from '../../container/types'; +import type { ShlinkState } from '../../container/types'; export const createAsyncThunk = ( typePrefix: string, diff --git a/src/utils/helpers/version.ts b/src/utils/helpers/version.ts index 6116a6da..91ef66d5 100644 --- a/src/utils/helpers/version.ts +++ b/src/utils/helpers/version.ts @@ -1,6 +1,7 @@ import { compare } from 'compare-versions'; import { identity, memoizeWith } from 'ramda'; -import { Empty, hasValue } from '../utils'; +import type { Empty } from '../utils'; +import { hasValue } from '../utils'; type SemVerPatternFragment = `${bigint | '*'}`; diff --git a/src/utils/helpers/visits.ts b/src/utils/helpers/visits.ts index 3b081814..fb8f12c4 100644 --- a/src/utils/helpers/visits.ts +++ b/src/utils/helpers/visits.ts @@ -1,7 +1,8 @@ import bowser from 'bowser'; import { zipObj } from 'ramda'; -import { Empty, hasValue } from '../utils'; -import { Stats, UserAgent } from '../../visits/types'; +import type { Empty } from '../utils'; +import { hasValue } from '../utils'; +import type { Stats, UserAgent } from '../../visits/types'; const DEFAULT = 'Others'; const BROWSERS_WHITELIST = [ diff --git a/src/utils/services/ColorGenerator.ts b/src/utils/services/ColorGenerator.ts index b440ab52..789fe122 100644 --- a/src/utils/services/ColorGenerator.ts +++ b/src/utils/services/ColorGenerator.ts @@ -1,6 +1,6 @@ import { isNil } from 'ramda'; import { rangeOf } from '../utils'; -import { LocalStorage } from './LocalStorage'; +import type { LocalStorage } from './LocalStorage'; const HEX_COLOR_LENGTH = 6; const HEX_DIGITS = '0123456789ABCDEF'; diff --git a/src/utils/services/provideServices.ts b/src/utils/services/provideServices.ts index 66ca8d0e..eeb3d326 100644 --- a/src/utils/services/provideServices.ts +++ b/src/utils/services/provideServices.ts @@ -1,4 +1,4 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { useTimeoutToggle } from '../helpers/hooks'; import { LocalStorage } from './LocalStorage'; import { ColorGenerator } from './ColorGenerator'; diff --git a/src/utils/table/TableOrderIcon.tsx b/src/utils/table/TableOrderIcon.tsx index 20622340..fbf7bd7a 100644 --- a/src/utils/table/TableOrderIcon.tsx +++ b/src/utils/table/TableOrderIcon.tsx @@ -1,6 +1,6 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCaretDown as caretDownIcon, faCaretUp as caretUpIcon } from '@fortawesome/free-solid-svg-icons'; -import { Order } from '../helpers/ordering'; +import type { Order } from '../helpers/ordering'; interface TableOrderIconProps { currentOrder: Order; diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 4ddef89d..243b4b99 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -1,5 +1,5 @@ import { isEmpty, isNil, pipe, range } from 'ramda'; -import { SyntheticEvent } from 'react'; +import type { SyntheticEvent } from 'react'; export const rangeOf = (size: number, mappingFn: (value: number) => T, startAt = 1): T[] => range(startAt, size + 1).map(mappingFn); diff --git a/src/visits/DomainVisits.tsx b/src/visits/DomainVisits.tsx index e2f5d3ba..8564f390 100644 --- a/src/visits/DomainVisits.tsx +++ b/src/visits/DomainVisits.tsx @@ -1,13 +1,13 @@ import { useParams } from 'react-router-dom'; -import { CommonVisitsProps } from './types/CommonVisitsProps'; -import { ShlinkVisitsParams } from '../api/types'; -import { DomainVisits as DomainVisitsState, LoadDomainVisits } from './reducers/domainVisits'; -import { ReportExporter } from '../common/services/ReportExporter'; +import type { CommonVisitsProps } from './types/CommonVisitsProps'; +import type { ShlinkVisitsParams } from '../api/types'; +import type { DomainVisits as DomainVisitsState, LoadDomainVisits } from './reducers/domainVisits'; +import type { ReportExporter } from '../common/services/ReportExporter'; import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; import { Topics } from '../mercure/helpers/Topics'; import { useGoBack } from '../utils/helpers/hooks'; import { toApiParams } from './types/helpers'; -import { NormalizedVisit } from './types'; +import type { NormalizedVisit } from './types'; import { VisitsStats } from './VisitsStats'; import { VisitsHeader } from './VisitsHeader'; diff --git a/src/visits/NonOrphanVisits.tsx b/src/visits/NonOrphanVisits.tsx index 3515afb8..b7d64a81 100644 --- a/src/visits/NonOrphanVisits.tsx +++ b/src/visits/NonOrphanVisits.tsx @@ -1,13 +1,13 @@ import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; import { Topics } from '../mercure/helpers/Topics'; import { useGoBack } from '../utils/helpers/hooks'; -import { ReportExporter } from '../common/services/ReportExporter'; +import type { ReportExporter } from '../common/services/ReportExporter'; import { VisitsStats } from './VisitsStats'; -import { NormalizedVisit, VisitsParams } from './types'; -import { CommonVisitsProps } from './types/CommonVisitsProps'; +import type { NormalizedVisit, VisitsParams } from './types'; +import type { CommonVisitsProps } from './types/CommonVisitsProps'; import { toApiParams } from './types/helpers'; import { VisitsHeader } from './VisitsHeader'; -import { LoadVisits, VisitsInfo } from './reducers/types'; +import type { LoadVisits, VisitsInfo } from './reducers/types'; export interface NonOrphanVisitsProps extends CommonVisitsProps { getNonOrphanVisits: (params: LoadVisits) => void; diff --git a/src/visits/OrphanVisits.tsx b/src/visits/OrphanVisits.tsx index 3a7d711b..ba14d534 100644 --- a/src/visits/OrphanVisits.tsx +++ b/src/visits/OrphanVisits.tsx @@ -1,14 +1,14 @@ import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; import { Topics } from '../mercure/helpers/Topics'; import { useGoBack } from '../utils/helpers/hooks'; -import { ReportExporter } from '../common/services/ReportExporter'; +import type { ReportExporter } from '../common/services/ReportExporter'; import { VisitsStats } from './VisitsStats'; -import { NormalizedVisit, VisitsParams } from './types'; -import { CommonVisitsProps } from './types/CommonVisitsProps'; +import type { NormalizedVisit, VisitsParams } from './types'; +import type { CommonVisitsProps } from './types/CommonVisitsProps'; import { toApiParams } from './types/helpers'; import { VisitsHeader } from './VisitsHeader'; -import { VisitsInfo } from './reducers/types'; -import { LoadOrphanVisits } from './reducers/orphanVisits'; +import type { VisitsInfo } from './reducers/types'; +import type { LoadOrphanVisits } from './reducers/orphanVisits'; export interface OrphanVisitsProps extends CommonVisitsProps { getOrphanVisits: (params: LoadOrphanVisits) => void; diff --git a/src/visits/ShortUrlVisits.tsx b/src/visits/ShortUrlVisits.tsx index 47b23d27..03154895 100644 --- a/src/visits/ShortUrlVisits.tsx +++ b/src/visits/ShortUrlVisits.tsx @@ -3,17 +3,17 @@ import { useLocation, useParams } from 'react-router-dom'; import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; import { parseQuery } from '../utils/helpers/query'; import { Topics } from '../mercure/helpers/Topics'; -import { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail'; +import type { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail'; import { useGoBack } from '../utils/helpers/hooks'; -import { ReportExporter } from '../common/services/ReportExporter'; -import { LoadShortUrlVisits, ShortUrlVisits as ShortUrlVisitsState } from './reducers/shortUrlVisits'; +import type { ReportExporter } from '../common/services/ReportExporter'; +import type { LoadShortUrlVisits, ShortUrlVisits as ShortUrlVisitsState } from './reducers/shortUrlVisits'; import { ShortUrlVisitsHeader } from './ShortUrlVisitsHeader'; import { VisitsStats } from './VisitsStats'; -import { NormalizedVisit, VisitsParams } from './types'; -import { CommonVisitsProps } from './types/CommonVisitsProps'; +import type { NormalizedVisit, VisitsParams } from './types'; +import type { CommonVisitsProps } from './types/CommonVisitsProps'; import { toApiParams } from './types/helpers'; import { urlDecodeShortCode } from '../short-urls/helpers'; -import { ShortUrlIdentifier } from '../short-urls/data'; +import type { ShortUrlIdentifier } from '../short-urls/data'; export interface ShortUrlVisitsProps extends CommonVisitsProps { getShortUrlVisits: (params: LoadShortUrlVisits) => void; diff --git a/src/visits/ShortUrlVisitsHeader.tsx b/src/visits/ShortUrlVisitsHeader.tsx index bac9587f..52088dfd 100644 --- a/src/visits/ShortUrlVisitsHeader.tsx +++ b/src/visits/ShortUrlVisitsHeader.tsx @@ -1,8 +1,8 @@ import { UncontrolledTooltip } from 'reactstrap'; import { ExternalLink } from 'react-external-link'; -import { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail'; +import type { ShortUrlDetail } from '../short-urls/reducers/shortUrlDetail'; import { Time } from '../utils/dates/Time'; -import { ShortUrlVisits } from './reducers/shortUrlVisits'; +import type { ShortUrlVisits } from './reducers/shortUrlVisits'; import { VisitsHeader } from './VisitsHeader'; import './ShortUrlVisitsHeader.scss'; diff --git a/src/visits/TagVisits.tsx b/src/visits/TagVisits.tsx index 3d2510c1..85738cf3 100644 --- a/src/visits/TagVisits.tsx +++ b/src/visits/TagVisits.tsx @@ -1,15 +1,15 @@ import { useParams } from 'react-router-dom'; import { boundToMercureHub } from '../mercure/helpers/boundToMercureHub'; -import { ColorGenerator } from '../utils/services/ColorGenerator'; -import { ShlinkVisitsParams } from '../api/types'; +import type { ColorGenerator } from '../utils/services/ColorGenerator'; +import type { ShlinkVisitsParams } from '../api/types'; import { Topics } from '../mercure/helpers/Topics'; import { useGoBack } from '../utils/helpers/hooks'; -import { ReportExporter } from '../common/services/ReportExporter'; -import { LoadTagVisits, TagVisits as TagVisitsState } from './reducers/tagVisits'; +import type { ReportExporter } from '../common/services/ReportExporter'; +import type { LoadTagVisits, TagVisits as TagVisitsState } from './reducers/tagVisits'; import { TagVisitsHeader } from './TagVisitsHeader'; import { VisitsStats } from './VisitsStats'; -import { NormalizedVisit } from './types'; -import { CommonVisitsProps } from './types/CommonVisitsProps'; +import type { NormalizedVisit } from './types'; +import type { CommonVisitsProps } from './types/CommonVisitsProps'; import { toApiParams } from './types/helpers'; export interface TagVisitsProps extends CommonVisitsProps { diff --git a/src/visits/TagVisitsHeader.tsx b/src/visits/TagVisitsHeader.tsx index 0de9df7c..6a3970cf 100644 --- a/src/visits/TagVisitsHeader.tsx +++ b/src/visits/TagVisitsHeader.tsx @@ -1,7 +1,7 @@ import { Tag } from '../tags/helpers/Tag'; -import { ColorGenerator } from '../utils/services/ColorGenerator'; +import type { ColorGenerator } from '../utils/services/ColorGenerator'; import { VisitsHeader } from './VisitsHeader'; -import { TagVisits } from './reducers/tagVisits'; +import type { TagVisits } from './reducers/tagVisits'; import './ShortUrlVisitsHeader.scss'; interface TagVisitsHeaderProps { diff --git a/src/visits/VisitsHeader.tsx b/src/visits/VisitsHeader.tsx index 7dca6459..e42a8b82 100644 --- a/src/visits/VisitsHeader.tsx +++ b/src/visits/VisitsHeader.tsx @@ -1,10 +1,10 @@ import { Button, Card } from 'reactstrap'; -import { FC, PropsWithChildren, ReactNode } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faArrowLeft } from '@fortawesome/free-solid-svg-icons'; import { ShortUrlVisitsCount } from '../short-urls/helpers/ShortUrlVisitsCount'; -import { ShortUrl } from '../short-urls/data'; -import { Visit } from './types'; +import type { ShortUrl } from '../short-urls/data'; +import type { Visit } from './types'; type VisitsHeaderProps = PropsWithChildren<{ visits: Visit[]; diff --git a/src/visits/VisitsStats.tsx b/src/visits/VisitsStats.tsx index d2c2a767..72f618a2 100644 --- a/src/visits/VisitsStats.tsx +++ b/src/visits/VisitsStats.tsx @@ -1,31 +1,34 @@ import { isEmpty, pipe, propEq, values } from 'ramda'; -import { useState, useEffect, useMemo, FC, useRef, PropsWithChildren } from 'react'; +import type { FC, PropsWithChildren } from 'react'; +import { useState, useEffect, useMemo, useRef } from 'react'; import { Button, Progress, Row } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCalendarAlt, faMapMarkedAlt, faList, faChartPie } from '@fortawesome/free-solid-svg-icons'; -import { IconDefinition } from '@fortawesome/fontawesome-common-types'; +import type { IconDefinition } from '@fortawesome/fontawesome-common-types'; import { Route, Routes, Navigate, useLocation } from 'react-router-dom'; import classNames from 'classnames'; import { DateRangeSelector } from '../utils/dates/DateRangeSelector'; import { Message } from '../utils/Message'; import { Result } from '../utils/Result'; import { ShlinkApiError } from '../api/ShlinkApiError'; -import { Settings } from '../settings/reducers/settings'; +import type { Settings } from '../settings/reducers/settings'; import { prettify } from '../utils/helpers/numbers'; import { NavPillItem, NavPills } from '../utils/NavPills'; import { ExportBtn } from '../utils/ExportBtn'; import { LineChartCard } from './charts/LineChartCard'; import { VisitsTable } from './VisitsTable'; -import { NormalizedOrphanVisit, NormalizedVisit, VisitsParams } from './types'; +import type { NormalizedOrphanVisit, NormalizedVisit, VisitsParams } from './types'; import { OpenMapModalBtn } from './helpers/OpenMapModalBtn'; import { normalizeVisits, processStatsFromVisits } from './services/VisitsParser'; import { VisitsFilterDropdown } from './helpers/VisitsFilterDropdown'; -import { HighlightableProps, highlightedVisitsToStats } from './types/helpers'; +import type { HighlightableProps } from './types/helpers'; +import { highlightedVisitsToStats } from './types/helpers'; import { DoughnutChartCard } from './charts/DoughnutChartCard'; import { SortableBarChartCard } from './charts/SortableBarChartCard'; -import { VisitsInfo } from './reducers/types'; +import type { VisitsInfo } from './reducers/types'; import { useVisitsQuery } from './helpers/hooks'; -import { DateInterval, DateRange, toDateRange } from '../utils/helpers/dateIntervals'; +import type { DateInterval, DateRange } from '../utils/helpers/dateIntervals'; +import { toDateRange } from '../utils/helpers/dateIntervals'; export type VisitsStatsProps = PropsWithChildren<{ getVisits: (params: VisitsParams, doIntervalFallback?: boolean) => void; diff --git a/src/visits/VisitsTable.tsx b/src/visits/VisitsTable.tsx index 311ce160..0990e426 100644 --- a/src/visits/VisitsTable.tsx +++ b/src/visits/VisitsTable.tsx @@ -6,12 +6,13 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { UncontrolledTooltip } from 'reactstrap'; import { SimplePaginator } from '../common/SimplePaginator'; import { SearchField } from '../utils/SearchField'; -import { determineOrderDir, Order, sortList } from '../utils/helpers/ordering'; +import type { Order } from '../utils/helpers/ordering'; +import { determineOrderDir, sortList } from '../utils/helpers/ordering'; import { prettify } from '../utils/helpers/numbers'; import { Time } from '../utils/dates/Time'; import { TableOrderIcon } from '../utils/table/TableOrderIcon'; -import { MediaMatcher } from '../utils/types'; -import { NormalizedOrphanVisit, NormalizedVisit } from './types'; +import type { MediaMatcher } from '../utils/types'; +import type { NormalizedOrphanVisit, NormalizedVisit } from './types'; import './VisitsTable.scss'; export interface VisitsTableProps { diff --git a/src/visits/charts/ChartCard.tsx b/src/visits/charts/ChartCard.tsx index bb1e8253..8f74f1d1 100644 --- a/src/visits/charts/ChartCard.tsx +++ b/src/visits/charts/ChartCard.tsx @@ -1,5 +1,5 @@ import { Card, CardHeader, CardBody, CardFooter } from 'reactstrap'; -import { FC, PropsWithChildren, ReactNode } from 'react'; +import type { FC, PropsWithChildren, ReactNode } from 'react'; import './ChartCard.scss'; type ChartCardProps = PropsWithChildren<{ diff --git a/src/visits/charts/DoughnutChart.tsx b/src/visits/charts/DoughnutChart.tsx index bc403488..f41337aa 100644 --- a/src/visits/charts/DoughnutChart.tsx +++ b/src/visits/charts/DoughnutChart.tsx @@ -1,10 +1,11 @@ -import { FC, useState, memo } from 'react'; -import { Chart, ChartData, ChartDataset, ChartOptions } from 'chart.js'; +import type { FC } from 'react'; +import { useState, memo } from 'react'; +import type { Chart, ChartData, ChartDataset, ChartOptions } from 'chart.js'; import { keys, values } from 'ramda'; import { Doughnut } from 'react-chartjs-2'; import { renderPieChartLabel } from '../../utils/helpers/charts'; import { isDarkThemeEnabled, PRIMARY_DARK_COLOR, PRIMARY_LIGHT_COLOR } from '../../utils/theme'; -import { Stats } from '../types'; +import type { Stats } from '../types'; import { DoughnutChartLegend } from './DoughnutChartLegend'; interface DoughnutChartProps { diff --git a/src/visits/charts/DoughnutChartCard.tsx b/src/visits/charts/DoughnutChartCard.tsx index 3febaacc..fc3c2425 100644 --- a/src/visits/charts/DoughnutChartCard.tsx +++ b/src/visits/charts/DoughnutChartCard.tsx @@ -1,5 +1,5 @@ -import { FC } from 'react'; -import { Stats } from '../types'; +import type { FC } from 'react'; +import type { Stats } from '../types'; import { DoughnutChart } from './DoughnutChart'; import { ChartCard } from './ChartCard'; diff --git a/src/visits/charts/DoughnutChartLegend.tsx b/src/visits/charts/DoughnutChartLegend.tsx index cd843031..d075492c 100644 --- a/src/visits/charts/DoughnutChartLegend.tsx +++ b/src/visits/charts/DoughnutChartLegend.tsx @@ -1,5 +1,5 @@ -import { FC } from 'react'; -import { Chart } from 'chart.js'; +import type { FC } from 'react'; +import type { Chart } from 'chart.js'; import './DoughnutChartLegend.scss'; interface DoughnutChartLegendProps { diff --git a/src/visits/charts/HorizontalBarChart.tsx b/src/visits/charts/HorizontalBarChart.tsx index 2c9bcb22..5de8885e 100644 --- a/src/visits/charts/HorizontalBarChart.tsx +++ b/src/visits/charts/HorizontalBarChart.tsx @@ -1,11 +1,12 @@ -import { FC, MutableRefObject, useRef } from 'react'; -import { ChartData, ChartDataset, ChartOptions, InteractionItem } from 'chart.js'; +import type { FC, MutableRefObject } from 'react'; +import { useRef } from 'react'; +import type { ChartData, ChartDataset, ChartOptions, InteractionItem } from 'chart.js'; import { keys, values } from 'ramda'; import { Bar, getElementAtEvent } from 'react-chartjs-2'; import { fillTheGaps } from '../../utils/helpers/visits'; import { pointerOnHover, renderChartLabel } from '../../utils/helpers/charts'; import { prettify } from '../../utils/helpers/numbers'; -import { Stats } from '../types'; +import type { Stats } from '../types'; import { HIGHLIGHTED_COLOR, HIGHLIGHTED_COLOR_ALPHA, MAIN_COLOR, MAIN_COLOR_ALPHA } from '../../utils/theme'; export interface HorizontalBarChartProps { diff --git a/src/visits/charts/LineChartCard.tsx b/src/visits/charts/LineChartCard.tsx index c83fd5b8..b44de862 100644 --- a/src/visits/charts/LineChartCard.tsx +++ b/src/visits/charts/LineChartCard.tsx @@ -1,4 +1,5 @@ -import { useState, useMemo, MutableRefObject, useRef } from 'react'; +import type { MutableRefObject } from 'react'; +import { useState, useMemo, useRef } from 'react'; import { Card, CardHeader, @@ -21,8 +22,8 @@ import { startOfISOWeek, endOfISOWeek, } from 'date-fns'; -import { ChartData, ChartDataset, ChartOptions, InteractionItem } from 'chart.js'; -import { NormalizedVisit, Stats } from '../types'; +import type { ChartData, ChartDataset, ChartOptions, InteractionItem } from 'chart.js'; +import type { NormalizedVisit, Stats } from '../types'; import { fillTheGaps } from '../../utils/helpers/visits'; import { useToggle } from '../../utils/helpers/hooks'; import { rangeOf } from '../../utils/utils'; diff --git a/src/visits/charts/SortableBarChartCard.tsx b/src/visits/charts/SortableBarChartCard.tsx index 04ac4f33..a1ee4c37 100644 --- a/src/visits/charts/SortableBarChartCard.tsx +++ b/src/visits/charts/SortableBarChartCard.tsx @@ -1,13 +1,15 @@ -import { FC, ReactNode, useState } from 'react'; +import type { FC, ReactNode } from 'react'; +import { useState } from 'react'; import { fromPairs, pipe, reverse, sortBy, splitEvery, toLower, toPairs, type, zipObj } from 'ramda'; import { rangeOf } from '../../utils/utils'; -import { Order } from '../../utils/helpers/ordering'; +import type { Order } from '../../utils/helpers/ordering'; import { SimplePaginator } from '../../common/SimplePaginator'; import { roundTen } from '../../utils/helpers/numbers'; import { OrderingDropdown } from '../../utils/OrderingDropdown'; import { PaginationDropdown } from '../../utils/PaginationDropdown'; -import { Stats, StatsRow } from '../types'; -import { HorizontalBarChart, HorizontalBarChartProps } from './HorizontalBarChart'; +import type { Stats, StatsRow } from '../types'; +import type { HorizontalBarChartProps } from './HorizontalBarChart'; +import { HorizontalBarChart } from './HorizontalBarChart'; import { ChartCard } from './ChartCard'; interface SortableBarChartCardProps extends Omit { diff --git a/src/visits/helpers/MapModal.tsx b/src/visits/helpers/MapModal.tsx index c2118031..cfb69ffc 100644 --- a/src/visits/helpers/MapModal.tsx +++ b/src/visits/helpers/MapModal.tsx @@ -1,8 +1,9 @@ -import { FC } from 'react'; +import type { FC } from 'react'; import { Modal, ModalBody } from 'reactstrap'; -import { MapContainer, TileLayer, Marker, Popup, MapContainerProps } from 'react-leaflet'; +import type { MapContainerProps } from 'react-leaflet'; +import { MapContainer, TileLayer, Marker, Popup } from 'react-leaflet'; import { prop } from 'ramda'; -import { CityStats } from '../types'; +import type { CityStats } from '../types'; import './MapModal.scss'; interface MapModalProps { diff --git a/src/visits/helpers/OpenMapModalBtn.tsx b/src/visits/helpers/OpenMapModalBtn.tsx index 9d3032e7..589ff55e 100644 --- a/src/visits/helpers/OpenMapModalBtn.tsx +++ b/src/visits/helpers/OpenMapModalBtn.tsx @@ -3,7 +3,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faMapMarkedAlt as mapIcon } from '@fortawesome/free-solid-svg-icons'; import { Button, Dropdown, DropdownItem, DropdownMenu, UncontrolledTooltip } from 'reactstrap'; import { useDomId, useToggle } from '../../utils/helpers/hooks'; -import { CityStats } from '../types'; +import type { CityStats } from '../types'; import { MapModal } from './MapModal'; import './OpenMapModalBtn.scss'; diff --git a/src/visits/helpers/VisitsFilterDropdown.tsx b/src/visits/helpers/VisitsFilterDropdown.tsx index ebc5bc31..a1aca0ac 100644 --- a/src/visits/helpers/VisitsFilterDropdown.tsx +++ b/src/visits/helpers/VisitsFilterDropdown.tsx @@ -1,5 +1,6 @@ -import { DropdownItem, DropdownItemProps } from 'reactstrap'; -import { OrphanVisitType, VisitsFilter } from '../types'; +import type { DropdownItemProps } from 'reactstrap'; +import { DropdownItem } from 'reactstrap'; +import type { OrphanVisitType, VisitsFilter } from '../types'; import { DropdownBtn } from '../../utils/DropdownBtn'; import { hasValue } from '../../utils/utils'; diff --git a/src/visits/helpers/hooks.ts b/src/visits/helpers/hooks.ts index 1c57d8d7..e8b6d072 100644 --- a/src/visits/helpers/hooks.ts +++ b/src/visits/helpers/hooks.ts @@ -1,12 +1,14 @@ -import { DeepPartial } from '@reduxjs/toolkit'; +import type { DeepPartial } from '@reduxjs/toolkit'; import { useLocation, useNavigate } from 'react-router-dom'; import { useMemo } from 'react'; import { isEmpty, isNil, mergeDeepRight, pipe } from 'ramda'; -import { DateRange, datesToDateRange } from '../../utils/helpers/dateIntervals'; -import { OrphanVisitType, VisitsFilter } from '../types'; +import type { DateRange } from '../../utils/helpers/dateIntervals'; +import { datesToDateRange } from '../../utils/helpers/dateIntervals'; +import type { OrphanVisitType, VisitsFilter } from '../types'; import { parseQuery, stringifyQuery } from '../../utils/helpers/query'; import { formatIsoDate } from '../../utils/helpers/date'; -import { BooleanString, parseBooleanToString } from '../../utils/utils'; +import type { BooleanString } from '../../utils/utils'; +import { parseBooleanToString } from '../../utils/utils'; interface VisitsQuery { startDate?: string; diff --git a/src/visits/reducers/common.ts b/src/visits/reducers/common.ts index b3abfddd..108a2e56 100644 --- a/src/visits/reducers/common.ts +++ b/src/visits/reducers/common.ts @@ -1,11 +1,12 @@ import { flatten, prop, range, splitEvery } from 'ramda'; import { createAction, createSlice } from '@reduxjs/toolkit'; -import { ShlinkPaginator, ShlinkVisits, ShlinkVisitsParams } from '../../api/types'; -import { CreateVisit, Visit } from '../types'; -import { DateInterval, dateToMatchingInterval } from '../../utils/helpers/dateIntervals'; -import { LoadVisits, VisitsInfo, VisitsLoaded } from './types'; +import type { ShlinkPaginator, ShlinkVisits, ShlinkVisitsParams } from '../../api/types'; +import type { CreateVisit, Visit } from '../types'; +import type { DateInterval } from '../../utils/helpers/dateIntervals'; +import { dateToMatchingInterval } from '../../utils/helpers/dateIntervals'; +import type { LoadVisits, VisitsInfo, VisitsLoaded } from './types'; import { createAsyncThunk } from '../../utils/helpers/redux'; -import { ShlinkState } from '../../container/types'; +import type { ShlinkState } from '../../container/types'; import { parseApiError } from '../../api/utils'; import { createNewVisits } from './visitCreation'; diff --git a/src/visits/reducers/domainVisits.ts b/src/visits/reducers/domainVisits.ts index a44d1cfc..24018445 100644 --- a/src/visits/reducers/domainVisits.ts +++ b/src/visits/reducers/domainVisits.ts @@ -1,8 +1,8 @@ -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { isBetween } from '../../utils/helpers/date'; import { createVisitsAsyncThunk, createVisitsReducer, lastVisitLoaderForLoader } from './common'; import { domainMatches } from '../../short-urls/helpers'; -import { LoadVisits, VisitsInfo } from './types'; +import type { LoadVisits, VisitsInfo } from './types'; const REDUCER_PREFIX = 'shlink/domainVisits'; diff --git a/src/visits/reducers/nonOrphanVisits.ts b/src/visits/reducers/nonOrphanVisits.ts index 83db3f43..6156cb74 100644 --- a/src/visits/reducers/nonOrphanVisits.ts +++ b/src/visits/reducers/nonOrphanVisits.ts @@ -1,7 +1,7 @@ -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { isBetween } from '../../utils/helpers/date'; import { createVisitsAsyncThunk, createVisitsReducer, lastVisitLoaderForLoader } from './common'; -import { VisitsInfo } from './types'; +import type { VisitsInfo } from './types'; const REDUCER_PREFIX = 'shlink/orphanVisits'; diff --git a/src/visits/reducers/orphanVisits.ts b/src/visits/reducers/orphanVisits.ts index 269aa764..48292265 100644 --- a/src/visits/reducers/orphanVisits.ts +++ b/src/visits/reducers/orphanVisits.ts @@ -1,9 +1,9 @@ -import { OrphanVisit, OrphanVisitType } from '../types'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { OrphanVisit, OrphanVisitType } from '../types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { isOrphanVisit } from '../types/helpers'; import { isBetween } from '../../utils/helpers/date'; import { createVisitsAsyncThunk, createVisitsReducer, lastVisitLoaderForLoader } from './common'; -import { LoadVisits, VisitsInfo } from './types'; +import type { LoadVisits, VisitsInfo } from './types'; const REDUCER_PREFIX = 'shlink/orphanVisits'; diff --git a/src/visits/reducers/shortUrlVisits.ts b/src/visits/reducers/shortUrlVisits.ts index 1c434787..2e37b176 100644 --- a/src/visits/reducers/shortUrlVisits.ts +++ b/src/visits/reducers/shortUrlVisits.ts @@ -1,9 +1,9 @@ import { shortUrlMatches } from '../../short-urls/helpers'; -import { ShortUrlIdentifier } from '../../short-urls/data'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShortUrlIdentifier } from '../../short-urls/data'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { isBetween } from '../../utils/helpers/date'; import { createVisitsAsyncThunk, createVisitsReducer, lastVisitLoaderForLoader } from './common'; -import { LoadVisits, VisitsInfo } from './types'; +import type { LoadVisits, VisitsInfo } from './types'; const REDUCER_PREFIX = 'shlink/shortUrlVisits'; diff --git a/src/visits/reducers/tagVisits.ts b/src/visits/reducers/tagVisits.ts index 66b86ca0..ff2b2374 100644 --- a/src/visits/reducers/tagVisits.ts +++ b/src/visits/reducers/tagVisits.ts @@ -1,7 +1,7 @@ -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { isBetween } from '../../utils/helpers/date'; import { createVisitsAsyncThunk, createVisitsReducer, lastVisitLoaderForLoader } from './common'; -import { LoadVisits, VisitsInfo } from './types'; +import type { LoadVisits, VisitsInfo } from './types'; const REDUCER_PREFIX = 'shlink/tagVisits'; diff --git a/src/visits/reducers/types/index.ts b/src/visits/reducers/types/index.ts index f3e0e353..f61be0a9 100644 --- a/src/visits/reducers/types/index.ts +++ b/src/visits/reducers/types/index.ts @@ -1,7 +1,7 @@ -import { ShlinkVisitsParams } from '../../../api/types'; -import { DateInterval } from '../../../utils/helpers/dateIntervals'; -import { ProblemDetailsError } from '../../../api/types/errors'; -import { Visit } from '../../types'; +import type { ShlinkVisitsParams } from '../../../api/types'; +import type { DateInterval } from '../../../utils/helpers/dateIntervals'; +import type { ProblemDetailsError } from '../../../api/types/errors'; +import type { Visit } from '../../types'; export interface VisitsInfo { visits: Visit[]; diff --git a/src/visits/reducers/visitCreation.ts b/src/visits/reducers/visitCreation.ts index eb037bd7..3504251e 100644 --- a/src/visits/reducers/visitCreation.ts +++ b/src/visits/reducers/visitCreation.ts @@ -1,5 +1,6 @@ -import { createAction, PayloadAction } from '@reduxjs/toolkit'; -import { CreateVisit } from '../types'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createAction } from '@reduxjs/toolkit'; +import type { CreateVisit } from '../types'; export type CreateVisitsAction = PayloadAction<{ createdVisits: CreateVisit[]; diff --git a/src/visits/reducers/visitsOverview.ts b/src/visits/reducers/visitsOverview.ts index 105bfd2b..b1f6417e 100644 --- a/src/visits/reducers/visitsOverview.ts +++ b/src/visits/reducers/visitsOverview.ts @@ -1,6 +1,7 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { ShlinkVisitsOverview } from '../../api/types'; -import { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; +import type { ShlinkVisitsOverview } from '../../api/types'; +import type { ShlinkApiClientBuilder } from '../../api/services/ShlinkApiClientBuilder'; import { createAsyncThunk } from '../../utils/helpers/redux'; import { groupNewVisitsByType } from '../types/helpers'; import { createNewVisits } from './visitCreation'; diff --git a/src/visits/services/VisitsParser.ts b/src/visits/services/VisitsParser.ts index d9826152..9d10e706 100644 --- a/src/visits/services/VisitsParser.ts +++ b/src/visits/services/VisitsParser.ts @@ -1,7 +1,7 @@ import { isNil, map } from 'ramda'; import { extractDomain, parseUserAgent } from '../../utils/helpers/visits'; import { hasValue } from '../../utils/utils'; -import { CityStats, NormalizedVisit, Stats, Visit, VisitsStats } from '../types'; +import type { CityStats, NormalizedVisit, Stats, Visit, VisitsStats } from '../types'; import { isNormalizedOrphanVisit, isOrphanVisit } from '../types/helpers'; /* eslint-disable no-param-reassign */ diff --git a/src/visits/services/provideServices.ts b/src/visits/services/provideServices.ts index bff16548..569ae852 100644 --- a/src/visits/services/provideServices.ts +++ b/src/visits/services/provideServices.ts @@ -1,4 +1,4 @@ -import Bottle from 'bottlejs'; +import type Bottle from 'bottlejs'; import { prop } from 'ramda'; import { MapModal } from '../helpers/MapModal'; import { createNewVisits } from '../reducers/visitCreation'; @@ -11,7 +11,7 @@ import { getTagVisits, tagVisitsReducerCreator } from '../reducers/tagVisits'; import { getDomainVisits, domainVisitsReducerCreator } from '../reducers/domainVisits'; import { getOrphanVisits, orphanVisitsReducerCreator } from '../reducers/orphanVisits'; import { getNonOrphanVisits, nonOrphanVisitsReducerCreator } from '../reducers/nonOrphanVisits'; -import { ConnectDecorator } from '../../container/types'; +import type { ConnectDecorator } from '../../container/types'; import { loadVisitsOverview, visitsOverviewReducerCreator } from '../reducers/visitsOverview'; import * as visitsParser from './VisitsParser'; import { DomainVisits } from '../DomainVisits'; diff --git a/src/visits/types/CommonVisitsProps.ts b/src/visits/types/CommonVisitsProps.ts index d376f027..55ff817c 100644 --- a/src/visits/types/CommonVisitsProps.ts +++ b/src/visits/types/CommonVisitsProps.ts @@ -1,4 +1,4 @@ -import { Settings } from '../../settings/reducers/settings'; +import type { Settings } from '../../settings/reducers/settings'; export interface CommonVisitsProps { settings: Settings; diff --git a/src/visits/types/helpers.ts b/src/visits/types/helpers.ts index 04509d03..226a2514 100644 --- a/src/visits/types/helpers.ts +++ b/src/visits/types/helpers.ts @@ -1,7 +1,7 @@ import { countBy, groupBy, pipe, prop } from 'ramda'; import { formatIsoDate } from '../../utils/helpers/date'; -import { ShlinkVisitsParams } from '../../api/types'; -import { CreateVisit, NormalizedOrphanVisit, NormalizedVisit, OrphanVisit, Stats, Visit, VisitsParams } from './index'; +import type { ShlinkVisitsParams } from '../../api/types'; +import type { CreateVisit, NormalizedOrphanVisit, NormalizedVisit, OrphanVisit, Stats, Visit, VisitsParams } from './index'; export const isOrphanVisit = (visit: Visit): visit is OrphanVisit => (visit as OrphanVisit).visitedUrl !== undefined; diff --git a/src/visits/types/index.ts b/src/visits/types/index.ts index 0ff67d6b..503f8170 100644 --- a/src/visits/types/index.ts +++ b/src/visits/types/index.ts @@ -1,5 +1,5 @@ -import { ShortUrl } from '../../short-urls/data'; -import { DateRange } from '../../utils/helpers/dateIntervals'; +import type { ShortUrl } from '../../short-urls/data'; +import type { DateRange } from '../../utils/helpers/dateIntervals'; export type OrphanVisitType = 'base_url' | 'invalid_short_url' | 'regular_404'; diff --git a/test/__helpers__/TestModalWrapper.tsx b/test/__helpers__/TestModalWrapper.tsx index e2364192..a673827b 100644 --- a/test/__helpers__/TestModalWrapper.tsx +++ b/test/__helpers__/TestModalWrapper.tsx @@ -1,4 +1,4 @@ -import { FC, ReactElement } from 'react'; +import type { FC, ReactElement } from 'react'; import { useToggle } from '../../src/utils/helpers/hooks'; interface RenderModalArgs { diff --git a/test/__helpers__/setUpTest.ts b/test/__helpers__/setUpTest.ts index 210a88ff..424d177a 100644 --- a/test/__helpers__/setUpTest.ts +++ b/test/__helpers__/setUpTest.ts @@ -1,4 +1,4 @@ -import { ReactElement } from 'react'; +import type { ReactElement } from 'react'; import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; diff --git a/test/api/ShlinkApiError.test.tsx b/test/api/ShlinkApiError.test.tsx index a7aaebc1..daa42f69 100644 --- a/test/api/ShlinkApiError.test.tsx +++ b/test/api/ShlinkApiError.test.tsx @@ -1,7 +1,9 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { ShlinkApiError, ShlinkApiErrorProps } from '../../src/api/ShlinkApiError'; -import { ErrorTypeV2, ErrorTypeV3, InvalidArgumentError, ProblemDetailsError } from '../../src/api/types/errors'; +import type { ShlinkApiErrorProps } from '../../src/api/ShlinkApiError'; +import { ShlinkApiError } from '../../src/api/ShlinkApiError'; +import type { InvalidArgumentError, ProblemDetailsError } from '../../src/api/types/errors'; +import { ErrorTypeV2, ErrorTypeV3 } from '../../src/api/types/errors'; describe('', () => { const setUp = (props: ShlinkApiErrorProps) => render(); diff --git a/test/api/services/ShlinkApiClient.test.ts b/test/api/services/ShlinkApiClient.test.ts index 802e0678..ac8bdd98 100644 --- a/test/api/services/ShlinkApiClient.test.ts +++ b/test/api/services/ShlinkApiClient.test.ts @@ -1,10 +1,10 @@ import { Mock } from 'ts-mockery'; import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { OptionalString } from '../../../src/utils/utils'; -import { ShlinkDomain, ShlinkVisits, ShlinkVisitsOverview } from '../../../src/api/types'; -import { ShortUrl, ShortUrlsOrder } from '../../../src/short-urls/data'; +import type { OptionalString } from '../../../src/utils/utils'; +import type { ShlinkDomain, ShlinkVisits, ShlinkVisitsOverview } from '../../../src/api/types'; +import type { ShortUrl, ShortUrlsOrder } from '../../../src/short-urls/data'; import { ErrorTypeV2, ErrorTypeV3 } from '../../../src/api/types/errors'; -import { HttpClient } from '../../../src/common/services/HttpClient'; +import type { HttpClient } from '../../../src/common/services/HttpClient'; describe('ShlinkApiClient', () => { const fetchJson = jest.fn().mockResolvedValue({}); diff --git a/test/api/services/ShlinkApiClientBuilder.test.ts b/test/api/services/ShlinkApiClientBuilder.test.ts index 18c29ebf..f6dc44be 100644 --- a/test/api/services/ShlinkApiClientBuilder.test.ts +++ b/test/api/services/ShlinkApiClientBuilder.test.ts @@ -1,8 +1,8 @@ import { Mock } from 'ts-mockery'; import { buildShlinkApiClient } from '../../../src/api/services/ShlinkApiClientBuilder'; -import { ReachableServer, SelectedServer } from '../../../src/servers/data'; -import { ShlinkState } from '../../../src/container/types'; -import { HttpClient } from '../../../src/common/services/HttpClient'; +import type { ReachableServer, SelectedServer } from '../../../src/servers/data'; +import type { ShlinkState } from '../../../src/container/types'; +import type { HttpClient } from '../../../src/common/services/HttpClient'; describe('ShlinkApiClientBuilder', () => { const server = (data: Partial) => Mock.of(data); diff --git a/test/app/App.test.tsx b/test/app/App.test.tsx index a286c61f..234fd86f 100644 --- a/test/app/App.test.tsx +++ b/test/app/App.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { Router } from 'react-router-dom'; import { createMemoryHistory } from 'history'; import { Mock } from 'ts-mockery'; -import { Settings } from '../../src/settings/reducers/settings'; +import type { Settings } from '../../src/settings/reducers/settings'; import { App as createApp } from '../../src/app/App'; describe('', () => { diff --git a/test/common/AsideMenu.test.tsx b/test/common/AsideMenu.test.tsx index 6874053d..0efe448d 100644 --- a/test/common/AsideMenu.test.tsx +++ b/test/common/AsideMenu.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { AsideMenu as createAsideMenu } from '../../src/common/AsideMenu'; -import { ReachableServer } from '../../src/servers/data'; +import type { ReachableServer } from '../../src/servers/data'; describe('', () => { const AsideMenu = createAsideMenu(() => <>DeleteServerButton); diff --git a/test/common/Home.test.tsx b/test/common/Home.test.tsx index 75c14047..6308eb9a 100644 --- a/test/common/Home.test.tsx +++ b/test/common/Home.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { Home } from '../../src/common/Home'; -import { ServersMap, ServerWithId } from '../../src/servers/data'; +import type { ServersMap, ServerWithId } from '../../src/servers/data'; describe('', () => { const setUp = (servers: ServersMap = {}) => render( diff --git a/test/common/MenuLayout.test.tsx b/test/common/MenuLayout.test.tsx index e2ebc468..ca2b9948 100644 --- a/test/common/MenuLayout.test.tsx +++ b/test/common/MenuLayout.test.tsx @@ -3,8 +3,8 @@ import { Router, useParams } from 'react-router-dom'; import { createMemoryHistory } from 'history'; import { Mock } from 'ts-mockery'; import { MenuLayout as createMenuLayout } from '../../src/common/MenuLayout'; -import { NonReachableServer, NotFoundServer, ReachableServer, SelectedServer } from '../../src/servers/data'; -import { SemVer } from '../../src/utils/helpers/version'; +import type { NonReachableServer, NotFoundServer, ReachableServer, SelectedServer } from '../../src/servers/data'; +import type { SemVer } from '../../src/utils/helpers/version'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useParams: jest.fn() })); diff --git a/test/common/ShlinkVersions.test.tsx b/test/common/ShlinkVersions.test.tsx index 7c6127f1..cd35d9d7 100644 --- a/test/common/ShlinkVersions.test.tsx +++ b/test/common/ShlinkVersions.test.tsx @@ -1,7 +1,8 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { ShlinkVersions, ShlinkVersionsProps } from '../../src/common/ShlinkVersions'; -import { NonReachableServer, NotFoundServer, ReachableServer } from '../../src/servers/data'; +import type { ShlinkVersionsProps } from '../../src/common/ShlinkVersions'; +import { ShlinkVersions } from '../../src/common/ShlinkVersions'; +import type { NonReachableServer, NotFoundServer, ReachableServer } from '../../src/servers/data'; describe('', () => { const setUp = (props: ShlinkVersionsProps) => render(); diff --git a/test/common/ShlinkVersionsContainer.test.tsx b/test/common/ShlinkVersionsContainer.test.tsx index 1920fdc2..db3e7c9e 100644 --- a/test/common/ShlinkVersionsContainer.test.tsx +++ b/test/common/ShlinkVersionsContainer.test.tsx @@ -1,8 +1,8 @@ import { render } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { ShlinkVersionsContainer } from '../../src/common/ShlinkVersionsContainer'; -import { SelectedServer } from '../../src/servers/data'; -import { Sidebar } from '../../src/common/reducers/sidebar'; +import type { SelectedServer } from '../../src/servers/data'; +import type { Sidebar } from '../../src/common/reducers/sidebar'; describe('', () => { const setUp = (sidebar: Sidebar) => render( diff --git a/test/common/img/ShlinkLogo.test.tsx b/test/common/img/ShlinkLogo.test.tsx index d1c6cc61..6fcc6459 100644 --- a/test/common/img/ShlinkLogo.test.tsx +++ b/test/common/img/ShlinkLogo.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; -import { ShlinkLogo, ShlinkLogoProps } from '../../../src/common/img/ShlinkLogo'; +import type { ShlinkLogoProps } from '../../../src/common/img/ShlinkLogo'; +import { ShlinkLogo } from '../../../src/common/img/ShlinkLogo'; import { MAIN_COLOR } from '../../../src/utils/theme'; describe('', () => { diff --git a/test/common/services/ImageDownloader.test.ts b/test/common/services/ImageDownloader.test.ts index e33c4ecf..a1047c27 100644 --- a/test/common/services/ImageDownloader.test.ts +++ b/test/common/services/ImageDownloader.test.ts @@ -1,6 +1,6 @@ import { Mock } from 'ts-mockery'; import { ImageDownloader } from '../../../src/common/services/ImageDownloader'; -import { HttpClient } from '../../../src/common/services/HttpClient'; +import type { HttpClient } from '../../../src/common/services/HttpClient'; import { windowMock } from '../../__mocks__/Window.mock'; describe('ImageDownloader', () => { diff --git a/test/common/services/ReportExporter.test.ts b/test/common/services/ReportExporter.test.ts index 02097005..45f7b2a6 100644 --- a/test/common/services/ReportExporter.test.ts +++ b/test/common/services/ReportExporter.test.ts @@ -1,7 +1,7 @@ import { ReportExporter } from '../../../src/common/services/ReportExporter'; -import { NormalizedVisit } from '../../../src/visits/types'; +import type { NormalizedVisit } from '../../../src/visits/types'; import { windowMock } from '../../__mocks__/Window.mock'; -import { ExportableShortUrl } from '../../../src/short-urls/data'; +import type { ExportableShortUrl } from '../../../src/short-urls/data'; describe('ReportExporter', () => { const jsonToCsv = jest.fn(); diff --git a/test/domains/DomainRow.test.tsx b/test/domains/DomainRow.test.tsx index 0c506a88..1c26a18b 100644 --- a/test/domains/DomainRow.test.tsx +++ b/test/domains/DomainRow.test.tsx @@ -1,9 +1,9 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { ShlinkDomainRedirects } from '../../src/api/types'; +import type { ShlinkDomainRedirects } from '../../src/api/types'; import { DomainRow } from '../../src/domains/DomainRow'; -import { SelectedServer } from '../../src/servers/data'; -import { Domain } from '../../src/domains/data'; +import type { SelectedServer } from '../../src/servers/data'; +import type { Domain } from '../../src/domains/data'; describe('', () => { const redirectsCombinations = [ diff --git a/test/domains/DomainSelector.test.tsx b/test/domains/DomainSelector.test.tsx index e2effdf4..97fd4e4d 100644 --- a/test/domains/DomainSelector.test.tsx +++ b/test/domains/DomainSelector.test.tsx @@ -1,8 +1,8 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { DomainSelector } from '../../src/domains/DomainSelector'; -import { DomainsList } from '../../src/domains/reducers/domainsList'; -import { ShlinkDomain } from '../../src/api/types'; +import type { DomainsList } from '../../src/domains/reducers/domainsList'; +import type { ShlinkDomain } from '../../src/api/types'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/domains/ManageDomains.test.tsx b/test/domains/ManageDomains.test.tsx index 4726ed4e..0003e088 100644 --- a/test/domains/ManageDomains.test.tsx +++ b/test/domains/ManageDomains.test.tsx @@ -1,11 +1,11 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { DomainsList } from '../../src/domains/reducers/domainsList'; +import type { DomainsList } from '../../src/domains/reducers/domainsList'; import { ManageDomains } from '../../src/domains/ManageDomains'; -import { ShlinkDomain } from '../../src/api/types'; -import { SelectedServer } from '../../src/servers/data'; +import type { ShlinkDomain } from '../../src/api/types'; +import type { SelectedServer } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; -import { ProblemDetailsError } from '../../src/api/types/errors'; +import type { ProblemDetailsError } from '../../src/api/types/errors'; describe('', () => { const listDomains = jest.fn(); diff --git a/test/domains/helpers/DomainDropdown.test.tsx b/test/domains/helpers/DomainDropdown.test.tsx index 1efd1a5e..efcf1a8d 100644 --- a/test/domains/helpers/DomainDropdown.test.tsx +++ b/test/domains/helpers/DomainDropdown.test.tsx @@ -2,9 +2,9 @@ import { screen, waitForElementToBeRemoved } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { DomainDropdown } from '../../../src/domains/helpers/DomainDropdown'; -import { Domain } from '../../../src/domains/data'; -import { ReachableServer, SelectedServer } from '../../../src/servers/data'; -import { SemVer } from '../../../src/utils/helpers/version'; +import type { Domain } from '../../../src/domains/data'; +import type { ReachableServer, SelectedServer } from '../../../src/servers/data'; +import type { SemVer } from '../../../src/utils/helpers/version'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/domains/helpers/DomainStatusIcon.test.tsx b/test/domains/helpers/DomainStatusIcon.test.tsx index a95ab027..ee5d3410 100644 --- a/test/domains/helpers/DomainStatusIcon.test.tsx +++ b/test/domains/helpers/DomainStatusIcon.test.tsx @@ -1,6 +1,6 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { DomainStatus } from '../../../src/domains/data'; +import type { DomainStatus } from '../../../src/domains/data'; import { DomainStatusIcon } from '../../../src/domains/helpers/DomainStatusIcon'; import { renderWithEvents } from '../../__helpers__/setUpTest'; diff --git a/test/domains/helpers/EditDomainRedirectsModal.test.tsx b/test/domains/helpers/EditDomainRedirectsModal.test.tsx index a83ddcbb..fb9a98fc 100644 --- a/test/domains/helpers/EditDomainRedirectsModal.test.tsx +++ b/test/domains/helpers/EditDomainRedirectsModal.test.tsx @@ -1,6 +1,6 @@ import { fireEvent, screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { ShlinkDomain } from '../../../src/api/types'; +import type { ShlinkDomain } from '../../../src/api/types'; import { EditDomainRedirectsModal } from '../../../src/domains/helpers/EditDomainRedirectsModal'; import { renderWithEvents } from '../../__helpers__/setUpTest'; diff --git a/test/domains/reducers/domainRedirects.test.ts b/test/domains/reducers/domainRedirects.test.ts index 567e0c1f..b061e7e7 100644 --- a/test/domains/reducers/domainRedirects.test.ts +++ b/test/domains/reducers/domainRedirects.test.ts @@ -1,7 +1,8 @@ import { Mock } from 'ts-mockery'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { EditDomainRedirects, editDomainRedirects } from '../../../src/domains/reducers/domainRedirects'; -import { ShlinkDomainRedirects } from '../../../src/api/types'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { EditDomainRedirects } from '../../../src/domains/reducers/domainRedirects'; +import { editDomainRedirects } from '../../../src/domains/reducers/domainRedirects'; +import type { ShlinkDomainRedirects } from '../../../src/api/types'; describe('domainRedirectsReducer', () => { beforeEach(jest.clearAllMocks); diff --git a/test/domains/reducers/domainsList.test.ts b/test/domains/reducers/domainsList.test.ts index b96a37d0..7f2772c3 100644 --- a/test/domains/reducers/domainsList.test.ts +++ b/test/domains/reducers/domainsList.test.ts @@ -1,16 +1,17 @@ import { Mock } from 'ts-mockery'; +import type { + DomainsList } from '../../../src/domains/reducers/domainsList'; import { - DomainsList, replaceRedirectsOnDomain, replaceStatusOnDomain, domainsListReducerCreator, } from '../../../src/domains/reducers/domainsList'; import { editDomainRedirects } from '../../../src/domains/reducers/domainRedirects'; -import { ShlinkDomainRedirects } from '../../../src/api/types'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { Domain } from '../../../src/domains/data'; -import { ShlinkState } from '../../../src/container/types'; -import { SelectedServer, ServerData } from '../../../src/servers/data'; +import type { ShlinkDomainRedirects } from '../../../src/api/types'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { Domain } from '../../../src/domains/data'; +import type { ShlinkState } from '../../../src/container/types'; +import type { SelectedServer, ServerData } from '../../../src/servers/data'; import { parseApiError } from '../../../src/api/utils'; describe('domainsListReducer', () => { diff --git a/test/mercure/helpers/index.test.tsx b/test/mercure/helpers/index.test.tsx index 109e2b57..90a235da 100644 --- a/test/mercure/helpers/index.test.tsx +++ b/test/mercure/helpers/index.test.tsx @@ -2,7 +2,7 @@ import { EventSourcePolyfill } from 'event-source-polyfill'; import { Mock } from 'ts-mockery'; import { identity } from 'ramda'; import { bindToMercureTopic } from '../../../src/mercure/helpers'; -import { MercureInfo } from '../../../src/mercure/reducers/mercureInfo'; +import type { MercureInfo } from '../../../src/mercure/reducers/mercureInfo'; jest.mock('event-source-polyfill'); diff --git a/test/mercure/reducers/mercureInfo.test.ts b/test/mercure/reducers/mercureInfo.test.ts index 2dcc71b0..928137c2 100644 --- a/test/mercure/reducers/mercureInfo.test.ts +++ b/test/mercure/reducers/mercureInfo.test.ts @@ -1,7 +1,7 @@ import { Mock } from 'ts-mockery'; import { mercureInfoReducerCreator } from '../../../src/mercure/reducers/mercureInfo'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { GetState } from '../../../src/container/types'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { GetState } from '../../../src/container/types'; describe('mercureInfoReducer', () => { const mercureInfo = { diff --git a/test/servers/CreateServer.test.tsx b/test/servers/CreateServer.test.tsx index a5cbc674..7e063569 100644 --- a/test/servers/CreateServer.test.tsx +++ b/test/servers/CreateServer.test.tsx @@ -2,7 +2,7 @@ import { fireEvent, screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { useNavigate } from 'react-router-dom'; import { CreateServer as createCreateServer } from '../../src/servers/CreateServer'; -import { ServerWithId } from '../../src/servers/data'; +import type { ServerWithId } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useNavigate: jest.fn() })); diff --git a/test/servers/DeleteServerButton.test.tsx b/test/servers/DeleteServerButton.test.tsx index c26431e5..36b8f621 100644 --- a/test/servers/DeleteServerButton.test.tsx +++ b/test/servers/DeleteServerButton.test.tsx @@ -1,8 +1,8 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { DeleteServerButton as createDeleteServerButton } from '../../src/servers/DeleteServerButton'; -import { ServerWithId } from '../../src/servers/data'; +import type { ServerWithId } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/servers/DeleteServerModal.test.tsx b/test/servers/DeleteServerModal.test.tsx index 0a5affe5..19b4916f 100644 --- a/test/servers/DeleteServerModal.test.tsx +++ b/test/servers/DeleteServerModal.test.tsx @@ -2,7 +2,7 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { useNavigate } from 'react-router-dom'; import { DeleteServerModal } from '../../src/servers/DeleteServerModal'; -import { ServerWithId } from '../../src/servers/data'; +import type { ServerWithId } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; import { TestModalWrapper } from '../__helpers__/TestModalWrapper'; diff --git a/test/servers/EditServer.test.tsx b/test/servers/EditServer.test.tsx index c5181bc0..17ac44f4 100644 --- a/test/servers/EditServer.test.tsx +++ b/test/servers/EditServer.test.tsx @@ -2,7 +2,7 @@ import { fireEvent, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter, useNavigate } from 'react-router-dom'; import { EditServer as editServerConstruct } from '../../src/servers/EditServer'; -import { ReachableServer, SelectedServer } from '../../src/servers/data'; +import type { ReachableServer, SelectedServer } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useNavigate: jest.fn() })); diff --git a/test/servers/ManageServers.test.tsx b/test/servers/ManageServers.test.tsx index f34ad465..375db005 100644 --- a/test/servers/ManageServers.test.tsx +++ b/test/servers/ManageServers.test.tsx @@ -1,9 +1,9 @@ import { Mock } from 'ts-mockery'; import { screen, waitFor } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; -import ServersExporter from '../../src/servers/services/ServersExporter'; +import type ServersExporter from '../../src/servers/services/ServersExporter'; import { ManageServers as createManageServers } from '../../src/servers/ManageServers'; -import { ServersMap, ServerWithId } from '../../src/servers/data'; +import type { ServersMap, ServerWithId } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/servers/ManageServersRow.test.tsx b/test/servers/ManageServersRow.test.tsx index 7c3e24ff..d7a91aec 100644 --- a/test/servers/ManageServersRow.test.tsx +++ b/test/servers/ManageServersRow.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; import { ManageServersRow as createManageServersRow } from '../../src/servers/ManageServersRow'; -import { ServerWithId } from '../../src/servers/data'; +import type { ServerWithId } from '../../src/servers/data'; describe('', () => { const ManageServersRow = createManageServersRow(() => ManageServersRowDropdown); diff --git a/test/servers/ManageServersRowDropdown.test.tsx b/test/servers/ManageServersRowDropdown.test.tsx index 043950f0..d6da6dc8 100644 --- a/test/servers/ManageServersRowDropdown.test.tsx +++ b/test/servers/ManageServersRowDropdown.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; -import { ServerWithId } from '../../src/servers/data'; +import type { ServerWithId } from '../../src/servers/data'; import { ManageServersRowDropdown as createManageServersRowDropdown } from '../../src/servers/ManageServersRowDropdown'; import { renderWithEvents } from '../__helpers__/setUpTest'; diff --git a/test/servers/Overview.test.tsx b/test/servers/Overview.test.tsx index 2cf05347..dc931bdc 100644 --- a/test/servers/Overview.test.tsx +++ b/test/servers/Overview.test.tsx @@ -1,12 +1,12 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; -import { ShortUrlsList as ShortUrlsListState } from '../../src/short-urls/reducers/shortUrlsList'; +import type { ShortUrlsList as ShortUrlsListState } from '../../src/short-urls/reducers/shortUrlsList'; import { Overview as overviewCreator } from '../../src/servers/Overview'; -import { TagsList } from '../../src/tags/reducers/tagsList'; -import { VisitsOverview } from '../../src/visits/reducers/visitsOverview'; -import { MercureInfo } from '../../src/mercure/reducers/mercureInfo'; -import { ReachableServer } from '../../src/servers/data'; +import type { TagsList } from '../../src/tags/reducers/tagsList'; +import type { VisitsOverview } from '../../src/visits/reducers/visitsOverview'; +import type { MercureInfo } from '../../src/mercure/reducers/mercureInfo'; +import type { ReachableServer } from '../../src/servers/data'; import { prettify } from '../../src/utils/helpers/numbers'; describe('', () => { diff --git a/test/servers/ServersDropdown.test.tsx b/test/servers/ServersDropdown.test.tsx index 102cec91..ae281bd4 100644 --- a/test/servers/ServersDropdown.test.tsx +++ b/test/servers/ServersDropdown.test.tsx @@ -3,7 +3,7 @@ import { values } from 'ramda'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { ServersDropdown } from '../../src/servers/ServersDropdown'; -import { ServersMap, ServerWithId } from '../../src/servers/data'; +import type { ServersMap, ServerWithId } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/servers/ServersListGroup.test.tsx b/test/servers/ServersListGroup.test.tsx index 401777e7..3e716d46 100644 --- a/test/servers/ServersListGroup.test.tsx +++ b/test/servers/ServersListGroup.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { ServersListGroup } from '../../src/servers/ServersListGroup'; -import { ServerWithId } from '../../src/servers/data'; +import type { ServerWithId } from '../../src/servers/data'; describe('', () => { const servers = [ diff --git a/test/servers/helpers/DuplicatedServersModal.test.tsx b/test/servers/helpers/DuplicatedServersModal.test.tsx index 0441b4e5..9172e801 100644 --- a/test/servers/helpers/DuplicatedServersModal.test.tsx +++ b/test/servers/helpers/DuplicatedServersModal.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { DuplicatedServersModal } from '../../../src/servers/helpers/DuplicatedServersModal'; -import { ServerData } from '../../../src/servers/data'; +import type { ServerData } from '../../../src/servers/data'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/servers/helpers/HighlightCard.test.tsx b/test/servers/helpers/HighlightCard.test.tsx index 199fe4c9..afc8f070 100644 --- a/test/servers/helpers/HighlightCard.test.tsx +++ b/test/servers/helpers/HighlightCard.test.tsx @@ -1,7 +1,8 @@ import { render, screen } from '@testing-library/react'; -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import { MemoryRouter } from 'react-router-dom'; -import { HighlightCard, HighlightCardProps } from '../../../src/servers/helpers/HighlightCard'; +import type { HighlightCardProps } from '../../../src/servers/helpers/HighlightCard'; +import { HighlightCard } from '../../../src/servers/helpers/HighlightCard'; describe('', () => { const setUp = (props: HighlightCardProps & { children?: ReactNode }) => render( diff --git a/test/servers/helpers/ImportServersBtn.test.tsx b/test/servers/helpers/ImportServersBtn.test.tsx index f60d21ad..c1d96fad 100644 --- a/test/servers/helpers/ImportServersBtn.test.tsx +++ b/test/servers/helpers/ImportServersBtn.test.tsx @@ -1,11 +1,12 @@ import { fireEvent, screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; +import type { + ImportServersBtnProps } from '../../../src/servers/helpers/ImportServersBtn'; import { ImportServersBtn as createImportServersBtn, - ImportServersBtnProps, } from '../../../src/servers/helpers/ImportServersBtn'; -import { ServersImporter } from '../../../src/servers/services/ServersImporter'; -import { ServersMap, ServerWithId } from '../../../src/servers/data'; +import type { ServersImporter } from '../../../src/servers/services/ServersImporter'; +import type { ServersMap, ServerWithId } from '../../../src/servers/data'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/servers/helpers/ServerError.test.tsx b/test/servers/helpers/ServerError.test.tsx index 88847c39..2b7b6bb5 100644 --- a/test/servers/helpers/ServerError.test.tsx +++ b/test/servers/helpers/ServerError.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; import { Mock } from 'ts-mockery'; import { ServerError as createServerError } from '../../../src/servers/helpers/ServerError'; -import { NonReachableServer, NotFoundServer } from '../../../src/servers/data'; +import type { NonReachableServer, NotFoundServer } from '../../../src/servers/data'; describe('', () => { const ServerError = createServerError(() => null); diff --git a/test/servers/reducers/remoteServers.test.ts b/test/servers/reducers/remoteServers.test.ts index 2c717696..60905535 100644 --- a/test/servers/reducers/remoteServers.test.ts +++ b/test/servers/reducers/remoteServers.test.ts @@ -1,7 +1,7 @@ import { Mock } from 'ts-mockery'; import { fetchServers } from '../../../src/servers/reducers/remoteServers'; import { createServers } from '../../../src/servers/reducers/servers'; -import { HttpClient } from '../../../src/common/services/HttpClient'; +import type { HttpClient } from '../../../src/common/services/HttpClient'; describe('remoteServersReducer', () => { afterEach(jest.clearAllMocks); diff --git a/test/servers/reducers/selectedServer.test.ts b/test/servers/reducers/selectedServer.test.ts index bbb93798..e6fe50b7 100644 --- a/test/servers/reducers/selectedServer.test.ts +++ b/test/servers/reducers/selectedServer.test.ts @@ -8,9 +8,9 @@ import { MAX_FALLBACK_VERSION, MIN_FALLBACK_VERSION, } from '../../../src/servers/reducers/selectedServer'; -import { ShlinkState } from '../../../src/container/types'; -import { NonReachableServer, NotFoundServer, ReachableServer, RegularServer } from '../../../src/servers/data'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ShlinkState } from '../../../src/container/types'; +import type { NonReachableServer, NotFoundServer, ReachableServer, RegularServer } from '../../../src/servers/data'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; describe('selectedServerReducer', () => { const dispatch = jest.fn(); diff --git a/test/servers/reducers/servers.test.ts b/test/servers/reducers/servers.test.ts index 81695779..10c41c80 100644 --- a/test/servers/reducers/servers.test.ts +++ b/test/servers/reducers/servers.test.ts @@ -7,7 +7,7 @@ import { setAutoConnect, serversReducer, } from '../../../src/servers/reducers/servers'; -import { RegularServer } from '../../../src/servers/data'; +import type { RegularServer } from '../../../src/servers/data'; describe('serversReducer', () => { const list = { diff --git a/test/servers/services/ServersExporter.test.ts b/test/servers/services/ServersExporter.test.ts index 0aa73ec1..cab4b056 100644 --- a/test/servers/services/ServersExporter.test.ts +++ b/test/servers/services/ServersExporter.test.ts @@ -1,6 +1,6 @@ import { Mock } from 'ts-mockery'; import ServersExporter from '../../../src/servers/services/ServersExporter'; -import { LocalStorage } from '../../../src/utils/services/LocalStorage'; +import type { LocalStorage } from '../../../src/utils/services/LocalStorage'; import { appendChild, removeChild, windowMock } from '../../__mocks__/Window.mock'; describe('ServersExporter', () => { diff --git a/test/servers/services/ServersImporter.test.ts b/test/servers/services/ServersImporter.test.ts index dee01be0..f57b1d73 100644 --- a/test/servers/services/ServersImporter.test.ts +++ b/test/servers/services/ServersImporter.test.ts @@ -1,6 +1,6 @@ import { Mock } from 'ts-mockery'; import { ServersImporter } from '../../../src/servers/services/ServersImporter'; -import { RegularServer } from '../../../src/servers/data'; +import type { RegularServer } from '../../../src/servers/data'; describe('ServersImporter', () => { const servers: RegularServer[] = [Mock.all(), Mock.all()]; diff --git a/test/settings/RealTimeUpdatesSettings.test.tsx b/test/settings/RealTimeUpdatesSettings.test.tsx index 943f8157..602012b6 100644 --- a/test/settings/RealTimeUpdatesSettings.test.tsx +++ b/test/settings/RealTimeUpdatesSettings.test.tsx @@ -1,6 +1,6 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { +import type { RealTimeUpdatesSettings as RealTimeUpdatesSettingsOptions, Settings, } from '../../src/settings/reducers/settings'; diff --git a/test/settings/ShortUrlCreationSettings.test.tsx b/test/settings/ShortUrlCreationSettings.test.tsx index 57ea949a..ea04b93f 100644 --- a/test/settings/ShortUrlCreationSettings.test.tsx +++ b/test/settings/ShortUrlCreationSettings.test.tsx @@ -1,6 +1,6 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { ShortUrlCreationSettings as ShortUrlsSettings, Settings } from '../../src/settings/reducers/settings'; +import type { ShortUrlCreationSettings as ShortUrlsSettings, Settings } from '../../src/settings/reducers/settings'; import { ShortUrlCreationSettings } from '../../src/settings/ShortUrlCreationSettings'; import { renderWithEvents } from '../__helpers__/setUpTest'; diff --git a/test/settings/ShortUrlsListSettings.test.tsx b/test/settings/ShortUrlsListSettings.test.tsx index 53350a0e..c0cd1a4b 100644 --- a/test/settings/ShortUrlsListSettings.test.tsx +++ b/test/settings/ShortUrlsListSettings.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { Settings, ShortUrlsListSettings as ShortUrlsSettings } from '../../src/settings/reducers/settings'; +import type { Settings, ShortUrlsListSettings as ShortUrlsSettings } from '../../src/settings/reducers/settings'; import { ShortUrlsListSettings } from '../../src/settings/ShortUrlsListSettings'; -import { ShortUrlsOrder } from '../../src/short-urls/data'; +import type { ShortUrlsOrder } from '../../src/short-urls/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/settings/TagsSettings.test.tsx b/test/settings/TagsSettings.test.tsx index d1b56f05..050e4b1c 100644 --- a/test/settings/TagsSettings.test.tsx +++ b/test/settings/TagsSettings.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { Settings, TagsSettings as TagsSettingsOptions } from '../../src/settings/reducers/settings'; +import type { Settings, TagsSettings as TagsSettingsOptions } from '../../src/settings/reducers/settings'; import { TagsSettings } from '../../src/settings/TagsSettings'; -import { TagsOrder } from '../../src/tags/data/TagsListChildrenProps'; +import type { TagsOrder } from '../../src/tags/data/TagsListChildrenProps'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/settings/UserInterfaceSettings.test.tsx b/test/settings/UserInterfaceSettings.test.tsx index 12270b37..0ca68e86 100644 --- a/test/settings/UserInterfaceSettings.test.tsx +++ b/test/settings/UserInterfaceSettings.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { Settings, UiSettings } from '../../src/settings/reducers/settings'; +import type { Settings, UiSettings } from '../../src/settings/reducers/settings'; import { UserInterfaceSettings } from '../../src/settings/UserInterfaceSettings'; -import { Theme } from '../../src/utils/theme'; +import type { Theme } from '../../src/utils/theme'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/settings/VisitsSettings.test.tsx b/test/settings/VisitsSettings.test.tsx index 051bdcf4..3326b75e 100644 --- a/test/settings/VisitsSettings.test.tsx +++ b/test/settings/VisitsSettings.test.tsx @@ -1,6 +1,6 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { Settings } from '../../src/settings/reducers/settings'; +import type { Settings } from '../../src/settings/reducers/settings'; import { VisitsSettings } from '../../src/settings/VisitsSettings'; import { renderWithEvents } from '../__helpers__/setUpTest'; diff --git a/test/settings/helpers/index.test.ts b/test/settings/helpers/index.test.ts index 0808ad35..96fa27b8 100644 --- a/test/settings/helpers/index.test.ts +++ b/test/settings/helpers/index.test.ts @@ -1,6 +1,6 @@ import { Mock } from 'ts-mockery'; import { migrateDeprecatedSettings } from '../../../src/settings/helpers'; -import { ShlinkState } from '../../../src/container/types'; +import type { ShlinkState } from '../../../src/container/types'; describe('settings-helpers', () => { describe('migrateDeprecatedSettings', () => { diff --git a/test/short-urls/CreateShortUrl.test.tsx b/test/short-urls/CreateShortUrl.test.tsx index 2e53e8dc..208d9cd8 100644 --- a/test/short-urls/CreateShortUrl.test.tsx +++ b/test/short-urls/CreateShortUrl.test.tsx @@ -1,8 +1,8 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { CreateShortUrl as createShortUrlsCreator } from '../../src/short-urls/CreateShortUrl'; -import { ShortUrlCreation } from '../../src/short-urls/reducers/shortUrlCreation'; -import { Settings } from '../../src/settings/reducers/settings'; +import type { ShortUrlCreation } from '../../src/short-urls/reducers/shortUrlCreation'; +import type { Settings } from '../../src/settings/reducers/settings'; describe('', () => { const ShortUrlForm = () => ShortUrlForm; diff --git a/test/short-urls/EditShortUrl.test.tsx b/test/short-urls/EditShortUrl.test.tsx index 8af59969..e262f2ed 100644 --- a/test/short-urls/EditShortUrl.test.tsx +++ b/test/short-urls/EditShortUrl.test.tsx @@ -2,10 +2,10 @@ import { render, screen } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; import { Mock } from 'ts-mockery'; import { EditShortUrl as createEditShortUrl } from '../../src/short-urls/EditShortUrl'; -import { Settings } from '../../src/settings/reducers/settings'; -import { ShortUrlDetail } from '../../src/short-urls/reducers/shortUrlDetail'; -import { ShortUrlEdition } from '../../src/short-urls/reducers/shortUrlEdition'; -import { ShortUrl } from '../../src/short-urls/data'; +import type { Settings } from '../../src/settings/reducers/settings'; +import type { ShortUrlDetail } from '../../src/short-urls/reducers/shortUrlDetail'; +import type { ShortUrlEdition } from '../../src/short-urls/reducers/shortUrlEdition'; +import type { ShortUrl } from '../../src/short-urls/data'; describe('', () => { const shortUrlCreation = { validateUrls: true }; diff --git a/test/short-urls/Paginator.test.tsx b/test/short-urls/Paginator.test.tsx index a40a62d8..22a8f017 100644 --- a/test/short-urls/Paginator.test.tsx +++ b/test/short-urls/Paginator.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { Paginator } from '../../src/short-urls/Paginator'; -import { ShlinkPaginator } from '../../src/api/types'; +import type { ShlinkPaginator } from '../../src/api/types'; import { ELLIPSIS } from '../../src/utils/helpers/pagination'; describe('', () => { diff --git a/test/short-urls/ShortUrlForm.test.tsx b/test/short-urls/ShortUrlForm.test.tsx index 2709a7f8..5083a7b0 100644 --- a/test/short-urls/ShortUrlForm.test.tsx +++ b/test/short-urls/ShortUrlForm.test.tsx @@ -1,11 +1,12 @@ import { screen } from '@testing-library/react'; -import { UserEvent } from '@testing-library/user-event/setup/setup'; +import type { UserEvent } from '@testing-library/user-event/setup/setup'; import { formatISO } from 'date-fns'; import { Mock } from 'ts-mockery'; -import { ShortUrlForm as createShortUrlForm, Mode } from '../../src/short-urls/ShortUrlForm'; -import { ReachableServer, SelectedServer } from '../../src/servers/data'; +import type { Mode } from '../../src/short-urls/ShortUrlForm'; +import { ShortUrlForm as createShortUrlForm } from '../../src/short-urls/ShortUrlForm'; +import type { ReachableServer, SelectedServer } from '../../src/servers/data'; import { parseDate } from '../../src/utils/helpers/date'; -import { OptionalString } from '../../src/utils/utils'; +import type { OptionalString } from '../../src/utils/utils'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/short-urls/ShortUrlsFilteringBar.test.tsx b/test/short-urls/ShortUrlsFilteringBar.test.tsx index 5c89c865..e60440c8 100644 --- a/test/short-urls/ShortUrlsFilteringBar.test.tsx +++ b/test/short-urls/ShortUrlsFilteringBar.test.tsx @@ -3,9 +3,9 @@ import { Mock } from 'ts-mockery'; import { endOfDay, formatISO, startOfDay } from 'date-fns'; import { MemoryRouter, useLocation, useNavigate } from 'react-router-dom'; import { ShortUrlsFilteringBar as filteringBarCreator } from '../../src/short-urls/ShortUrlsFilteringBar'; -import { ReachableServer, SelectedServer } from '../../src/servers/data'; -import { Settings } from '../../src/settings/reducers/settings'; -import { DateRange } from '../../src/utils/helpers/dateIntervals'; +import type { ReachableServer, SelectedServer } from '../../src/servers/data'; +import type { Settings } from '../../src/settings/reducers/settings'; +import type { DateRange } from '../../src/utils/helpers/dateIntervals'; import { formatDate } from '../../src/utils/helpers/date'; import { renderWithEvents } from '../__helpers__/setUpTest'; diff --git a/test/short-urls/ShortUrlsList.test.tsx b/test/short-urls/ShortUrlsList.test.tsx index 12a81188..b62c32a0 100644 --- a/test/short-urls/ShortUrlsList.test.tsx +++ b/test/short-urls/ShortUrlsList.test.tsx @@ -2,14 +2,14 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter, useNavigate } from 'react-router-dom'; import { ShortUrlsList as createShortUrlsList } from '../../src/short-urls/ShortUrlsList'; -import { ShortUrl, ShortUrlsOrder } from '../../src/short-urls/data'; -import { MercureBoundProps } from '../../src/mercure/helpers/boundToMercureHub'; -import { ShortUrlsList as ShortUrlsListModel } from '../../src/short-urls/reducers/shortUrlsList'; -import { ReachableServer } from '../../src/servers/data'; -import { Settings } from '../../src/settings/reducers/settings'; -import { ShortUrlsTableType } from '../../src/short-urls/ShortUrlsTable'; +import type { ShortUrl, ShortUrlsOrder } from '../../src/short-urls/data'; +import type { MercureBoundProps } from '../../src/mercure/helpers/boundToMercureHub'; +import type { ShortUrlsList as ShortUrlsListModel } from '../../src/short-urls/reducers/shortUrlsList'; +import type { ReachableServer } from '../../src/servers/data'; +import type { Settings } from '../../src/settings/reducers/settings'; +import type { ShortUrlsTableType } from '../../src/short-urls/ShortUrlsTable'; import { renderWithEvents } from '../__helpers__/setUpTest'; -import { SemVer } from '../../src/utils/helpers/version'; +import type { SemVer } from '../../src/utils/helpers/version'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), diff --git a/test/short-urls/ShortUrlsTable.test.tsx b/test/short-urls/ShortUrlsTable.test.tsx index c3fded0a..fc50625b 100644 --- a/test/short-urls/ShortUrlsTable.test.tsx +++ b/test/short-urls/ShortUrlsTable.test.tsx @@ -1,9 +1,10 @@ import { fireEvent, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { ShortUrlsTable as shortUrlsTableCreator } from '../../src/short-urls/ShortUrlsTable'; -import { ShortUrlsList } from '../../src/short-urls/reducers/shortUrlsList'; -import { ReachableServer, SelectedServer } from '../../src/servers/data'; -import { ShortUrlsOrderableFields, SHORT_URLS_ORDERABLE_FIELDS } from '../../src/short-urls/data'; +import type { ShortUrlsList } from '../../src/short-urls/reducers/shortUrlsList'; +import type { ReachableServer, SelectedServer } from '../../src/servers/data'; +import type { ShortUrlsOrderableFields } from '../../src/short-urls/data'; +import { SHORT_URLS_ORDERABLE_FIELDS } from '../../src/short-urls/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/short-urls/helpers/CreateShortUrlResult.test.tsx b/test/short-urls/helpers/CreateShortUrlResult.test.tsx index 404ab833..4d5839fb 100644 --- a/test/short-urls/helpers/CreateShortUrlResult.test.tsx +++ b/test/short-urls/helpers/CreateShortUrlResult.test.tsx @@ -1,10 +1,10 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { CreateShortUrlResult as createResult } from '../../../src/short-urls/helpers/CreateShortUrlResult'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { TimeoutToggle } from '../../../src/utils/helpers/hooks'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { TimeoutToggle } from '../../../src/utils/helpers/hooks'; import { renderWithEvents } from '../../__helpers__/setUpTest'; -import { ShortUrlCreation } from '../../../src/short-urls/reducers/shortUrlCreation'; +import type { ShortUrlCreation } from '../../../src/short-urls/reducers/shortUrlCreation'; describe('', () => { const copyToClipboard = jest.fn(); diff --git a/test/short-urls/helpers/DeleteShortUrlModal.test.tsx b/test/short-urls/helpers/DeleteShortUrlModal.test.tsx index a71cd977..14ed94a8 100644 --- a/test/short-urls/helpers/DeleteShortUrlModal.test.tsx +++ b/test/short-urls/helpers/DeleteShortUrlModal.test.tsx @@ -1,10 +1,11 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { DeleteShortUrlModal } from '../../../src/short-urls/helpers/DeleteShortUrlModal'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { ShortUrlDeletion } from '../../../src/short-urls/reducers/shortUrlDeletion'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { ShortUrlDeletion } from '../../../src/short-urls/reducers/shortUrlDeletion'; import { renderWithEvents } from '../../__helpers__/setUpTest'; -import { ErrorTypeV2, ErrorTypeV3, InvalidShortUrlDeletion, ProblemDetailsError } from '../../../src/api/types/errors'; +import type { InvalidShortUrlDeletion, ProblemDetailsError } from '../../../src/api/types/errors'; +import { ErrorTypeV2, ErrorTypeV3 } from '../../../src/api/types/errors'; import { TestModalWrapper } from '../../__helpers__/TestModalWrapper'; describe('', () => { diff --git a/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx b/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx index e2af62af..ab35d1e9 100644 --- a/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx +++ b/test/short-urls/helpers/ExportShortUrlsBtn.test.tsx @@ -1,9 +1,9 @@ import { Mock } from 'ts-mockery'; import { screen } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; -import { ReportExporter } from '../../../src/common/services/ReportExporter'; +import type { ReportExporter } from '../../../src/common/services/ReportExporter'; import { ExportShortUrlsBtn as createExportShortUrlsBtn } from '../../../src/short-urls/helpers/ExportShortUrlsBtn'; -import { NotFoundServer, ReachableServer, SelectedServer } from '../../../src/servers/data'; +import type { NotFoundServer, ReachableServer, SelectedServer } from '../../../src/servers/data'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/short-urls/helpers/QrCodeModal.test.tsx b/test/short-urls/helpers/QrCodeModal.test.tsx index 12bcad54..51c2566a 100644 --- a/test/short-urls/helpers/QrCodeModal.test.tsx +++ b/test/short-urls/helpers/QrCodeModal.test.tsx @@ -1,10 +1,10 @@ import { fireEvent, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { QrCodeModal as createQrCodeModal } from '../../../src/short-urls/helpers/QrCodeModal'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { ReachableServer } from '../../../src/servers/data'; -import { SemVer } from '../../../src/utils/helpers/version'; -import { ImageDownloader } from '../../../src/common/services/ImageDownloader'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { ReachableServer } from '../../../src/servers/data'; +import type { SemVer } from '../../../src/utils/helpers/version'; +import type { ImageDownloader } from '../../../src/common/services/ImageDownloader'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/short-urls/helpers/ShortUrlDetailLink.test.tsx b/test/short-urls/helpers/ShortUrlDetailLink.test.tsx index 3c38216e..7c8a91ce 100644 --- a/test/short-urls/helpers/ShortUrlDetailLink.test.tsx +++ b/test/short-urls/helpers/ShortUrlDetailLink.test.tsx @@ -1,9 +1,10 @@ import { render, screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; -import { ShortUrlDetailLink, LinkSuffix } from '../../../src/short-urls/helpers/ShortUrlDetailLink'; -import { NotFoundServer, ReachableServer } from '../../../src/servers/data'; -import { ShortUrl } from '../../../src/short-urls/data'; +import type { LinkSuffix } from '../../../src/short-urls/helpers/ShortUrlDetailLink'; +import { ShortUrlDetailLink } from '../../../src/short-urls/helpers/ShortUrlDetailLink'; +import type { NotFoundServer, ReachableServer } from '../../../src/servers/data'; +import type { ShortUrl } from '../../../src/short-urls/data'; describe('', () => { it.each([ diff --git a/test/short-urls/helpers/ShortUrlStatus.test.tsx b/test/short-urls/helpers/ShortUrlStatus.test.tsx index 8c689086..5935aa78 100644 --- a/test/short-urls/helpers/ShortUrlStatus.test.tsx +++ b/test/short-urls/helpers/ShortUrlStatus.test.tsx @@ -2,7 +2,7 @@ import userEvent from '@testing-library/user-event'; import { render, screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { ShortUrlStatus } from '../../../src/short-urls/helpers/ShortUrlStatus'; -import { ShortUrl, ShortUrlMeta, ShortUrlVisitsSummary } from '../../../src/short-urls/data'; +import type { ShortUrl, ShortUrlMeta, ShortUrlVisitsSummary } from '../../../src/short-urls/data'; describe('', () => { const setUp = (shortUrl: ShortUrl) => ({ diff --git a/test/short-urls/helpers/ShortUrlVisitsCount.test.tsx b/test/short-urls/helpers/ShortUrlVisitsCount.test.tsx index 2bf13db7..0dd502a8 100644 --- a/test/short-urls/helpers/ShortUrlVisitsCount.test.tsx +++ b/test/short-urls/helpers/ShortUrlVisitsCount.test.tsx @@ -2,7 +2,7 @@ import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { Mock } from 'ts-mockery'; import { ShortUrlVisitsCount } from '../../../src/short-urls/helpers/ShortUrlVisitsCount'; -import { ShortUrl } from '../../../src/short-urls/data'; +import type { ShortUrl } from '../../../src/short-urls/data'; describe('', () => { const setUp = (visitsCount: number, shortUrl: ShortUrl) => ({ diff --git a/test/short-urls/helpers/ShortUrlsRow.test.tsx b/test/short-urls/helpers/ShortUrlsRow.test.tsx index e81ce8e6..d6210e47 100644 --- a/test/short-urls/helpers/ShortUrlsRow.test.tsx +++ b/test/short-urls/helpers/ShortUrlsRow.test.tsx @@ -4,13 +4,13 @@ import { Mock } from 'ts-mockery'; import { addDays, formatISO, subDays } from 'date-fns'; import { MemoryRouter, useLocation } from 'react-router-dom'; import { ShortUrlsRow as createShortUrlsRow } from '../../../src/short-urls/helpers/ShortUrlsRow'; -import { TimeoutToggle } from '../../../src/utils/helpers/hooks'; -import { ShortUrl, ShortUrlMeta } from '../../../src/short-urls/data'; -import { Settings } from '../../../src/settings/reducers/settings'; -import { ReachableServer } from '../../../src/servers/data'; +import type { TimeoutToggle } from '../../../src/utils/helpers/hooks'; +import type { ShortUrl, ShortUrlMeta } from '../../../src/short-urls/data'; +import type { Settings } from '../../../src/settings/reducers/settings'; +import type { ReachableServer } from '../../../src/servers/data'; import { parseDate, now } from '../../../src/utils/helpers/date'; import { renderWithEvents } from '../../__helpers__/setUpTest'; -import { OptionalString } from '../../../src/utils/utils'; +import type { OptionalString } from '../../../src/utils/utils'; import { colorGeneratorMock } from '../../utils/services/__mocks__/ColorGenerator.mock'; interface SetUpOptions { diff --git a/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx b/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx index c0324e50..8a879d16 100644 --- a/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx +++ b/test/short-urls/helpers/ShortUrlsRowMenu.test.tsx @@ -2,8 +2,8 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { ShortUrlsRowMenu as createShortUrlsRowMenu } from '../../../src/short-urls/helpers/ShortUrlsRowMenu'; -import { ReachableServer } from '../../../src/servers/data'; -import { ShortUrl } from '../../../src/short-urls/data'; +import type { ReachableServer } from '../../../src/servers/data'; +import type { ShortUrl } from '../../../src/short-urls/data'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/short-urls/helpers/index.test.ts b/test/short-urls/helpers/index.test.ts index 06415123..bc33c1d5 100644 --- a/test/short-urls/helpers/index.test.ts +++ b/test/short-urls/helpers/index.test.ts @@ -1,5 +1,5 @@ import { Mock } from 'ts-mockery'; -import { ShortUrl } from '../../../src/short-urls/data'; +import type { ShortUrl } from '../../../src/short-urls/data'; import { shortUrlDataFromShortUrl, urlDecodeShortCode, urlEncodeShortCode } from '../../../src/short-urls/helpers'; describe('helpers', () => { diff --git a/test/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.test.tsx b/test/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.test.tsx index ae20d61f..432e3c66 100644 --- a/test/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.test.tsx +++ b/test/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown.test.tsx @@ -1,5 +1,5 @@ import { screen } from '@testing-library/react'; -import { QrErrorCorrection } from '../../../../src/utils/helpers/qrCodes'; +import type { QrErrorCorrection } from '../../../../src/utils/helpers/qrCodes'; import { QrErrorCorrectionDropdown } from '../../../../src/short-urls/helpers/qr-codes/QrErrorCorrectionDropdown'; import { renderWithEvents } from '../../../__helpers__/setUpTest'; diff --git a/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx b/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx index 499a5e89..eccfbcfb 100644 --- a/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx +++ b/test/short-urls/helpers/qr-codes/QrFormatDropdown.test.tsx @@ -1,5 +1,5 @@ import { screen } from '@testing-library/react'; -import { QrCodeFormat } from '../../../../src/utils/helpers/qrCodes'; +import type { QrCodeFormat } from '../../../../src/utils/helpers/qrCodes'; import { QrFormatDropdown } from '../../../../src/short-urls/helpers/qr-codes/QrFormatDropdown'; import { renderWithEvents } from '../../../__helpers__/setUpTest'; diff --git a/test/short-urls/reducers/shortUrlCreation.test.ts b/test/short-urls/reducers/shortUrlCreation.test.ts index f7815b4a..e231f7fb 100644 --- a/test/short-urls/reducers/shortUrlCreation.test.ts +++ b/test/short-urls/reducers/shortUrlCreation.test.ts @@ -1,12 +1,13 @@ import { Mock } from 'ts-mockery'; +import type { + CreateShortUrlAction } from '../../../src/short-urls/reducers/shortUrlCreation'; import { - CreateShortUrlAction, shortUrlCreationReducerCreator, createShortUrl as createShortUrlCreator, } from '../../../src/short-urls/reducers/shortUrlCreation'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { ShlinkState } from '../../../src/container/types'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ShlinkState } from '../../../src/container/types'; describe('shortUrlCreationReducer', () => { const shortUrl = Mock.of(); diff --git a/test/short-urls/reducers/shortUrlDeletion.test.ts b/test/short-urls/reducers/shortUrlDeletion.test.ts index e6bd8162..4b8eda22 100644 --- a/test/short-urls/reducers/shortUrlDeletion.test.ts +++ b/test/short-urls/reducers/shortUrlDeletion.test.ts @@ -3,8 +3,8 @@ import { shortUrlDeletionReducerCreator, deleteShortUrl as deleteShortUrlCretor, } from '../../../src/short-urls/reducers/shortUrlDeletion'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { ProblemDetailsError } from '../../../src/api/types/errors'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ProblemDetailsError } from '../../../src/api/types/errors'; describe('shortUrlDeletionReducer', () => { const deleteShortUrlCall = jest.fn(); diff --git a/test/short-urls/reducers/shortUrlDetail.test.ts b/test/short-urls/reducers/shortUrlDetail.test.ts index cb745724..faa2ae2f 100644 --- a/test/short-urls/reducers/shortUrlDetail.test.ts +++ b/test/short-urls/reducers/shortUrlDetail.test.ts @@ -1,9 +1,10 @@ import { Mock } from 'ts-mockery'; -import { ShortUrlDetailAction, shortUrlDetailReducerCreator } from '../../../src/short-urls/reducers/shortUrlDetail'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { ShlinkState } from '../../../src/container/types'; -import { ShortUrlsList } from '../../../src/short-urls/reducers/shortUrlsList'; +import type { ShortUrlDetailAction } from '../../../src/short-urls/reducers/shortUrlDetail'; +import { shortUrlDetailReducerCreator } from '../../../src/short-urls/reducers/shortUrlDetail'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ShlinkState } from '../../../src/container/types'; +import type { ShortUrlsList } from '../../../src/short-urls/reducers/shortUrlsList'; describe('shortUrlDetailReducer', () => { const getShortUrlCall = jest.fn(); diff --git a/test/short-urls/reducers/shortUrlEdition.test.ts b/test/short-urls/reducers/shortUrlEdition.test.ts index 941328c8..37deb5e5 100644 --- a/test/short-urls/reducers/shortUrlEdition.test.ts +++ b/test/short-urls/reducers/shortUrlEdition.test.ts @@ -1,12 +1,13 @@ import { Mock } from 'ts-mockery'; +import type { + ShortUrlEditedAction } from '../../../src/short-urls/reducers/shortUrlEdition'; import { - ShortUrlEditedAction, shortUrlEditionReducerCreator, editShortUrl as editShortUrlCreator, } from '../../../src/short-urls/reducers/shortUrlEdition'; -import { ShlinkState } from '../../../src/container/types'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { SelectedServer } from '../../../src/servers/data'; +import type { ShlinkState } from '../../../src/container/types'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { SelectedServer } from '../../../src/servers/data'; describe('shortUrlEditionReducer', () => { const longUrl = 'https://shlink.io'; diff --git a/test/short-urls/reducers/shortUrlsList.test.ts b/test/short-urls/reducers/shortUrlsList.test.ts index 8e639603..4e0dd32a 100644 --- a/test/short-urls/reducers/shortUrlsList.test.ts +++ b/test/short-urls/reducers/shortUrlsList.test.ts @@ -4,12 +4,12 @@ import { shortUrlsListReducerCreator, } from '../../../src/short-urls/reducers/shortUrlsList'; import { shortUrlDeleted } from '../../../src/short-urls/reducers/shortUrlDeletion'; -import { ShlinkPaginator, ShlinkShortUrlsResponse } from '../../../src/api/types'; +import type { ShlinkPaginator, ShlinkShortUrlsResponse } from '../../../src/api/types'; import { createShortUrl as createShortUrlCreator } from '../../../src/short-urls/reducers/shortUrlCreation'; import { editShortUrl as editShortUrlCreator } from '../../../src/short-urls/reducers/shortUrlEdition'; import { createNewVisits } from '../../../src/visits/reducers/visitCreation'; -import { ShortUrl } from '../../../src/short-urls/data'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ShortUrl } from '../../../src/short-urls/data'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; describe('shortUrlsListReducer', () => { const shortCode = 'abc123'; diff --git a/test/tags/TagsList.test.tsx b/test/tags/TagsList.test.tsx index 9e47ffcb..fe659c55 100644 --- a/test/tags/TagsList.test.tsx +++ b/test/tags/TagsList.test.tsx @@ -1,10 +1,11 @@ import { screen, waitFor } from '@testing-library/react'; import { identity } from 'ramda'; import { Mock } from 'ts-mockery'; -import { TagsList as createTagsList, TagsListProps } from '../../src/tags/TagsList'; -import { TagsList } from '../../src/tags/reducers/tagsList'; -import { MercureBoundProps } from '../../src/mercure/helpers/boundToMercureHub'; -import { Settings } from '../../src/settings/reducers/settings'; +import type { TagsListProps } from '../../src/tags/TagsList'; +import { TagsList as createTagsList } from '../../src/tags/TagsList'; +import type { TagsList } from '../../src/tags/reducers/tagsList'; +import type { MercureBoundProps } from '../../src/mercure/helpers/boundToMercureHub'; +import type { Settings } from '../../src/settings/reducers/settings'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/tags/TagsTable.test.tsx b/test/tags/TagsTable.test.tsx index aae618ec..7c9d7da0 100644 --- a/test/tags/TagsTable.test.tsx +++ b/test/tags/TagsTable.test.tsx @@ -2,9 +2,9 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { useLocation } from 'react-router-dom'; import { TagsTable as createTagsTable } from '../../src/tags/TagsTable'; -import { SelectedServer } from '../../src/servers/data'; +import type { SelectedServer } from '../../src/servers/data'; import { rangeOf } from '../../src/utils/utils'; -import { NormalizedTag } from '../../src/tags/data'; +import type { NormalizedTag } from '../../src/tags/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useLocation: jest.fn() })); diff --git a/test/tags/TagsTableRow.test.tsx b/test/tags/TagsTableRow.test.tsx index 4974f621..94c39a81 100644 --- a/test/tags/TagsTableRow.test.tsx +++ b/test/tags/TagsTableRow.test.tsx @@ -2,7 +2,7 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { MemoryRouter } from 'react-router-dom'; import { TagsTableRow as createTagsTableRow } from '../../src/tags/TagsTableRow'; -import { ReachableServer } from '../../src/servers/data'; +import type { ReachableServer } from '../../src/servers/data'; import { renderWithEvents } from '../__helpers__/setUpTest'; import { colorGeneratorMock } from '../utils/services/__mocks__/ColorGenerator.mock'; diff --git a/test/tags/helpers/DeleteTagConfirmModal.test.tsx b/test/tags/helpers/DeleteTagConfirmModal.test.tsx index 00a7cdf1..55493087 100644 --- a/test/tags/helpers/DeleteTagConfirmModal.test.tsx +++ b/test/tags/helpers/DeleteTagConfirmModal.test.tsx @@ -1,6 +1,6 @@ import { screen } from '@testing-library/react'; import { DeleteTagConfirmModal } from '../../../src/tags/helpers/DeleteTagConfirmModal'; -import { TagDeletion } from '../../../src/tags/reducers/tagDelete'; +import type { TagDeletion } from '../../../src/tags/reducers/tagDelete'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/tags/helpers/EditTagModal.test.tsx b/test/tags/helpers/EditTagModal.test.tsx index b4bc1dbf..3ffbcd54 100644 --- a/test/tags/helpers/EditTagModal.test.tsx +++ b/test/tags/helpers/EditTagModal.test.tsx @@ -1,10 +1,10 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { TagEdition } from '../../../src/tags/reducers/tagEdit'; +import type { TagEdition } from '../../../src/tags/reducers/tagEdit'; import { EditTagModal as createEditTagModal } from '../../../src/tags/helpers/EditTagModal'; -import { ColorGenerator } from '../../../src/utils/services/ColorGenerator'; +import type { ColorGenerator } from '../../../src/utils/services/ColorGenerator'; import { renderWithEvents } from '../../__helpers__/setUpTest'; -import { ProblemDetailsError } from '../../../src/api/types/errors'; +import type { ProblemDetailsError } from '../../../src/api/types/errors'; describe('', () => { const EditTagModal = createEditTagModal(Mock.of({ getColorForKey: jest.fn(() => 'green') })); diff --git a/test/tags/helpers/Tag.test.tsx b/test/tags/helpers/Tag.test.tsx index edd4d20c..c45b3003 100644 --- a/test/tags/helpers/Tag.test.tsx +++ b/test/tags/helpers/Tag.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { ReactNode } from 'react'; -import { ColorGenerator } from '../../../src/utils/services/ColorGenerator'; +import type { ReactNode } from 'react'; +import type { ColorGenerator } from '../../../src/utils/services/ColorGenerator'; import { MAIN_COLOR } from '../../../src/utils/theme'; import { Tag } from '../../../src/tags/helpers/Tag'; import { renderWithEvents } from '../../__helpers__/setUpTest'; diff --git a/test/tags/helpers/TagsSelector.test.tsx b/test/tags/helpers/TagsSelector.test.tsx index e6bed7ec..2553e413 100644 --- a/test/tags/helpers/TagsSelector.test.tsx +++ b/test/tags/helpers/TagsSelector.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { TagsSelector as createTagsSelector } from '../../../src/tags/helpers/TagsSelector'; -import { TagsList } from '../../../src/tags/reducers/tagsList'; -import { Settings } from '../../../src/settings/reducers/settings'; +import type { TagsList } from '../../../src/tags/reducers/tagsList'; +import type { Settings } from '../../../src/settings/reducers/settings'; import { renderWithEvents } from '../../__helpers__/setUpTest'; import { colorGeneratorMock } from '../../utils/services/__mocks__/ColorGenerator.mock'; diff --git a/test/tags/reducers/tagDelete.test.ts b/test/tags/reducers/tagDelete.test.ts index 3b4bf655..8519a6b0 100644 --- a/test/tags/reducers/tagDelete.test.ts +++ b/test/tags/reducers/tagDelete.test.ts @@ -1,7 +1,7 @@ import { Mock } from 'ts-mockery'; import { tagDeleted, tagDeleteReducerCreator } from '../../../src/tags/reducers/tagDelete'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { ShlinkState } from '../../../src/container/types'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ShlinkState } from '../../../src/container/types'; describe('tagDeleteReducer', () => { const deleteTagsCall = jest.fn(); diff --git a/test/tags/reducers/tagEdit.test.ts b/test/tags/reducers/tagEdit.test.ts index b421c579..93b9c3da 100644 --- a/test/tags/reducers/tagEdit.test.ts +++ b/test/tags/reducers/tagEdit.test.ts @@ -1,8 +1,9 @@ import { Mock } from 'ts-mockery'; -import { tagEdited, editTag as editTagCreator, EditTagAction, tagEditReducerCreator } from '../../../src/tags/reducers/tagEdit'; -import { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; -import { ColorGenerator } from '../../../src/utils/services/ColorGenerator'; -import { ShlinkState } from '../../../src/container/types'; +import type { EditTagAction } from '../../../src/tags/reducers/tagEdit'; +import { tagEdited, editTag as editTagCreator, tagEditReducerCreator } from '../../../src/tags/reducers/tagEdit'; +import type { ShlinkApiClient } from '../../../src/api/services/ShlinkApiClient'; +import type { ColorGenerator } from '../../../src/utils/services/ColorGenerator'; +import type { ShlinkState } from '../../../src/container/types'; describe('tagEditReducer', () => { const oldName = 'foo'; diff --git a/test/tags/reducers/tagsList.test.ts b/test/tags/reducers/tagsList.test.ts index 2bea89bf..d088c2e5 100644 --- a/test/tags/reducers/tagsList.test.ts +++ b/test/tags/reducers/tagsList.test.ts @@ -1,12 +1,13 @@ import { Mock } from 'ts-mockery'; +import type { + TagsList } from '../../../src/tags/reducers/tagsList'; import { - TagsList, filterTags, listTags as listTagsCreator, tagsListReducerCreator, } from '../../../src/tags/reducers/tagsList'; -import { ShlinkState } from '../../../src/container/types'; -import { ShortUrl } from '../../../src/short-urls/data'; +import type { ShlinkState } from '../../../src/container/types'; +import type { ShortUrl } from '../../../src/short-urls/data'; import { createShortUrl as createShortUrlCreator } from '../../../src/short-urls/reducers/shortUrlCreation'; import { tagEdited } from '../../../src/tags/reducers/tagEdit'; import { tagDeleted } from '../../../src/tags/reducers/tagDelete'; diff --git a/test/utils/DropdownBtn.test.tsx b/test/utils/DropdownBtn.test.tsx index 36d820a8..a3c6309e 100644 --- a/test/utils/DropdownBtn.test.tsx +++ b/test/utils/DropdownBtn.test.tsx @@ -1,6 +1,7 @@ import { screen } from '@testing-library/react'; -import { PropsWithChildren } from 'react'; -import { DropdownBtn, DropdownBtnProps } from '../../src/utils/DropdownBtn'; +import type { PropsWithChildren } from 'react'; +import type { DropdownBtnProps } from '../../src/utils/DropdownBtn'; +import { DropdownBtn } from '../../src/utils/DropdownBtn'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/utils/DropdownBtnMenu.test.tsx b/test/utils/DropdownBtnMenu.test.tsx index d7ef86b8..c38d0c7d 100644 --- a/test/utils/DropdownBtnMenu.test.tsx +++ b/test/utils/DropdownBtnMenu.test.tsx @@ -1,6 +1,7 @@ import { screen } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { DropdownBtnMenu, DropdownBtnMenuProps } from '../../src/utils/DropdownBtnMenu'; +import type { DropdownBtnMenuProps } from '../../src/utils/DropdownBtnMenu'; +import { DropdownBtnMenu } from '../../src/utils/DropdownBtnMenu'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/utils/InfoTooltip.test.tsx b/test/utils/InfoTooltip.test.tsx index 1bda4e60..69d18203 100644 --- a/test/utils/InfoTooltip.test.tsx +++ b/test/utils/InfoTooltip.test.tsx @@ -1,6 +1,7 @@ import { screen, waitFor } from '@testing-library/react'; -import { Placement } from '@popperjs/core'; -import { InfoTooltip, InfoTooltipProps } from '../../src/utils/InfoTooltip'; +import type { Placement } from '@popperjs/core'; +import type { InfoTooltipProps } from '../../src/utils/InfoTooltip'; +import { InfoTooltip } from '../../src/utils/InfoTooltip'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/utils/Message.test.tsx b/test/utils/Message.test.tsx index d800a66d..7adbe691 100644 --- a/test/utils/Message.test.tsx +++ b/test/utils/Message.test.tsx @@ -1,6 +1,7 @@ import { render, screen } from '@testing-library/react'; -import { PropsWithChildren } from 'react'; -import { Message, MessageProps } from '../../src/utils/Message'; +import type { PropsWithChildren } from 'react'; +import type { MessageProps } from '../../src/utils/Message'; +import { Message } from '../../src/utils/Message'; describe('', () => { const setUp = (props: PropsWithChildren = {}) => render(); diff --git a/test/utils/OrderingDropdown.test.tsx b/test/utils/OrderingDropdown.test.tsx index f8e78944..1a35a31c 100644 --- a/test/utils/OrderingDropdown.test.tsx +++ b/test/utils/OrderingDropdown.test.tsx @@ -1,7 +1,8 @@ import { screen } from '@testing-library/react'; import { values } from 'ramda'; -import { OrderingDropdown, OrderingDropdownProps } from '../../src/utils/OrderingDropdown'; -import { OrderDir } from '../../src/utils/helpers/ordering'; +import type { OrderingDropdownProps } from '../../src/utils/OrderingDropdown'; +import { OrderingDropdown } from '../../src/utils/OrderingDropdown'; +import type { OrderDir } from '../../src/utils/helpers/ordering'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { diff --git a/test/utils/Result.test.tsx b/test/utils/Result.test.tsx index 0ba9b3f3..92a342a6 100644 --- a/test/utils/Result.test.tsx +++ b/test/utils/Result.test.tsx @@ -1,5 +1,6 @@ import { render, screen } from '@testing-library/react'; -import { Result, ResultProps, ResultType } from '../../src/utils/Result'; +import type { ResultProps, ResultType } from '../../src/utils/Result'; +import { Result } from '../../src/utils/Result'; describe('', () => { const setUp = (props: ResultProps) => render(); diff --git a/test/utils/dates/DateInput.test.tsx b/test/utils/dates/DateInput.test.tsx index 525b0652..e7389f50 100644 --- a/test/utils/dates/DateInput.test.tsx +++ b/test/utils/dates/DateInput.test.tsx @@ -1,7 +1,8 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; import { parseISO } from 'date-fns'; -import { DateInput, DateInputProps } from '../../../src/utils/dates/DateInput'; +import type { DateInputProps } from '../../../src/utils/dates/DateInput'; +import { DateInput } from '../../../src/utils/dates/DateInput'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/utils/dates/DateIntervalDropdownItems.test.tsx b/test/utils/dates/DateIntervalDropdownItems.test.tsx index 66a909aa..ac04b70d 100644 --- a/test/utils/dates/DateIntervalDropdownItems.test.tsx +++ b/test/utils/dates/DateIntervalDropdownItems.test.tsx @@ -1,6 +1,7 @@ import { screen, waitFor } from '@testing-library/react'; import { DateIntervalDropdownItems } from '../../../src/utils/dates/DateIntervalDropdownItems'; -import { DATE_INTERVALS, DateInterval, rangeOrIntervalToString } from '../../../src/utils/helpers/dateIntervals'; +import type { DateInterval } from '../../../src/utils/helpers/dateIntervals'; +import { DATE_INTERVALS, rangeOrIntervalToString } from '../../../src/utils/helpers/dateIntervals'; import { DropdownBtn } from '../../../src/utils/DropdownBtn'; import { renderWithEvents } from '../../__helpers__/setUpTest'; diff --git a/test/utils/dates/DateIntervalSelector.test.tsx b/test/utils/dates/DateIntervalSelector.test.tsx index 975159c7..3c56b9ce 100644 --- a/test/utils/dates/DateIntervalSelector.test.tsx +++ b/test/utils/dates/DateIntervalSelector.test.tsx @@ -1,5 +1,6 @@ import { screen, waitFor } from '@testing-library/react'; -import { DateInterval, rangeOrIntervalToString } from '../../../src/utils/helpers/dateIntervals'; +import type { DateInterval } from '../../../src/utils/helpers/dateIntervals'; +import { rangeOrIntervalToString } from '../../../src/utils/helpers/dateIntervals'; import { DateIntervalSelector } from '../../../src/utils/dates/DateIntervalSelector'; import { renderWithEvents } from '../../__helpers__/setUpTest'; diff --git a/test/utils/dates/DateRangeSelector.test.tsx b/test/utils/dates/DateRangeSelector.test.tsx index 858d06c0..ed4429fa 100644 --- a/test/utils/dates/DateRangeSelector.test.tsx +++ b/test/utils/dates/DateRangeSelector.test.tsx @@ -1,7 +1,8 @@ import { screen, waitFor } from '@testing-library/react'; import { Mock } from 'ts-mockery'; -import { DateRangeSelector, DateRangeSelectorProps } from '../../../src/utils/dates/DateRangeSelector'; -import { DateInterval } from '../../../src/utils/helpers/dateIntervals'; +import type { DateRangeSelectorProps } from '../../../src/utils/dates/DateRangeSelector'; +import { DateRangeSelector } from '../../../src/utils/dates/DateRangeSelector'; +import type { DateInterval } from '../../../src/utils/helpers/dateIntervals'; import { renderWithEvents } from '../../__helpers__/setUpTest'; describe('', () => { diff --git a/test/utils/dates/Time.test.tsx b/test/utils/dates/Time.test.tsx index 38b38a47..aa57cdd8 100644 --- a/test/utils/dates/Time.test.tsx +++ b/test/utils/dates/Time.test.tsx @@ -1,5 +1,6 @@ import { render } from '@testing-library/react'; -import { TimeProps, Time } from '../../../src/utils/dates/Time'; +import type { TimeProps } from '../../../src/utils/dates/Time'; +import { Time } from '../../../src/utils/dates/Time'; import { parseDate } from '../../../src/utils/helpers/date'; describe('