interface Runtime {
    _blockInfo: ExtensionInfo[];
    _cloneCounter: number;
    _editingTarget: null | RenderedTarget;
    _hats: Record<string, HatInfo>;
    _primitives: Record<string, Function>;
    _steppingInterval: null | number;
    audioEngine: AudioEngine;
    compatibilityMode: boolean;
    currentMSecs: number;
    currentStepTime: null | number;
    executableTargets: RenderedTarget[];
    flyoutBlocks: Blocks;
    ioDevices: IODevices;
    monitorBlocks: Blocks;
    origin: null | string;
    profiler: null | Profiler;
    redrawRequested: boolean;
    renderer: RenderWebGL;
    sequencer: Sequencer;
    storage: GUIScratchStorage;
    targets: RenderedTarget[];
    threads: Thread[];
    turboMode: boolean;
    v2BitmapAdapter?: BitmapAdapter;
    _getMonitorThreadCount(threads: Thread[]): number;
    _pushThread(
        topBlockId: string,
        target: RenderedTarget,
        options?: { stackClick?: boolean; updateMonitor?: boolean },
    ): Thread;
    _restartThread(thread: Thread): void;
    _step(): void;
    _stopThread(thread: Thread): void;
    addCloudVariable(): void;
    addTarget(target: RenderedTarget): void;
    allScriptsByOpcodeDo(
        opcode: string,
        callback: (script: RuntimeScriptCache, target: RenderedTarget) => void,
        target?: RenderedTarget,
    ): void;
    allScriptsDo(
        callback: (blockId: string, target: RenderedTarget) => void,
        target?: RenderedTarget,
    ): void;
    attachAudioEngine(audioEngine: AudioEngine): void;
    attachRenderer(renderer: RenderWebGL): void;
    attachStorage(storage: ScratchStorage): void;
    attachV2BitmapAdapter(bitmapAdapter: BitmapAdapter): void;
    canAddCloudVariable(): boolean;
    changeCloneCounter(changeAmount: number): void;
    clonesAvailable(): boolean;
    connectPeripheral(extensionID: string, peripheralId: number): void;
    createNewGlobalVariable(variableName: string): ScalarVariable;
    createNewGlobalVariable(
        variableName: string,
        variableId: string,
    ): ScalarVariable;
    createNewGlobalVariable(
        variableName: string,
        variableId: string,
        type: "",
    ): ScalarVariable;
    createNewGlobalVariable(
        variableName: string,
        variableId: string,
        type: "list",
    ): ListVariable;
    createNewGlobalVariable(
        variableName: string,
        variableId: string,
        type: "broadcast_msg",
    ): BroadcastVariable;
    disableProfiling(): void;
    disconnectPeripheral(extensionID: string): void;
    dispose(): void;
    disposeTarget(target: RenderedTarget): void;
    emit<K extends keyof RuntimeEventMap>(
        event: K,
        ...args: EventEmitterArgs<RuntimeEventMap, K>,
    ): void;
    emitProjectChanged(): void;
    emitProjectLoaded(): void;
    enableProfiling(callback: (profilerFrame: ProfilerFrame) => void): void;
    fireTargetWasCreated(
        newTarget: RenderedTarget,
        oldTarget?: RenderedTarget,
    ): void;
    fireTargetWasRemoved(target: RenderedTarget): void;
    getAllVarNamesOfType(variableType: VM.VariableType): string[];
    getBlocksXML(target?: RenderedTarget): { id: string; xml: string }[];
    getEditingTarget(): null | RenderedTarget;
    getIsEdgeActivatedHat(opcode: string): boolean;
    getIsHat(opcode: string): boolean;
    getLabelForOpcode(
        opcode: string,
    ): undefined | { category: "extension"; label: string };
    getNumberOfCloudVariables(): number;
    getOpcodeFunction(opcode: string): Function;
    getPeripheralIsConnected(extensionID: string): boolean;
    getSpriteTargetByName(spriteName: string): undefined | RenderedTarget;
    getTargetByDrawableId(drawableID: number): undefined | RenderedTarget;
    getTargetById(targetId: string): undefined | RenderedTarget;
    getTargetForStage(): undefined | RenderedTarget;
    greenFlag(): void;
    hasCloudData(): boolean;
    isActiveThread(thread: Thread): boolean;
    isWaitingThread(thread: Thread): boolean;
    listeners<K extends keyof RuntimeEventMap>(
        event: K,
    ): EventEmitterCallback<RuntimeEventMap, K>[];
    moveExecutable(target: RenderedTarget, delta: number): void;
    off<K extends keyof RuntimeEventMap>(
        event: K,
        callback: EventEmitterCallback<RuntimeEventMap, K>,
    ): void;
    on<K extends keyof RuntimeEventMap>(
        event: K,
        callback: EventEmitterCallback<RuntimeEventMap, K>,
    ): void;
    once<K extends keyof RuntimeEventMap>(
        event: K,
        callback: EventEmitterCallback<RuntimeEventMap, K>,
    ): void;
    quit(): void;
    removeCloudVariable(): void;
    removeExecutable(target: RenderedTarget): void;
    removeListener<K extends keyof RuntimeEventMap>(
        event: K,
        callback: EventEmitterCallback<RuntimeEventMap, K>,
    ): void;
    requestBlocksUpdate(): void;
    requestRedraw(): void;
    requestTargetsUpdate(target: RenderedTarget): void;
    requestToolboxExtensionsUpdate(): void;
    scanForPeripheral(extensionID: string): void;
    setEditingTarget(target: RenderedTarget): void;
    setExecutablePosition(target: RenderedTarget, newIndex: number): void;
    start(): void;
    startHats(
        opcode: string,
        matchFields?: Record<string, unknown>,
        target?: RenderedTarget,
    ): Thread[];
    stopAll(): void;
    stopForTarget(target: RenderedTarget): void;
    toggleScript(
        topBlockId: string,
        options?: { stackClick?: boolean; target?: string },
    ): void;
    updateCurrentMSecs(): void;
    visualReport(blockId: string, value: any): void;
}

