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.
39 lines
1.7 KiB
TypeScript
39 lines
1.7 KiB
TypeScript
import { EventSource } from '@/infrastructure/Events/EventSource';
|
|
import type { IScriptingDefinition } from '@/domain/IScriptingDefinition';
|
|
import type { SelectedScript } from '@/application/Context/State/Selection/Script/SelectedScript';
|
|
import type { ReadonlyScriptSelection } from '@/application/Context/State/Selection/Script/ScriptSelection';
|
|
import { CodeChangedEvent } from './Event/CodeChangedEvent';
|
|
import { CodePosition } from './Position/CodePosition';
|
|
import { UserScriptGenerator } from './Generation/UserScriptGenerator';
|
|
import type { IUserScriptGenerator } from './Generation/IUserScriptGenerator';
|
|
import type { ICodeChangedEvent } from './Event/ICodeChangedEvent';
|
|
import type { IApplicationCode } from './IApplicationCode';
|
|
|
|
export class ApplicationCode implements IApplicationCode {
|
|
public readonly changed = new EventSource<ICodeChangedEvent>();
|
|
|
|
public current: string;
|
|
|
|
private scriptPositions = new Map<SelectedScript, CodePosition>();
|
|
|
|
constructor(
|
|
selection: ReadonlyScriptSelection,
|
|
private readonly scriptingDefinition: IScriptingDefinition,
|
|
private readonly generator: IUserScriptGenerator = new UserScriptGenerator(),
|
|
) {
|
|
this.setCode(selection.selectedScripts);
|
|
selection.changed.on((scripts) => {
|
|
this.setCode(scripts);
|
|
});
|
|
}
|
|
|
|
private setCode(scripts: ReadonlyArray<SelectedScript>): void {
|
|
const oldScripts = Array.from(this.scriptPositions.keys());
|
|
const code = this.generator.buildCode(scripts, this.scriptingDefinition);
|
|
this.current = code.code;
|
|
this.scriptPositions = code.scriptPositions;
|
|
const event = new CodeChangedEvent(code.code, oldScripts, code.scriptPositions);
|
|
this.changed.notify(event);
|
|
}
|
|
}
|