diff --git a/client/app/Sidebar.tsx b/client/app/Sidebar.tsx index f1934e43..fe698dfb 100644 --- a/client/app/Sidebar.tsx +++ b/client/app/Sidebar.tsx @@ -122,7 +122,7 @@ export const Sidebar: FCC = ({ children }) => { animate(x, 0); } }, - [x] + [x], ); useEffect(() => { @@ -148,7 +148,7 @@ export const Sidebar: FCC = ({ children }) => { // Auto-focus current active link if (sidebarRef.current !== null) { let currentLink: HTMLAnchorElement | HTMLButtonElement | null = sidebarRef.current.querySelector( - `a[href="${document.location.pathname}"]` + `a[href="${document.location.pathname}"]`, ); if (!currentLink) { currentLink = buttonRef.current; diff --git a/client/components/forms/Button.tsx b/client/components/forms/Button.tsx index 1db8ac9e..90d7a4e3 100644 --- a/client/components/forms/Button.tsx +++ b/client/components/forms/Button.tsx @@ -431,7 +431,7 @@ function getNormalizedEventCoords(e: React.PointerEvent, frame: DOMRect): Coordi function getTranslationCoordinates( e: React.PointerEvent | React.KeyboardEvent, frame: DOMRect, - initialSize: number + initialSize: number, ): Translation { const halfSize = initialSize / 2; const start: Coordinates = @@ -477,7 +477,7 @@ type LinkStyledProps = React.ComponentProps; function initTransition( e: React.PointerEvent | React.KeyboardEvent, element: HTMLElement, - rounding?: ButtonStyledProps['rounding'] + rounding?: ButtonStyledProps['rounding'], ) { const isUnbounded = rounding === 'icon'; const frame = element.getBoundingClientRect(); @@ -507,7 +507,7 @@ function useMaterialButton( ref: React.RefObject, rippleRef: React.RefObject, rounding: ButtonStyledProps['rounding'], - props: any + props: any, ) { // Use timeout to allow for the ripple animation to complete even when we release the button const animationTimeout = useRef(0); @@ -645,7 +645,7 @@ function useMaterialButton( } }, }), - [ref, onPointerDown, onPointerUp, onKeyDown, onKeyUp, onClick, rounding] + [ref, onPointerDown, onPointerUp, onKeyDown, onKeyUp, onClick, rounding], ); return [eventHandlers, otherProps]; @@ -654,7 +654,7 @@ function useMaterialButton( export const Button = forwardRef( ( { variant = 'contained', tone = 'neutral', size = 'base', rounding = 'normal', children, ...rest }, - forwardedRef + forwardedRef, ) => { const ref = useShareForwardedRef(forwardedRef); const rippleRef = useRef(null); @@ -675,13 +675,13 @@ export const Button = forwardRef( {children} ); - } + }, ); export const AnchorButton = forwardRef( ( { variant = 'contained', tone = 'neutral', size = 'base', rounding = 'normal', children, ...rest }, - forwardedRef + forwardedRef, ) => { const ref = useShareForwardedRef(forwardedRef); const rippleRef = useRef(null); @@ -699,13 +699,13 @@ export const AnchorButton = forwardRef( {children} ); - } + }, ); export const LinkButton = forwardRef( ( { variant = 'contained', tone = 'neutral', size = 'base', rounding = 'normal', children, ...rest }, - forwardedRef + forwardedRef, ) => { const ref = useShareForwardedRef(forwardedRef); const rippleRef = useRef(null); @@ -723,5 +723,5 @@ export const LinkButton = forwardRef( {children} ); - } + }, ); diff --git a/client/components/forms/FilePicker.tsx b/client/components/forms/FilePicker.tsx index ed5e5264..0437da12 100644 --- a/client/components/forms/FilePicker.tsx +++ b/client/components/forms/FilePicker.tsx @@ -51,14 +51,14 @@ export const FilePicker: React.FC = ({ disabled, placeholder = 'Select a setFiles( e.target.files && e.target.files.length ? [...Array.from(e.target.files)] // Firefox returns the same array instance each time for some reason - : null + : null, ); if (onChange != null) { onChange(e); } }, - [onChange] + [onChange], ); const handleButtonClick = useCallback(() => { diff --git a/client/components/forms/Selection.tsx b/client/components/forms/Selection.tsx index 0f6f7050..e8df998c 100644 --- a/client/components/forms/Selection.tsx +++ b/client/components/forms/Selection.tsx @@ -8,10 +8,10 @@ const UIRadioChecked = 'ui/radio/checked'; const UISwitch = 'ui/switch'; register( - `` + ``, ); register( - `` + ``, ); register(``); register(``); diff --git a/client/components/router/client.tsx b/client/components/router/client.tsx index df28a62a..d9b7c8ee 100644 --- a/client/components/router/client.tsx +++ b/client/components/router/client.tsx @@ -40,7 +40,7 @@ export function BrowserRouter({ basename, children, window }: BrowserRouterProps setState(update); }); }), - [history, startTransition] + [history, startTransition], ); return ( @@ -70,7 +70,7 @@ export interface LinkProps extends Omit(function LinkWithRef( { onClick, replace = false, state, target, to, ...rest }, - ref + ref, ) { let href = useHref(to); let internalOnClick = useLinkClickHandler(to, { replace, state, target }); @@ -108,7 +108,7 @@ export const NavLink = forwardRef(function NavL to, ...rest }, - ref + ref, ) { let location = useLocation(); let path = useResolvedPath(to); @@ -166,7 +166,7 @@ export function useLinkClickHandler( target?: React.HTMLAttributeAnchorTarget; replace?: boolean; state?: any; - } = {} + } = {}, ): (event: React.MouseEvent) => void { let navigate = useNavigate(); let location = useLocation(); @@ -188,7 +188,7 @@ export function useLinkClickHandler( navigate(to, { replace, state }); } }, - [location, navigate, path, replaceProp, state, target, to] + [location, navigate, path, replaceProp, state, target, to], ); } @@ -219,7 +219,7 @@ export function useSearchParams(defaultInit?: URLSearchParamsInit) { (nextInit: URLSearchParamsInit, navigateOptions?: { replace?: boolean; state?: any }) => { navigate('?' + createSearchParams(nextInit), navigateOptions); }, - [navigate] + [navigate], ); return [searchParams, setSearchParams] as const; @@ -257,6 +257,6 @@ export function createSearchParams(init: URLSearchParamsInit = ''): URLSearchPar : Object.keys(init).reduce((memo, key) => { let value = init[key]; return memo.concat(Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]); - }, [] as ParamKeyValuePair[]) + }, [] as ParamKeyValuePair[]), ); } diff --git a/client/components/router/index.tsx b/client/components/router/index.tsx index e8437c8d..2ab364f4 100644 --- a/client/components/router/index.tsx +++ b/client/components/router/index.tsx @@ -147,7 +147,7 @@ export function Router({ let basename = normalizePathname(basenameProp); let navigationContext = useMemo( () => ({ basename, navigator, static: staticProp, pending }), - [basename, navigator, staticProp, pending] + [basename, navigator, staticProp, pending], ); if (typeof locationProp === 'string') { @@ -321,7 +321,7 @@ export function useNavigate(): NavigateFunction { (!!options.replace ? navigator.replace : navigator.push)(path, options.state); }, - [basename, navigator, routePathnamesJson, locationPathname] + [basename, navigator, routePathnamesJson, locationPathname], ); return navigate; @@ -362,7 +362,7 @@ export function useResolvedPath(to: To): Path { return useMemo( () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname), - [to, routePathnamesJson, locationPathname] + [to, routePathnamesJson, locationPathname], ); } @@ -405,9 +405,9 @@ export function useRoutes(routes: RouteObject[], locationArg?: Partial pathname: joinPaths([parentPathnameBase, match.pathname]), pathnameBase: match.pathnameBase === '/' ? parentPathnameBase : joinPaths([parentPathnameBase, match.pathnameBase]), - }) + }), ), - parentMatches + parentMatches, ); } @@ -515,7 +515,7 @@ export interface RouteMatch { export function matchRoutes( routes: RouteObject[], locationArg: Partial | string, - basename = '/' + basename = '/', ): RouteMatch[] | null { let location = typeof locationArg === 'string' ? parsePath(locationArg) : locationArg; @@ -552,7 +552,7 @@ function flattenRoutes( routes: RouteObject[], branches: RouteBranch[] = [], parentsMeta: RouteMeta[] = [], - parentPath = '' + parentPath = '', ): RouteBranch[] { routes.forEach((route, index) => { let meta: RouteMeta = { @@ -593,8 +593,8 @@ function rankRouteBranches(branches: RouteBranch[]): void { ? b.score - a.score // Higher score first : compareIndexes( a.routesMeta.map((meta) => meta.childrenIndex), - b.routesMeta.map((meta) => meta.childrenIndex) - ) + b.routesMeta.map((meta) => meta.childrenIndex), + ), ); } @@ -622,7 +622,7 @@ function computeScore(path: string, index: boolean | undefined): number { .reduce( (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === '' ? emptySegmentValue : staticSegmentValue), - initialScore + initialScore, ); } @@ -644,7 +644,7 @@ function matchRouteBranch( branch: RouteBranch, // TODO: attach original route object inside routesMeta so we don't need this arg routesArg: RouteObject[], - pathname: string + pathname: string, ): RouteMatch[] | null { let routes = routesArg; let { routesMeta } = branch; @@ -691,28 +691,31 @@ export function renderMatches(matches: RouteMatch[] | null): React.ReactElement function _renderMatches(matches: RouteMatch[] | null, parentMatches: RouteMatch[] = []): React.ReactElement | null { if (matches == null) return null; - return matches.reduceRight((outlet, match, index) => { - // const children = match.route.element ? ( - // isValidElement(match.route.element) ? ( - // match.route.element - // ) : ( - // //@ts-expect-error - // createElement(match.route.element) - // ) - // ) : ( - // - // ); - - return ( - } - value={{ - outlet, - matches: parentMatches.concat(matches.slice(0, index + 1)), - }} - /> - ); - }, null as React.ReactElement | null); + return matches.reduceRight( + (outlet, match, index) => { + // const children = match.route.element ? ( + // isValidElement(match.route.element) ? ( + // match.route.element + // ) : ( + // //@ts-expect-error + // createElement(match.route.element) + // ) + // ) : ( + // + // ); + + return ( + } + value={{ + outlet, + matches: parentMatches.concat(matches.slice(0, index + 1)), + }} + /> + ); + }, + null as React.ReactElement | null, + ); } /** @@ -770,7 +773,7 @@ type Mutable = { */ export function matchPath( pattern: PathPattern | string, - pathname: string + pathname: string, ): PathMatch | null { if (typeof pattern === 'string') { pattern = { path: pattern, caseSensitive: false, end: true }; diff --git a/client/components/ui/NavProgress.tsx b/client/components/ui/NavProgress.tsx index d0f7e636..65013546 100644 --- a/client/components/ui/NavProgress.tsx +++ b/client/components/ui/NavProgress.tsx @@ -189,9 +189,12 @@ export function NavProgress() { step = 0.5; } - trickleTimeoutId.current = setTimeout(() => { - dispatch({ type: 'progress', payload: progress >= PERC_MAX ? PERC_MAX : progress + step }); - }, 200 + Math.floor(400 * Math.random())); + trickleTimeoutId.current = setTimeout( + () => { + dispatch({ type: 'progress', payload: progress >= PERC_MAX ? PERC_MAX : progress + step }); + }, + 200 + Math.floor(400 * Math.random()), + ); } }, [state.progress]); diff --git a/client/hooks/useCSS.ts b/client/hooks/useCSS.ts index 00a035ce..fb28fe8e 100644 --- a/client/hooks/useCSS.ts +++ b/client/hooks/useCSS.ts @@ -12,7 +12,7 @@ export function useCSS(href: string) { () => { css.media = 'screen'; }, - { once: true } + { once: true }, ); document.head.append(css); diff --git a/client/hooks/useComponentSize.ts b/client/hooks/useComponentSize.ts index b94a2f9c..02974547 100644 --- a/client/hooks/useComponentSize.ts +++ b/client/hooks/useComponentSize.ts @@ -24,7 +24,7 @@ export function useComponentSize(ref: React.RefObject) { setComponentSize(getSize(ref.current)); } }, - [ref] + [ref], ); useLayoutEffect(() => { diff --git a/client/hooks/useContentVisibility.ts b/client/hooks/useContentVisibility.ts index 2d4773b1..3eb2c949 100644 --- a/client/hooks/useContentVisibility.ts +++ b/client/hooks/useContentVisibility.ts @@ -39,7 +39,7 @@ function init() { } }); }, - { rootMargin: '50px 0px 100px 0px' } + { rootMargin: '50px 0px 100px 0px' }, ); resizeObservers = new ResizeObserver((entries: ResizeObserverEntry[]) => { diff --git a/client/hooks/useEventCallback.ts b/client/hooks/useEventCallback.ts index f4eea439..98caf179 100644 --- a/client/hooks/useEventCallback.ts +++ b/client/hooks/useEventCallback.ts @@ -10,7 +10,7 @@ export function useEventCallback(fn: Function, dependencies: Array) { ref.current = fn; }, // eslint-disable-next-line - [fn, ...dependencies] + [fn, ...dependencies], ); return useCallback(() => { diff --git a/client/hooks/useIntersectionObserver.ts b/client/hooks/useIntersectionObserver.ts index 8c6a5ae1..9dacbf01 100644 --- a/client/hooks/useIntersectionObserver.ts +++ b/client/hooks/useIntersectionObserver.ts @@ -4,7 +4,7 @@ import { SUPPORTS_INTERSECTION_OBSERVER } from '~/services/supports'; export function useIntersectionObserver( ref: React.RefObject, serverFallback: boolean = false, - options: IntersectionObserverInit = { rootMargin: '0px' } + options: IntersectionObserverInit = { rootMargin: '0px' }, ) { const intersectingRef = useRef(serverFallback); const [subscribe, getSnapshot, getServerSnapshot] = useMemo(() => { diff --git a/client/hooks/useLocalStorage.ts b/client/hooks/useLocalStorage.ts index 9659a35b..95eb268f 100644 --- a/client/hooks/useLocalStorage.ts +++ b/client/hooks/useLocalStorage.ts @@ -24,7 +24,7 @@ export function useLocalStorage(key: string, initialValue: T): HookSignature< } setKeyValue(value); }, - [key, setKeyValue] + [key, setKeyValue], ); return [keyValue, setValue]; diff --git a/client/hooks/useSessionStorage.ts b/client/hooks/useSessionStorage.ts index 50f5adf1..2481b8c2 100644 --- a/client/hooks/useSessionStorage.ts +++ b/client/hooks/useSessionStorage.ts @@ -22,7 +22,7 @@ export function useSessionStorage(key: string, initialValue: T) { } setKeyValue(value); }, - [key, setKeyValue] + [key, setKeyValue], ); return [keyValue, setValue]; diff --git a/client/routes/customize/BuildAddons.tsx b/client/routes/customize/BuildAddons.tsx index 9f76c791..4bf2b884 100644 --- a/client/routes/customize/BuildAddons.tsx +++ b/client/routes/customize/BuildAddons.tsx @@ -21,7 +21,7 @@ export const BuildAddons: React.FC<{ children?: never }> = () => { const descriptions = useStore(selectorDescriptions); const onChange: CheckboxProps['onChange'] = useCallback( (e, addon: Addon) => dispatch(createActionAddonToggle(addon)), - [dispatch] + [dispatch], ); return ( diff --git a/client/routes/customize/BuildDownloader.tsx b/client/routes/customize/BuildDownloader.tsx index 08d0fade..11a33298 100644 --- a/client/routes/customize/BuildDownloader.tsx +++ b/client/routes/customize/BuildDownloader.tsx @@ -133,7 +133,7 @@ export const BuildDownloader = forwardRef((props, ref) => { (e: React.MouseEvent) => { stop(); }, - [stop] + [stop], ); const start = useCallback(() => { diff --git a/client/routes/customize/BuildFooter.tsx b/client/routes/customize/BuildFooter.tsx index 1a1f1e45..ad2aaec6 100644 --- a/client/routes/customize/BuildFooter.tsx +++ b/client/routes/customize/BuildFooter.tsx @@ -36,7 +36,7 @@ export function BuildFooter({ downloadRef }: Props) { } dispatch(createActionConfigLoad(payload)); }, - [dispatch] + [dispatch], ); const download = useCallback(() => { diff --git a/client/routes/customize/ConnectedRadio.tsx b/client/routes/customize/ConnectedRadio.tsx index d732dcbb..1e68edaa 100644 --- a/client/routes/customize/ConnectedRadio.tsx +++ b/client/routes/customize/ConnectedRadio.tsx @@ -29,7 +29,7 @@ export const ConnectedRadio: React.FC = ({ name, value, opt (e, val: any) => { dispatch(action(val)); }, - [dispatch, action] + [dispatch, action], ); return ( diff --git a/client/routes/customize/lib/bundler.ts b/client/routes/customize/lib/bundler.ts index 9843b3f1..34609ae1 100644 --- a/client/routes/customize/lib/bundler.ts +++ b/client/routes/customize/lib/bundler.ts @@ -92,7 +92,7 @@ export function getFiles( selected: Array, platforms: PlatformSelection, source: boolean, - javadoc: boolean + javadoc: boolean, ): Array { const files: Array = []; const rootRegExp = new RegExp(`^${path}/bin/`); @@ -267,7 +267,7 @@ export function downloadFiles(files: Array, jszip: JSZip, log: (msg: str } } resolve(); - }) + }), ); } @@ -279,7 +279,7 @@ export async function beginDownload( store: BuildStore, downloadCancel: (msg?: string) => void, downloadLog: (msg: string) => void, - downloadComplete: () => void + downloadComplete: () => void, ) { // Fetch all data that we will need from the store const { build, path, selected, platforms, source, javadoc, includeJSON, version, addons } = getBuild(store); @@ -335,7 +335,7 @@ export async function beginDownload( saveAs( blob, - `lwjgl-${build}-${build === BuildType.Release ? version : new Date().toISOString().slice(0, 10)}-custom.zip` + `lwjgl-${build}-${build === BuildType.Release ? version : new Date().toISOString().slice(0, 10)}-custom.zip`, ); downloadComplete(); diff --git a/client/routes/customize/lib/gradle.ts b/client/routes/customize/lib/gradle.ts index 2692f19e..3badb988 100644 --- a/client/routes/customize/lib/gradle.ts +++ b/client/routes/customize/lib/gradle.ts @@ -1,7 +1,7 @@ import { ScriptState } from '../BuildScript'; import { Language, BuildType } from '../types'; import type { Addon, BindingDefinition, PlatformSelection } from '../types'; -import {generateDependencies, getLinuxSuffix, getVersion, isNativeApplicableToAllPlatforms} from './script'; +import { generateDependencies, getLinuxSuffix, getVersion, isNativeApplicableToAllPlatforms } from './script'; import { versionNum } from '../reducer'; export function generateGradle({ @@ -182,7 +182,7 @@ dependencies {`; (artifact, groupId, artifactId) => `\n\t${guardNative(artifact, platform)}runtimeOnly "${groupId}:${artifactId}:${ hasBoM ? '' : `${v}` - }:${classifier}"` + }:${classifier}"`, ); selectedAddons.forEach((id: Addon) => { @@ -209,8 +209,8 @@ dependencies {`; (artifact, groupId, artifactId) => `\n\t${guardNative( artifact, - platform - )}runtimeOnly("${groupId}", "${artifactId}"${v}, classifier = ${classifier})` + platform, + )}runtimeOnly("${groupId}", "${artifactId}"${v}, classifier = ${classifier})`, ); selectedAddons.forEach((id: Addon) => { diff --git a/client/routes/customize/lib/ivy.ts b/client/routes/customize/lib/ivy.ts index 99ff4b39..05cb4678 100644 --- a/client/routes/customize/lib/ivy.ts +++ b/client/routes/customize/lib/ivy.ts @@ -1,7 +1,13 @@ import { ScriptState } from '../BuildScript'; -import {BuildType} from '../types'; +import { BuildType } from '../types'; import type { Addon } from '../types'; -import {generateDependencies, getArtifactName, getLinuxSuffix, getVersion, isNativeApplicableToAllPlatforms} from './script'; +import { + generateDependencies, + getArtifactName, + getLinuxSuffix, + getVersion, + isNativeApplicableToAllPlatforms, +} from './script'; export function generateIvy({ build, @@ -60,7 +66,9 @@ export function generateIvy({ if (linuxArches !== 0) { if (linuxArches === 1) { script += ` -${nl2}${nl1}`; +${nl2}${nl1}`; } else { if (platform.linux) { script += ` @@ -191,7 +199,7 @@ export function generateIvy({ .map((p) => ``); return `\t${nl2}${ predicates.length === 1 ? predicates : `${nl3}${predicates.join(nl3)}${nl2}` }${nl1}`; @@ -219,7 +227,7 @@ export function generateIvy({ : `\${lwjgl.natives.${getArtifactName(artifact)}}` }"/>${nl2}` : '/>' - }` + }`, ); selectedAddons.forEach((id: Addon) => { diff --git a/client/routes/customize/lib/maven.ts b/client/routes/customize/lib/maven.ts index 62604344..70b6f6a7 100644 --- a/client/routes/customize/lib/maven.ts +++ b/client/routes/customize/lib/maven.ts @@ -146,7 +146,7 @@ export function generateMaven({ return `\n\t${nl3}${groupId}${nl3}${artifactId}${ hasBoM ? '' : `${nl3}${v}` }${nl3}${classifier}${nl2}`; - } + }, ); selectedAddons.forEach((id: Addon) => { diff --git a/client/routes/customize/lib/script.ts b/client/routes/customize/lib/script.ts index 8143f408..df44b8b1 100644 --- a/client/routes/customize/lib/script.ts +++ b/client/routes/customize/lib/script.ts @@ -112,9 +112,9 @@ export function generateDependencies( artifact: BindingDefinition, groupId: string, artifactId: string, - hasEnabledNativePlatform: boolean + hasEnabledNativePlatform: boolean, ) => string, - generateNative?: (artifact: BindingDefinition, groupId: string, artifactId: string) => string + generateNative?: (artifact: BindingDefinition, groupId: string, artifactId: string) => string, ): string { let script = ''; let nativesBundle = ''; diff --git a/client/routes/customize/reducer.ts b/client/routes/customize/reducer.ts index b8612b46..334a02fe 100644 --- a/client/routes/customize/reducer.ts +++ b/client/routes/customize/reducer.ts @@ -307,7 +307,7 @@ export const fields = { // Reducer export const reducer: React.Reducer = ( state: BuildStore = config, - action: ActionMessage + action: ActionMessage, ) => { return produce(state, (draft: BuildStore) => { switch (action.type) { @@ -381,7 +381,7 @@ export const reducer: React.Reducer = ( case Action.TOGGLE_PLATFORM: const selections = state.natives.allIds.reduce( (previousValue, platform) => previousValue + (state.platform[platform] ? 1 : 0), - 0 + 0, ); if (selections > 1 || state.platform[action.platform] === false) { draft.platform[action.platform] = !state.platform[action.platform]; diff --git a/client/routes/customize/types.ts b/client/routes/customize/types.ts index f0224ca4..6365cdfd 100644 --- a/client/routes/customize/types.ts +++ b/client/routes/customize/types.ts @@ -97,7 +97,14 @@ export enum Native { } export const NATIVE_LTE_322 = [Native.Linux, Native.MacOS, Native.Windows]; -export const NATIVE_LTE_333 = [...NATIVE_LTE_322, Native.LinuxARM64, Native.LinuxARM32, Native.MacOSARM64, Native.WindowsX86, Native.WindowsARM64]; +export const NATIVE_LTE_333 = [ + ...NATIVE_LTE_322, + Native.LinuxARM64, + Native.LinuxARM32, + Native.MacOSARM64, + Native.WindowsX86, + Native.WindowsARM64, +]; export const NATIVE_ALL = [ Native.Linux, Native.LinuxARM64, diff --git a/client/routes/customize/versions/3.3.0.ts b/client/routes/customize/versions/3.3.0.ts index c70764c0..696d0265 100644 --- a/client/routes/customize/versions/3.3.0.ts +++ b/client/routes/customize/versions/3.3.0.ts @@ -1,4 +1,4 @@ -import {Binding, NATIVE_LTE_322, NATIVE_LTE_333, Native, Version} from '../types'; +import { Binding, NATIVE_LTE_322, NATIVE_LTE_333, Native, Version } from '../types'; import type { BuildBindings, BindingDefinition } from '../types'; export default (prev: BuildBindings): BuildBindings => ({ diff --git a/client/services/flattenChildren.ts b/client/services/flattenChildren.ts index a6f88668..76767163 100644 --- a/client/services/flattenChildren.ts +++ b/client/services/flattenChildren.ts @@ -12,7 +12,7 @@ export function flattenChildren(children: ReactNode, keys: (string | number)[] = acc.push( cloneElement(node, { key: keys.concat(String(node.key)).join('.'), - }) + }), ); } else if (typeof node === 'string' || typeof node === 'number') { acc.push(node); diff --git a/client/services/safeAwait.ts b/client/services/safeAwait.ts index 255ebcd3..2c36ab3b 100644 --- a/client/services/safeAwait.ts +++ b/client/services/safeAwait.ts @@ -1,5 +1,5 @@ const nativeExceptions = [EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError].filter( - (except) => typeof except === 'function' + (except) => typeof except === 'function', ); /* Throw native errors. ref: https://bit.ly/2VsoCGE */ diff --git a/client/services/screenFit.ts b/client/services/screenFit.ts index b77007a8..cce18c4f 100644 --- a/client/services/screenFit.ts +++ b/client/services/screenFit.ts @@ -21,7 +21,7 @@ function resize() { dispatchEvent( new CustomEvent('screenfit', { detail: viewport, - }) + }), ); } diff --git a/client/sw.js b/client/sw.js index 53a463ec..5b4944d0 100644 --- a/client/sw.js +++ b/client/sw.js @@ -78,7 +78,7 @@ async function install() { if (deps !== null) { files.push.apply( files, - deps.map(id => `/js/${manifest.assets[id]}`) + deps.map(id => `/js/${manifest.assets[id]}`), ); } } @@ -122,7 +122,7 @@ function onFetch(event) { const url = new URL(event.request.url); const req = event.request; event.respondWith( - req.method !== 'GET' || url.hostname !== self.location.hostname ? fetch(req) : cacheFirstStrategy(event, req, url) + req.method !== 'GET' || url.hostname !== self.location.hostname ? fetch(req) : cacheFirstStrategy(event, req, url), ); } diff --git a/client/theme/color.ts b/client/theme/color.ts index fe7c1d15..426fed54 100644 --- a/client/theme/color.ts +++ b/client/theme/color.ts @@ -146,7 +146,7 @@ export function mix(color: Hsl, mix: Hsl, weight: number = 0.5) { const mixChannels = toRGB(mix); return setAlpha( fromRGB(toRGB(color).map((channelA, i) => Math.round(mixChannels[i] + (channelA - mixChannels[i]) * weight))), - mix.alpha + (mix.alpha - color.alpha) * weight + mix.alpha + (mix.alpha - color.alpha) * weight, ); } diff --git a/client/theme/icons/fa/brands/apple.ts b/client/theme/icons/fa/brands/apple.ts index 0a780adb..fce0bf97 100644 --- a/client/theme/icons/fa/brands/apple.ts +++ b/client/theme/icons/fa/brands/apple.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/brands/github.ts b/client/theme/icons/fa/brands/github.ts index fc3e2653..f5b3bc37 100644 --- a/client/theme/icons/fa/brands/github.ts +++ b/client/theme/icons/fa/brands/github.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/brands/linux.ts b/client/theme/icons/fa/brands/linux.ts index 990895c1..7296ab94 100644 --- a/client/theme/icons/fa/brands/linux.ts +++ b/client/theme/icons/fa/brands/linux.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/brands/windows.ts b/client/theme/icons/fa/brands/windows.ts index 0c5df02a..ba1fb868 100644 --- a/client/theme/icons/fa/brands/windows.ts +++ b/client/theme/icons/fa/brands/windows.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/book.ts b/client/theme/icons/fa/duotone/book.ts index c479115f..2c6246c9 100644 --- a/client/theme/icons/fa/duotone/book.ts +++ b/client/theme/icons/fa/duotone/book.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/brackets-curly.ts b/client/theme/icons/fa/duotone/brackets-curly.ts index cf2a8e8f..d35ed72b 100644 --- a/client/theme/icons/fa/duotone/brackets-curly.ts +++ b/client/theme/icons/fa/duotone/brackets-curly.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/cloud-download.ts b/client/theme/icons/fa/duotone/cloud-download.ts index ebc6b634..f1cb1333 100644 --- a/client/theme/icons/fa/duotone/cloud-download.ts +++ b/client/theme/icons/fa/duotone/cloud-download.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/code-branch.ts b/client/theme/icons/fa/duotone/code-branch.ts index 5ee3f731..6c424592 100644 --- a/client/theme/icons/fa/duotone/code-branch.ts +++ b/client/theme/icons/fa/duotone/code-branch.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/code-merge.ts b/client/theme/icons/fa/duotone/code-merge.ts index be857817..15b74ca6 100644 --- a/client/theme/icons/fa/duotone/code-merge.ts +++ b/client/theme/icons/fa/duotone/code-merge.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/code.ts b/client/theme/icons/fa/duotone/code.ts index b4d79d4c..370f7f3f 100644 --- a/client/theme/icons/fa/duotone/code.ts +++ b/client/theme/icons/fa/duotone/code.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/comments.ts b/client/theme/icons/fa/duotone/comments.ts index 305dcc1b..632749de 100644 --- a/client/theme/icons/fa/duotone/comments.ts +++ b/client/theme/icons/fa/duotone/comments.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/copy.ts b/client/theme/icons/fa/duotone/copy.ts index 06ff4daf..b1c3ea53 100644 --- a/client/theme/icons/fa/duotone/copy.ts +++ b/client/theme/icons/fa/duotone/copy.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/external-link.ts b/client/theme/icons/fa/duotone/external-link.ts index 2ad6acfe..fc55c4b5 100644 --- a/client/theme/icons/fa/duotone/external-link.ts +++ b/client/theme/icons/fa/duotone/external-link.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/folder-download.ts b/client/theme/icons/fa/duotone/folder-download.ts index c74fd60c..934cce16 100644 --- a/client/theme/icons/fa/duotone/folder-download.ts +++ b/client/theme/icons/fa/duotone/folder-download.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/folder-open.ts b/client/theme/icons/fa/duotone/folder-open.ts index 87ad564b..a5c7ba3d 100644 --- a/client/theme/icons/fa/duotone/folder-open.ts +++ b/client/theme/icons/fa/duotone/folder-open.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/folder-upload.ts b/client/theme/icons/fa/duotone/folder-upload.ts index 596ff94c..54dcc00c 100644 --- a/client/theme/icons/fa/duotone/folder-upload.ts +++ b/client/theme/icons/fa/duotone/folder-upload.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/gamepad-alt.ts b/client/theme/icons/fa/duotone/gamepad-alt.ts index fe87c45a..190fb4a8 100644 --- a/client/theme/icons/fa/duotone/gamepad-alt.ts +++ b/client/theme/icons/fa/duotone/gamepad-alt.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/gamepad.ts b/client/theme/icons/fa/duotone/gamepad.ts index 3e6f7079..d7c01d1c 100644 --- a/client/theme/icons/fa/duotone/gamepad.ts +++ b/client/theme/icons/fa/duotone/gamepad.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/joystick.ts b/client/theme/icons/fa/duotone/joystick.ts index 034b25de..aca19895 100644 --- a/client/theme/icons/fa/duotone/joystick.ts +++ b/client/theme/icons/fa/duotone/joystick.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/microchip.ts b/client/theme/icons/fa/duotone/microchip.ts index d0d4b4eb..1b222364 100644 --- a/client/theme/icons/fa/duotone/microchip.ts +++ b/client/theme/icons/fa/duotone/microchip.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/moon.ts b/client/theme/icons/fa/duotone/moon.ts index 222c71f6..41bfe04a 100644 --- a/client/theme/icons/fa/duotone/moon.ts +++ b/client/theme/icons/fa/duotone/moon.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/phone-laptop.ts b/client/theme/icons/fa/duotone/phone-laptop.ts index 451af574..6402faff 100644 --- a/client/theme/icons/fa/duotone/phone-laptop.ts +++ b/client/theme/icons/fa/duotone/phone-laptop.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/project-diagram.ts b/client/theme/icons/fa/duotone/project-diagram.ts index 45e20a14..93636b67 100644 --- a/client/theme/icons/fa/duotone/project-diagram.ts +++ b/client/theme/icons/fa/duotone/project-diagram.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/sun.ts b/client/theme/icons/fa/duotone/sun.ts index 30affca3..74f4f59f 100644 --- a/client/theme/icons/fa/duotone/sun.ts +++ b/client/theme/icons/fa/duotone/sun.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/sync.ts b/client/theme/icons/fa/duotone/sync.ts index 0264df44..d2a716a5 100644 --- a/client/theme/icons/fa/duotone/sync.ts +++ b/client/theme/icons/fa/duotone/sync.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/duotone/terminal.ts b/client/theme/icons/fa/duotone/terminal.ts index f7a10a10..c0b22cc2 100644 --- a/client/theme/icons/fa/duotone/terminal.ts +++ b/client/theme/icons/fa/duotone/terminal.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/regular/arrow-to-top.ts b/client/theme/icons/fa/regular/arrow-to-top.ts index 6d5dbdf2..da218c04 100644 --- a/client/theme/icons/fa/regular/arrow-to-top.ts +++ b/client/theme/icons/fa/regular/arrow-to-top.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/regular/bars.ts b/client/theme/icons/fa/regular/bars.ts index 954aafb3..ce3122e9 100644 --- a/client/theme/icons/fa/regular/bars.ts +++ b/client/theme/icons/fa/regular/bars.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/regular/chevron-down.ts b/client/theme/icons/fa/regular/chevron-down.ts index 041867c5..c7fd48c7 100644 --- a/client/theme/icons/fa/regular/chevron-down.ts +++ b/client/theme/icons/fa/regular/chevron-down.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/regular/cloud.ts b/client/theme/icons/fa/regular/cloud.ts index b683c99a..8698226f 100644 --- a/client/theme/icons/fa/regular/cloud.ts +++ b/client/theme/icons/fa/regular/cloud.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/regular/times.ts b/client/theme/icons/fa/regular/times.ts index 5e7a92a2..4a6bfe2b 100644 --- a/client/theme/icons/fa/regular/times.ts +++ b/client/theme/icons/fa/regular/times.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/solid/check-square.ts b/client/theme/icons/fa/solid/check-square.ts index 56186a2b..b321fa9a 100644 --- a/client/theme/icons/fa/solid/check-square.ts +++ b/client/theme/icons/fa/solid/check-square.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/solid/cloud.ts b/client/theme/icons/fa/solid/cloud.ts index 074e4439..df14b683 100644 --- a/client/theme/icons/fa/solid/cloud.ts +++ b/client/theme/icons/fa/solid/cloud.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/client/theme/icons/fa/solid/folder.ts b/client/theme/icons/fa/solid/folder.ts index 33dade4f..73d7cd76 100644 --- a/client/theme/icons/fa/solid/folder.ts +++ b/client/theme/icons/fa/solid/folder.ts @@ -1,4 +1,4 @@ import { register } from '~/theme/icons/sheet'; register( - `` + ``, ); diff --git a/scripts/aws/cdk/src/Cloudfront.ts b/scripts/aws/cdk/src/Cloudfront.ts index 38eec4ea..81fc0fc1 100644 --- a/scripts/aws/cdk/src/Cloudfront.ts +++ b/scripts/aws/cdk/src/Cloudfront.ts @@ -57,7 +57,7 @@ export class Cloudfront extends Stack { override: true, }, }, - } + }, ); const responseHeadersPolicyStatic = new cloudfront.ResponseHeadersPolicy(this, 'response-headers-policy-static', { @@ -239,7 +239,7 @@ export class Cloudfront extends Stack { headerBehavior: cloudfront.OriginRequestHeaderBehavior.all( // 'CloudFront-Viewer-Address', // 'CloudFront-Viewer-Country', - 'CloudFront-Forwarded-Proto' + 'CloudFront-Forwarded-Proto', ), queryStringBehavior: cloudfront.OriginRequestQueryStringBehavior.allowList('path'), }); diff --git a/scripts/aws/cdk/src/ECS.ts b/scripts/aws/cdk/src/ECS.ts index 0b384e24..06027672 100644 --- a/scripts/aws/cdk/src/ECS.ts +++ b/scripts/aws/cdk/src/ECS.ts @@ -27,7 +27,7 @@ export class ECS extends Stack { securityGroup.addIngressRule( ec2.Peer.ipv6('2600:1f18:14f5:1500::/56'), ec2.Port.allTraffic(), - 'Allow internal IPv6 Traffic' + 'Allow internal IPv6 Traffic', ); // ! Not needed since allowAllOutbound defaults to true diff --git a/scripts/aws/cloudfront-viewer-request/index.js b/scripts/aws/cloudfront-viewer-request/index.js index a191c588..49e56c06 100644 --- a/scripts/aws/cloudfront-viewer-request/index.js +++ b/scripts/aws/cloudfront-viewer-request/index.js @@ -140,7 +140,7 @@ function handler(event) { if (headers.host.value === 'slack.lwjgl.org') { return redirect( 301, - 'https://join.slack.com/t/lwjgl/shared_invite/enQtODI1MTY2MzE4MDk4LWE5ZjU5OTA0N2VmOWMxNDA1YjRlMTI3NzA0ZWMyYjFkYzI0NGIxMDI4ZTA0ODcxYWQ1MzI4YWRiYTFjNTMyODE' + 'https://join.slack.com/t/lwjgl/shared_invite/enQtODI1MTY2MzE4MDk4LWE5ZjU5OTA0N2VmOWMxNDA1YjRlMTI3NzA0ZWMyYjFkYzI0NGIxMDI4ZTA0ODcxYWQ1MzI4YWRiYTFjNTMyODE', ); } @@ -169,12 +169,12 @@ function handler(event) { if (request.uri.startsWith('/forum/')) { return redirect( 308, - `http://forum.lwjgl.org${request.uri.replace(/^\/forum/, '')}${formatQueryString(request.querystring)}` + `http://forum.lwjgl.org${request.uri.replace(/^\/forum/, '')}${formatQueryString(request.querystring)}`, ); } else if (request.uri.startsWith('/wiki/')) { return redirect( 308, - `http://wiki.lwjgl.org${request.uri.replace(/^\/wiki/, '')}${formatQueryString(request.querystring)}` + `http://wiki.lwjgl.org${request.uri.replace(/^\/wiki/, '')}${formatQueryString(request.querystring)}`, ); } diff --git a/scripts/build-production.mjs b/scripts/build-production.mjs index ecb80194..7e4a92c8 100644 --- a/scripts/build-production.mjs +++ b/scripts/build-production.mjs @@ -41,7 +41,7 @@ compiler.run((err, stats) => { errors: true, errorDetails: true, warnings: false, - }) + }), ); process.exit(1); } @@ -53,7 +53,7 @@ compiler.run((err, stats) => { all: false, maxModules: 0, warnings: true, - }) + }), ); } @@ -69,9 +69,9 @@ compiler.run((err, stats) => { chunkGroups: true, }), null, - 2 + 2, ), - { encoding: 'utf8' } + { encoding: 'utf8' }, ); }); }); diff --git a/scripts/build-styles.mjs b/scripts/build-styles.mjs index c186a734..2fa615ed 100644 --- a/scripts/build-styles.mjs +++ b/scripts/build-styles.mjs @@ -28,7 +28,7 @@ if (PRODUCTION) { }, }, ], - }) + }), ); } diff --git a/scripts/deploy.mjs b/scripts/deploy.mjs index ebb64955..913c125c 100644 --- a/scripts/deploy.mjs +++ b/scripts/deploy.mjs @@ -110,7 +110,7 @@ async function uploadFile(file) { // ACL: 'public-read', ContentMD5: Buffer.from(digest, 'hex').toString('base64'), ...headers, - }) + }), ); } catch (err) { console.error(`${basename}: ${err.message}`); diff --git a/scripts/icons.mjs b/scripts/icons.mjs index ddb42888..75947c17 100644 --- a/scripts/icons.mjs +++ b/scripts/icons.mjs @@ -96,7 +96,7 @@ const main = async () => { parser: 'babel', printWidth: 120, singleQuote: true, - }) + }), ); }; diff --git a/scripts/lib/computeMD5.mjs b/scripts/lib/computeMD5.mjs index 70cb61b9..63804df4 100644 --- a/scripts/lib/computeMD5.mjs +++ b/scripts/lib/computeMD5.mjs @@ -14,6 +14,6 @@ export async function computeMD5(filepath) { createReadStream(filepath, { encoding: 'utf-8', highWaterMark: 4 * 1024, - }) + }), ); } diff --git a/scripts/lib/concurrent.mjs b/scripts/lib/concurrent.mjs index 166d3704..b0483df6 100644 --- a/scripts/lib/concurrent.mjs +++ b/scripts/lib/concurrent.mjs @@ -27,7 +27,7 @@ export async function concurrentRun(concurrency, iterable, iteratorFn) { await iteratorFn(item); } resolve(); - }) + }), ); } diff --git a/scripts/post-production.mjs b/scripts/post-production.mjs index 3c262ee7..7ae2464e 100644 --- a/scripts/post-production.mjs +++ b/scripts/post-production.mjs @@ -65,7 +65,7 @@ manifest.assets throw new Error(`Unknown record type: ${record.type}`); } }, - [] + [], ) // populate chunk map .forEach(record => { diff --git a/server/index.mjs b/server/index.mjs index aaf3077c..2d57b297 100644 --- a/server/index.mjs +++ b/server/index.mjs @@ -119,7 +119,7 @@ mime.define( 'application/json; charset=utf-8': ['json'], 'application/manifest+json; charset=utf-8': ['webmanifest'], }, - true + true, ); // ------------------------------------------------------------------------------ @@ -157,7 +157,7 @@ app.register(fastifyStatic, { case 'favicon.ico': res.setHeader( 'Cache-Control', - `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600` + `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600`, ); break; case 'favicon.ico.gz': @@ -165,7 +165,7 @@ app.register(fastifyStatic, { res.setHeader('Content-Type', 'image/x-icon'); res.setHeader( 'Cache-Control', - `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600` + `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600`, ); break; case 'favicon.ico.br': @@ -173,7 +173,7 @@ app.register(fastifyStatic, { res.setHeader('Content-Type', 'image/x-icon'); res.setHeader( 'Cache-Control', - `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600` + `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600`, ); break; case 'manifest.webmanifest': @@ -182,7 +182,7 @@ app.register(fastifyStatic, { case 'sample.html': res.setHeader( 'Cache-Control', - `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600` + `public,max-age=${3600 * 24 * 7},s-maxage=${3600 * 24 * 30},stale-while-revalidate=3600`, ); break; case 'sw.js': { @@ -388,7 +388,7 @@ shutdownController.signal.addEventListener('abort', () => { console.error('Server termination timeout. Forcing shutdown...'); process.exit(1); }, - PRODUCTION ? 5000 : 1000 + PRODUCTION ? 5000 : 1000, ); // Don't require the Node.js event loop to remain active. // If there is no other activity keeping the event loop running, @@ -427,6 +427,6 @@ ${hr} Started server on: ${devUrl} ${hr} -` +`, ); }