Hierarchy (View Summary)

Properties

_blockInfo: ExtensionInfo[]
_cloneCounter: number
_editingTarget: null | RenderedTarget
_hats: Record<string, HatInfo>
_primitives: Record<string, Function>
_steppingInterval: null | number

Interval ID returned by setInterval(). null if accessed before the project has started.

audioEngine: AudioEngine
compatibilityMode: boolean

If true, the runtime is running at 60 FPS. If false, the runtime is running at 30 FPS.

currentMSecs: number
currentStepTime: null | number

The time of a step, measured in milliseconds. null if accessed before the project has started.

executableTargets: RenderedTarget[]
flyoutBlocks: Blocks
ioDevices: IODevices
monitorBlocks: Blocks
origin: null | string
profiler: null | Profiler
redrawRequested: boolean
renderer: RenderWebGL
sequencer: Sequencer
targets: RenderedTarget[]
threads: Thread[]
turboMode: boolean
v2BitmapAdapter?: BitmapAdapter

Methods

  • Parameters

    • topBlockId: string
    • target: RenderedTarget
    • Optionaloptions: { stackClick?: boolean; updateMonitor?: boolean }

    Returns Thread

  • Increment the value of the runtime's cloud variable counter. Check the value before you call this method; it will let the counter go above the limit. This method does not actually create a new cloud variable.

    Returns void

  • Returns true if the runtime's cloud variable counter is under the limit.

    Returns boolean

  • Parameters

    • changeAmount: number

    Returns void

  • Parameters

    • extensionID: string
    • peripheralId: number

    Returns void

  • Parameters

    • extensionID: string

    Returns void

  • Parameters

    • opcode: string

    Returns boolean

  • Parameters

    • opcode: string

    Returns boolean

  • Parameters

    • opcode: string

    Returns undefined | { category: "extension"; label: string }

  • Returns the value of the runtime's cloud variable counter.

    Returns number

  • Parameters

    • opcode: string

    Returns Function

  • Parameters

    • extensionID: string

    Returns boolean

  • Find a sprite's original target (not a clone or stage) using the sprite's name. Returns undefined if the target doesn't exist.

    Parameters

    • spriteName: string

    Returns undefined | RenderedTarget

  • Look up a target by it's drawable ID. Returns undefined if the target doesn't exist.

    Parameters

    • drawableID: number

    Returns undefined | RenderedTarget

  • Returns the target that is the stage. Returns undefined if called before the project has loaded or if the stage has somehow been removed.

    Returns undefined | RenderedTarget

  • Start "when green flag pressed" scripts.

    Returns void

  • Returns true if the runtime's cloud variable counter is non-zero.

    Returns boolean

  • A thread is considered active if it is in the thread list and is not STATUS_DONE.

    Parameters

    Returns boolean

  • A thread is considered waiting if:

    • It is in STATUS_PROMISE_WAIT, or
    • It is in STATUS_YIELD_TICK, or
    • It is not considered active

    Parameters

    Returns boolean

  • Decrement the value of the runtime's cloud variable counter. Check the value before you call this method; it will let the counter go under 0. This method does not actually remove a cloud variable.

    Returns void

  • Parameters

    • extensionID: string

    Returns void

  • Start the runtime's event loop. This doesn't start any scripts.

    Returns void

  • Parameters

    • topBlockId: string
    • Optionaloptions: { stackClick?: boolean; target?: string }

    Returns void

  • Parameters

    • blockId: string
    • value: any

    Returns void