refactor(core): consolidate services and remove runtime wrappers

This commit is contained in:
kyasuda
2026-02-10 13:13:47 -08:00
committed by sudacode
parent b5e5d7c510
commit 9d6b2f840c
62 changed files with 954 additions and 1858 deletions

View File

@@ -1,6 +1,54 @@
import test from "node:test";
import assert from "node:assert/strict";
import { createNumericShortcutSessionService } from "./numeric-shortcut-session-service";
import {
createNumericShortcutRuntimeService,
createNumericShortcutSessionService,
} from "./numeric-shortcut-service";
test("createNumericShortcutRuntimeService creates sessions wired to globalShortcut", () => {
const registered: string[] = [];
const unregistered: string[] = [];
const osd: string[] = [];
const handlers = new Map<string, () => void>();
const runtime = createNumericShortcutRuntimeService({
globalShortcut: {
register: (accelerator, callback) => {
registered.push(accelerator);
handlers.set(accelerator, callback);
return true;
},
unregister: (accelerator) => {
unregistered.push(accelerator);
handlers.delete(accelerator);
},
},
showMpvOsd: (text) => {
osd.push(text);
},
setTimer: () => setTimeout(() => {}, 1000),
clearTimer: (timer) => clearTimeout(timer),
});
const session = runtime.createSession();
session.start({
timeoutMs: 5000,
onDigit: () => {},
messages: {
prompt: "Select count",
timeout: "Timed out",
},
});
assert.equal(session.isActive(), true);
assert.ok(registered.includes("1"));
assert.ok(registered.includes("Escape"));
assert.equal(osd[0], "Select count");
handlers.get("Escape")?.();
assert.equal(session.isActive(), false);
assert.ok(unregistered.includes("Escape"));
});
test("numeric shortcut session handles digit selection and unregisters shortcuts", () => {
const handlers = new Map<string, () => void>();