From 8b68504b3b95d0647b4305a43d7b326b801e1936 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Fri, 29 Dec 2023 00:02:14 -0500 Subject: Display API safety (#479) * Remove unused * Add TODOs * Rename * Initial setup * More updates * Simplify naming * Set up window API * Remove type * Move type * Update type --- types/ext/display.d.ts | 118 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 103 insertions(+), 15 deletions(-) (limited to 'types/ext') diff --git a/types/ext/display.d.ts b/types/ext/display.d.ts index bafb1fa1..f7c45b02 100644 --- a/types/ext/display.d.ts +++ b/types/ext/display.d.ts @@ -18,12 +18,19 @@ import type {DisplayContentManager} from '../../ext/js/display/display-content-manager'; import type {HotkeyHelpController} from '../../ext/js/input/hotkey-help-controller'; import type {JapaneseUtil} from '../../ext/js/language/sandbox/japanese-util'; -import type * as Core from './core'; import type * as Dictionary from './dictionary'; import type * as Extension from './extension'; import type * as Settings from './settings'; import type * as TextScannerTypes from './text-scanner'; import type {EventNames, EventArgument as BaseEventArgument} from './core'; +import type { + ApiMap as BaseApiMap, + ApiParams as BaseApiParams, + ApiNames as BaseApiNames, + ApiMapInit as BaseApiMapInit, + ApiParamsAny as BaseApiParamsAny, + ApiHandler as BaseApiHandler, +} from './api-map'; export type HistoryMode = 'clear' | 'overwrite' | 'new'; @@ -159,22 +166,103 @@ export type Events = { export type EventArgument> = BaseEventArgument; -export type ConfigureMessageDetails = { - depth: number; - parentPopupId: string; - parentFrameId: number; - childrenSupported: boolean; - scale: number; - optionsContext: Settings.OptionsContext; -}; - -export type MessageDetails = { - action: string; - params: Core.SerializableObject; -}; - export type DisplayGeneratorConstructorDetails = { japaneseUtil: JapaneseUtil; contentManager: DisplayContentManager; hotkeyHelpController?: HotkeyHelpController | null; }; + +// Direct API + +export type DirectApiSurface = { + displayAudioClearAutoPlayTimer: { + params: void; + return: void; + }; + displaySetOptionsContext: { + params: { + optionsContext: Settings.OptionsContext; + }; + return: void; + }; + displaySetContent: { + params: { + details: ContentDetails; + }; + return: void; + }; + displaySetCustomCss: { + params: { + css: string; + }; + return: void; + }; + displaySetContentScale: { + params: { + scale: number; + }; + return: void; + }; + displayConfigure: { + params: { + depth: number; + parentPopupId: string; + parentFrameId: number; + childrenSupported: boolean; + scale: number; + optionsContext: Settings.OptionsContext; + }; + return: void; + }; + displayVisibilityChanged: { + params: { + value: boolean; + }; + return: void; + }; +}; + +type DirectApiNames = BaseApiNames; + +export type DirectApiMapInit = BaseApiMapInit; + +export type DirectApiMap = BaseApiMap; + +export type DirectApiHandler = BaseApiHandler; + +type DirectApiParams = BaseApiParams; + +export type DirectApiMessageAny = {[name in DirectApiNames]: DirectApiMessage}[DirectApiNames]; + +export type DirectApiReturnAny = BaseApiParamsAny; + +type DirectApiMessage = { + action: TName; + params: DirectApiParams; +}; + +// Window API + +export type WindowApiSurface = { + 'displayExtensionUnloaded': { + params: void; + return: void; + }; +}; + +type WindowApiNames = BaseApiNames; + +export type WindowApiMapInit = BaseApiMapInit; + +export type WindowApiMap = BaseApiMap; + +export type WindowApiHandler = BaseApiHandler; + +type WindowApiParams = BaseApiParams; + +export type WindowApiMessageAny = {[name in WindowApiNames]: WindowApiMessage}[WindowApiNames]; + +type WindowApiMessage = { + action: TName; + params: WindowApiParams; +}; -- cgit v1.2.3