Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions @types/global.d.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
interface Window {}

interface Process {
env: {
PUBLIC_URL: string
NODE_ENV: 'development' | 'production'
declare global {
namespace NodeJS {
interface ProcessEnv {
PUBLIC_URL: string
NODE_ENV: 'development' | 'production'
}
}
}

export {}
38 changes: 21 additions & 17 deletions src/components/common/VersionSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ const getReleasedVersions = ({
releasedVersions: string[]
minVersion?: string
maxVersion?: string
}) => {
}): string[] => {
const latestMajorReleaseVersion =
getLatestMajorReleaseVersion(releasedVersions)

Expand All @@ -181,32 +181,36 @@ const getFirstMajorRelease = ({
releasedVersions: string[]
versionToCompare: string
}) =>
releasedVersions.find(
(releasedVersion) =>
releasedVersions.find((releasedVersion) => {
const releasedVersionValid = semver.valid(semver.coerce(releasedVersion))
const versionToCompareValid = semver.valid(semver.coerce(versionToCompare))

return (
semver.lt(releasedVersion, versionToCompare) &&
semver.diff(
semver.valid(semver.coerce(releasedVersion)),
semver.valid(semver.coerce(versionToCompare))
) === 'minor'
)
releasedVersionValid &&
versionToCompareValid &&
semver.diff(releasedVersionValid, versionToCompareValid) === 'minor'
)
})

// Return if version exists in the ones returned from GitHub
const doesVersionExist = ({
version,
allVersions,
minVersion,
}: {
version: string
version: string | null
allVersions: string[]
minVersion?: string
}) => {
}): boolean => {
try {
if (version === null) {
return false
}

return (
version &&
allVersions.includes(version) &&
// Also compare the version against a `minVersion`, this is used
// to not allow the user to have a `fromVersion` newer than `toVersion`
(!minVersion || (minVersion && semver.gt(version, minVersion)))
(!minVersion || semver.gt(version, minVersion))
)
} catch (_error) {
return false
Expand Down Expand Up @@ -234,8 +238,8 @@ const VersionSelector = ({
packageName,
})
const [allVersions, setAllVersions] = useState<string[]>([])
const [fromVersionList, setFromVersionList] = useState([])
const [toVersionList, setToVersionList] = useState([])
const [fromVersionList, setFromVersionList] = useState<string[]>([])
const [toVersionList, setToVersionList] = useState<string[]>([])
const [hasVersionsFromURL, setHasVersionsFromURL] = useState<boolean>(false)

const [localFromVersion, setLocalFromVersion] = useState<string>('')
Expand Down Expand Up @@ -281,7 +285,7 @@ const VersionSelector = ({
getFirstMajorRelease({
releasedVersions: sanitizedVersions,
versionToCompare: toVersionToBeSet,
})
}) || sanitizedVersions[sanitizedVersions.length - 1] // Fallback to last version if no major release found

setFromVersionList(
getReleasedVersions({
Expand Down
11 changes: 7 additions & 4 deletions src/components/pages/Home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { DarkModeButton } from '../common/DarkModeButton'
import { updateURL } from '../../utils/update-url'
import { deviceSizes } from '../../utils/device-sizes'
import { lightTheme, darkTheme, type Theme } from '../../theme'
import { CheckboxValueType } from 'antd/es/checkbox/Group'

const Page = styled.div<{ theme?: Theme }>`
background-color: ${({ theme }) => theme.background};
Expand Down Expand Up @@ -104,7 +105,7 @@ const getAppInfoInURL = () => {

return {
appPackage: pkg as string,
appName: name as string | null,
appName: name as string | undefined,
}
}

Expand Down Expand Up @@ -198,9 +199,11 @@ const Home = () => {
setShouldShowDiff(false)
}

const handleSettingsChange = (settingsValues: string[]) => {
const normalizedIncomingSettings = settingsValues.reduce((acc, val) => {
acc[val] = true
const handleSettingsChange = (settingsValues: CheckboxValueType[]) => {
const normalizedIncomingSettings = settingsValues.reduce<
Record<string, boolean>
>((acc, val) => {
acc[String(val)] = true
return acc
}, {})

Expand Down
11 changes: 8 additions & 3 deletions src/serviceWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ const isLocalhost = Boolean(
)
)

export function register(config) {
interface ServiceWorkerConfig {
onSuccess?: (registration: ServiceWorkerRegistration) => void
onUpdate?: (registration: ServiceWorkerRegistration) => void
}

export function register(config?: ServiceWorkerConfig) {
if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
// The URL constructor is available in all browsers that support SW.
const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)
Expand Down Expand Up @@ -54,7 +59,7 @@ export function register(config) {
}
}

function registerValidSW(swUrl, config) {
function registerValidSW(swUrl: string, config?: ServiceWorkerConfig) {
navigator.serviceWorker
.register(swUrl)
.then((registration) => {
Expand Down Expand Up @@ -98,7 +103,7 @@ function registerValidSW(swUrl, config) {
})
}

function checkValidServiceWorker(swUrl, config) {
function checkValidServiceWorker(swUrl: string, config?: ServiceWorkerConfig) {
// Check if the service worker can be found. If it can't reload the page.
fetch(swUrl)
.then((response) => {
Expand Down
6 changes: 6 additions & 0 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,15 @@ export const getVersionsContentInDiff = ({
}

const cleanedToVersion = semver.valid(semver.coerce(toVersion))
if (!cleanedToVersion) {
return []
}

return versions[packageName].filter(({ version }) => {
const cleanedVersion = semver.coerce(version)
if (!cleanedVersion) {
return false
}

// `cleanedVersion` can't be newer than `cleanedToVersion` nor older (or equal) than `fromVersion`
return (
Expand Down
2 changes: 1 addition & 1 deletion src/utils/update-url.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function updateURL({
isPackageNameDefinedInURL: boolean
fromVersion: string
toVersion: string
appPackage: string
appPackage?: string
appName?: string
}) {
const url = new URL(window.location.origin)
Expand Down
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@
"module": "commonjs"
}
},
"include": ["./src", "./assets"],
"include": ["./src", "./assets", "./@types"],
"exclude": ["./src/__tests__/*"]
}