Bump TypeScript to 5.3 with verbatimModuleSyntax

This commit upgrades TypeScript to the latest version 5.3 and introduces
`verbatimModuleSyntax` in line with the official Vue guide
recommendatinos (vuejs/docs#2592).

By enforcing `import type` for type-only imports, this commit improves
code clarity and supports tooling optimization, ensuring imports are
only bundled when necessary for runtime.

Changes:

- Bump TypeScript to 5.3.3 across the project.
- Adjust import statements to utilize `import type` where applicable,
  promoting cleaner and more efficient code.
This commit is contained in:
undergroundwires
2024-02-27 04:20:22 +01:00
parent 98845e6cae
commit a721e82a4f
541 changed files with 1187 additions and 1184 deletions

View File

@@ -1,5 +1,5 @@
import { PlatformTimer } from '@/application/Common/Timing/PlatformTimer';
import { Timer } from '@/application/Common/Timing/Timer';
import type { Timer } from '@/application/Common/Timing/Timer';
export type AnimationFunction = (element: Element) => Promise<void>;

View File

@@ -15,9 +15,9 @@
</template>
<script lang="ts">
import { defineComponent, PropType } from 'vue';
import { defineComponent, type PropType } from 'vue';
import { NonCollapsing } from '@/presentation/components/Scripts/View/Cards/NonCollapsingDirective';
import { IconName } from '@/presentation/components/Shared/Icon/IconName';
import type { IconName } from '@/presentation/components/Shared/Icon/IconName';
import AppIcon from '@/presentation/components/Shared/Icon/AppIcon.vue';
export default defineComponent({

View File

@@ -1,4 +1,4 @@
import { Clipboard } from './Clipboard';
import type { Clipboard } from './Clipboard';
export type NavigatorClipboard = typeof globalThis.navigator.clipboard;

View File

@@ -1,6 +1,6 @@
import { FunctionKeys } from '@/TypeHelpers';
import type { FunctionKeys } from '@/TypeHelpers';
import { BrowserClipboard } from './BrowserClipboard';
import { Clipboard } from './Clipboard';
import type { Clipboard } from './Clipboard';
export function useClipboard(clipboard: Clipboard = new BrowserClipboard()) {
// Bind functions for direct use from destructured assignments such as `const { .. } = ...`.

View File

@@ -1,5 +1,5 @@
import { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
import { Dialog } from '@/presentation/common/Dialog';
import type { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
import type { Dialog } from '@/presentation/common/Dialog';
import { BrowserDialog } from '@/infrastructure/Dialog/Browser/BrowserDialog';
import { decorateWithLogging } from '@/infrastructure/Dialog/LoggingDialogDecorator';
import { ClientLoggerFactory } from '../Log/ClientLoggerFactory';

View File

@@ -1,4 +1,4 @@
import { Dialog } from '@/presentation/common/Dialog';
import type { Dialog } from '@/presentation/common/Dialog';
import { CurrentEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironmentFactory';
import { createEnvironmentSpecificLoggedDialog } from './ClientDialogFactory';

View File

@@ -1,10 +1,10 @@
import { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
import type { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
import { ConsoleLogger } from '@/infrastructure/Log/ConsoleLogger';
import { Logger } from '@/application/Common/Log/Logger';
import type { Logger } from '@/application/Common/Log/Logger';
import { NoopLogger } from '@/infrastructure/Log/NoopLogger';
import { WindowInjectedLogger } from '@/infrastructure/Log/WindowInjectedLogger';
import { CurrentEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironmentFactory';
import { LoggerFactory } from './LoggerFactory';
import type { LoggerFactory } from './LoggerFactory';
export class ClientLoggerFactory implements LoggerFactory {
public static readonly Current: LoggerFactory = new ClientLoggerFactory();

View File

@@ -1,4 +1,4 @@
import { Logger } from '@/application/Common/Log/Logger';
import type { Logger } from '@/application/Common/Log/Logger';
export interface LoggerFactory {
readonly logger: Logger;

View File

@@ -1,5 +1,5 @@
import { ClientLoggerFactory } from './ClientLoggerFactory';
import { LoggerFactory } from './LoggerFactory';
import type { LoggerFactory } from './LoggerFactory';
export function useLogger(factory: LoggerFactory = ClientLoggerFactory.Current) {
return {

View File

@@ -1,4 +1,4 @@
import { IApplication } from '@/domain/IApplication';
import type { IApplication } from '@/domain/IApplication';
export function useApplication(application: IApplication) {
return {

View File

@@ -1,6 +1,6 @@
import { onUnmounted } from 'vue';
import { EventSubscriptionCollection } from '@/infrastructure/Events/EventSubscriptionCollection';
import { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
import type { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
export function useAutoUnsubscribedEvents(
events: IEventSubscriptionCollection = new EventSubscriptionCollection(),

View File

@@ -1,4 +1,4 @@
import { WindowVariables } from '@/infrastructure/WindowVariables/WindowVariables';
import type { WindowVariables } from '@/infrastructure/WindowVariables/WindowVariables';
export function useCodeRunner(
window: WindowVariables = globalThis.window,

View File

@@ -1,7 +1,7 @@
import { shallowRef, shallowReadonly } from 'vue';
import { IApplicationContext, IReadOnlyApplicationContext } from '@/application/Context/IApplicationContext';
import { ICategoryCollectionState, IReadOnlyCategoryCollectionState } from '@/application/Context/State/ICategoryCollectionState';
import { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
import type { IApplicationContext, IReadOnlyApplicationContext } from '@/application/Context/IApplicationContext';
import type { ICategoryCollectionState, IReadOnlyCategoryCollectionState } from '@/application/Context/State/ICategoryCollectionState';
import type { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
export function useCollectionState(
context: IApplicationContext,

View File

@@ -1,6 +1,6 @@
import { ref } from 'vue';
import { IApplicationCode } from '@/application/Context/State/Code/IApplicationCode';
import { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
import type { IApplicationCode } from '@/application/Context/State/Code/IApplicationCode';
import type { IEventSubscriptionCollection } from '@/infrastructure/Events/IEventSubscriptionCollection';
import { useCollectionState } from './UseCollectionState';
export function useCurrentCode(

View File

@@ -1,4 +1,4 @@
import { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
import type { RuntimeEnvironment } from '@/infrastructure/RuntimeEnvironment/RuntimeEnvironment';
export function useRuntimeEnvironment(environment: RuntimeEnvironment) {
return environment;

View File

@@ -1,4 +1,4 @@
import { WindowVariables } from '@/infrastructure/WindowVariables/WindowVariables';
import type { WindowVariables } from '@/infrastructure/WindowVariables/WindowVariables';
export function useScriptDiagnosticsCollector(
window: Partial<WindowVariables> = globalThis.window,

View File

@@ -11,11 +11,11 @@
<script lang="ts">
import {
defineComponent,
PropType,
type PropType,
inject,
} from 'vue';
import { useSvgLoader } from './UseSvgLoader';
import { IconName } from './IconName';
import type { IconName } from './IconName';
export default defineComponent({
props: {

View File

@@ -1,8 +1,8 @@
import {
WatchSource, shallowReadonly, ref, watch,
type WatchSource, shallowReadonly, ref, watch,
} from 'vue';
import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy';
import { IconName } from './IconName';
import type { IconName } from './IconName';
export function useSvgLoader(
iconWatcher: WatchSource<IconName>,

View File

@@ -1,6 +1,6 @@
import { Ref, onBeforeUnmount, watch } from 'vue';
import { type Ref, onBeforeUnmount, watch } from 'vue';
import { getWindowDomState } from './WindowScrollDomStateAccessor';
import { ScrollDomStateAccessor } from './ScrollDomStateAccessor';
import type { ScrollDomStateAccessor } from './ScrollDomStateAccessor';
export function useLockBodyBackgroundScroll(
isActive: Ref<boolean>,

View File

@@ -1,4 +1,4 @@
import { ScrollDomStateAccessor } from './ScrollDomStateAccessor';
import type { ScrollDomStateAccessor } from './ScrollDomStateAccessor';
const HtmlElement = document.documentElement;
const BodyElement = document.body;

View File

@@ -1,4 +1,4 @@
import { Ref, computed, watch } from 'vue';
import { type Ref, computed, watch } from 'vue';
/**
* This function monitors a set of conditions (represented as refs) and

View File

@@ -1,4 +1,4 @@
import { Ref, watchEffect } from 'vue';
import { type Ref, watchEffect } from 'vue';
/**
* Manages focus transitions, ensuring good usability and accessibility.

View File

@@ -31,7 +31,7 @@
<script lang="ts">
import {
useFloating, arrow, shift, flip, Placement, offset, Side, Coords, autoUpdate,
useFloating, arrow, shift, flip, type Placement, offset, type Side, type Coords, autoUpdate,
} from '@floating-ui/vue';
import { defineComponent, shallowRef, computed } from 'vue';
import { useResizeObserverPolyfill } from '@/presentation/components/Shared/Hooks/UseResizeObserverPolyfill';