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.
22 lines
835 B
TypeScript
22 lines
835 B
TypeScript
import type { IApplication } from '@/domain/IApplication';
|
|
import { AsyncLazy } from '@/infrastructure/Threading/AsyncLazy';
|
|
import { parseApplication } from './Parser/ApplicationParser';
|
|
import type { IApplicationFactory } from './IApplicationFactory';
|
|
|
|
export type ApplicationGetterType = () => IApplication;
|
|
const ApplicationGetter: ApplicationGetterType = parseApplication;
|
|
|
|
export class ApplicationFactory implements IApplicationFactory {
|
|
public static readonly Current: IApplicationFactory = new ApplicationFactory(ApplicationGetter);
|
|
|
|
private readonly getter: AsyncLazy<IApplication>;
|
|
|
|
protected constructor(costlyGetter: ApplicationGetterType) {
|
|
this.getter = new AsyncLazy<IApplication>(() => Promise.resolve(costlyGetter()));
|
|
}
|
|
|
|
public getApp(): Promise<IApplication> {
|
|
return this.getter.getValue();
|
|
}
|
|
}
|