import {AbsModule} from 'scriptable-abstract'; interface ModuleState { filename: string; exports: Record; } /** * Mock implementation of Scriptable's module global variable * Provides functionality for module-related operations * * @implements Module */ export class MockModule extends AbsModule { static get instance(): MockModule { return super.instance as MockModule; } constructor() { super({ filename: 'mock-module.js', exports: {}, }); } /** * @inheritdoc */ get filename(): string { return this.state.filename; } /** * @inheritdoc */ get exports(): Record { return this.state.exports; } /** * @additional * Set the module filename */ setFilename(filename: string): void { this.setState({ ...this.state, filename, }); } /** * @additional * Set module exports */ setExports(exports: Record): void { this.setState({ ...this.state, exports, }); } }