-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add zod types for extension messages; clean up other zod types
- Loading branch information
Showing
13 changed files
with
115 additions
and
115 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,87 +1,87 @@ | ||
import { TatoebaSentence } from "./tatoeba-types"; | ||
import { z } from "zod"; | ||
|
||
export enum RuntimeEvent { | ||
CountKanji = 'count-kanji', | ||
CountSentences = 'count-sentences', | ||
LookupKanji = 'lookup-kanji', | ||
LookupSentences = 'lookup-sentences', | ||
LookupWords = 'lookup-words', | ||
MetadataDetected = 'metadata-detected', | ||
PlayAudio = 'play-audio', | ||
PurgeDictionaries = 'purge-dictionaries', | ||
SubtitleTrackSwitched = 'subtitle-track-switched', | ||
SeekCue = 'seek-cue', | ||
SeekTime = 'seek-time', | ||
ToggleSubs = 'toggle-subs', | ||
OpenOptions = 'open-options', | ||
} | ||
export const RuntimeEvent = z.enum([ | ||
"CountKanji", | ||
"CountSentences", | ||
"LookupKanji", | ||
"LookupSentences", | ||
"LookupWords", | ||
"MetadataDetected", | ||
"PlayAudio", | ||
"PurgeDictionaries", | ||
"SubtitleTrackSwitched", | ||
"SeekCue", | ||
"SeekTime", | ||
"ToggleSubs", | ||
"OpenOptions" | ||
] as const); | ||
|
||
export interface RuntimeMessage { | ||
export const RuntimeMessage = z.object({ | ||
event: RuntimeEvent, | ||
data: unknown | ||
} | ||
data: z.any() | ||
}) | ||
|
||
export enum SeekDirection { | ||
Next, | ||
Repeat, | ||
Previous, | ||
} | ||
export const SeekDirection = z.enum([ | ||
"Next", | ||
"Repeat", | ||
"Previous", | ||
] as const) | ||
|
||
export interface SeekCueMessage { | ||
export const SeekCueMessage = z.object({ | ||
direction: SeekDirection | ||
} | ||
}) | ||
|
||
export interface SeekTimeMessage { | ||
startTime: number | ||
} | ||
export const SeekTimeMessage = z.object({ | ||
startTime: z.number(), | ||
}); | ||
|
||
export interface LookupWordsMessage { | ||
words: { | ||
surfaceForm: string; | ||
baseForm: string; | ||
katakana: string; | ||
hiragana: string; | ||
}[]; | ||
} | ||
export const LookupWordsMessage = z.object({ | ||
words: z.array(z.object({ | ||
surfaceForm: z.string(), | ||
baseForm: z.string(), | ||
katakana: z.string(), | ||
hiragana: z.string(), | ||
})) | ||
}) | ||
|
||
export interface Success<T> { | ||
type: 'success'; | ||
data: T; | ||
} | ||
export const CountKanjiMessage = z.object({ | ||
kanji: z.array(z.string()) | ||
}) | ||
|
||
export interface Error<S> { | ||
type: 'error'; | ||
data: S; | ||
message: string; | ||
} | ||
export const CountSentencesMessage = z.object({ | ||
searchTerm: z.string() | ||
}) | ||
|
||
export interface MessageResponse<T, S> { | ||
result: Success<T> | Error<S> | ||
} | ||
export const LookupSentencesMessage = z.object({ | ||
searchTerm: z.string(), | ||
page: z.number(), | ||
perPage: z.number(), | ||
}) | ||
|
||
export interface CountKanjiMessage { | ||
kanji: string[]; | ||
} | ||
const Sentence: z.ZodType<TatoebaSentence> = z.any(); // todo: better validation for this type | ||
export const LookupSentencesResult = z.object({ | ||
sentences: z.array(Sentence), | ||
pages: z.number(), | ||
}) | ||
|
||
export interface CountSentencesMessage { | ||
searchTerm: string; | ||
} | ||
export const LookupKanjiMessage = z.object({ | ||
kanji: z.array(z.string()) | ||
}) | ||
|
||
export interface LookupSentencesMessage { | ||
searchTerm: string; | ||
page: number; | ||
perPage: number; | ||
} | ||
export const PlayAudioMessage = z.object({ | ||
utterance: z.string() | ||
}) | ||
|
||
export interface LookupSentencesResult { | ||
sentences: TatoebaSentence[]; | ||
pages: number; | ||
} | ||
|
||
export interface LookupKanjiMessage { | ||
kanji: string[]; | ||
} | ||
|
||
export interface PlayAudioMessage { | ||
utterance: string; | ||
} | ||
export type RuntimeEvent = z.infer<typeof RuntimeEvent>; | ||
export type RuntimeMessage = z.infer<typeof RuntimeMessage>; | ||
export type SeekDirection = z.infer<typeof SeekDirection>; | ||
export type SeekCueMessage = z.infer<typeof SeekCueMessage>; | ||
export type SeekTimeMessage = z.infer<typeof SeekTimeMessage>; | ||
export type LookupWordsMessage = z.infer<typeof LookupWordsMessage>; | ||
export type CountKanjiMessage = z.infer<typeof CountKanjiMessage>; | ||
export type CountSentencesMessage = z.infer<typeof CountSentencesMessage>; | ||
export type LookupSentencesMessage = z.infer<typeof LookupSentencesMessage>; | ||
export type LookupSentencesResult = z.infer<typeof LookupSentencesResult>; | ||
export type LookupKanjiMessage = z.infer<typeof LookupKanjiMessage>; | ||
export type PlayAudioMessage = z.infer<typeof PlayAudioMessage>; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.