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.
52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import type { ICategoryCollection } from '@/domain/ICategoryCollection';
|
|
import { OperatingSystem } from '@/domain/OperatingSystem';
|
|
import { AdaptiveFilterContext } from './Filter/AdaptiveFilterContext';
|
|
import { ApplicationCode } from './Code/ApplicationCode';
|
|
import { UserSelectionFacade } from './Selection/UserSelectionFacade';
|
|
import type { FilterContext } from './Filter/FilterContext';
|
|
import type { UserSelection } from './Selection/UserSelection';
|
|
import type { ICategoryCollectionState } from './ICategoryCollectionState';
|
|
import type { IApplicationCode } from './Code/IApplicationCode';
|
|
|
|
export class CategoryCollectionState implements ICategoryCollectionState {
|
|
public readonly os: OperatingSystem;
|
|
|
|
public readonly code: IApplicationCode;
|
|
|
|
public readonly selection: UserSelection;
|
|
|
|
public readonly filter: FilterContext;
|
|
|
|
public constructor(
|
|
public readonly collection: ICategoryCollection,
|
|
selectionFactory = DefaultSelectionFactory,
|
|
codeFactory = DefaultCodeFactory,
|
|
filterFactory = DefaultFilterFactory,
|
|
) {
|
|
this.selection = selectionFactory(collection, []);
|
|
this.code = codeFactory(this.selection.scripts, collection.scripting);
|
|
this.filter = filterFactory(collection);
|
|
this.os = collection.os;
|
|
}
|
|
}
|
|
|
|
export type CodeFactory = (
|
|
...params: ConstructorParameters<typeof ApplicationCode>
|
|
) => IApplicationCode;
|
|
|
|
const DefaultCodeFactory: CodeFactory = (...params) => new ApplicationCode(...params);
|
|
|
|
export type SelectionFactory = (
|
|
...params: ConstructorParameters<typeof UserSelectionFacade>
|
|
) => UserSelection;
|
|
|
|
const DefaultSelectionFactory: SelectionFactory = (
|
|
...params
|
|
) => new UserSelectionFacade(...params);
|
|
|
|
export type FilterFactory = (
|
|
...params: ConstructorParameters<typeof AdaptiveFilterContext>
|
|
) => FilterContext;
|
|
|
|
const DefaultFilterFactory: FilterFactory = (...params) => new AdaptiveFilterContext(...params);
|