Skip to content

Commit bc2153a

Browse files
🤖 Merge PR DefinitelyTyped#72950 [dom-chromium-ai] add types for Proofreader API by @christianliebel
1 parent bf55054 commit bc2153a

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

‎types/dom-chromium-ai/dom-chromium-ai-tests.ts‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,4 +410,45 @@ async function topLevel() {
410410
console.log(languageDetectorResult.confidence);
411411

412412
languageDetector.destroy();
413+
414+
// Proofreader
415+
416+
const proofreader = await Proofreader.create({
417+
includeCorrectionTypes: true,
418+
includeCorrectionExplanations: true,
419+
correctionExplanationLanguage: "de",
420+
expectedInputLanguages: ["de"],
421+
signal: (new AbortController()).signal,
422+
monitor(m: CreateMonitor) {
423+
m.addEventListener("downloadprogress", (e) => {
424+
console.log(e.loaded, e.total);
425+
});
426+
},
427+
});
428+
429+
const proofreaderAvailability1: Availability = await Proofreader.availability();
430+
console.log(proofreaderAvailability1);
431+
432+
const proofreaderAvailability2: Availability = await Proofreader.availability({
433+
expectedInputLanguages: ["de"],
434+
});
435+
console.log(proofreaderAvailability2);
436+
437+
const proofreaderResult: ProofreadResult = await proofreader.proofread("foo");
438+
console.log(proofreaderResult);
439+
440+
// for await (
441+
// const chunk of proofreader.proofreadStreaming("foo")
442+
// ) {
443+
// console.log(chunk);
444+
// }
445+
446+
console.log(
447+
proofreader.expectedInputLanguages,
448+
proofreader.correctionExplanationLanguage,
449+
proofreader.includeCorrectionExplanations,
450+
proofreader.includeCorrectionTypes,
451+
);
452+
453+
proofreader.destroy();
413454
}

‎types/dom-chromium-ai/index.d.ts‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,3 +389,48 @@ interface LanguageDetectionResult {
389389
detectedLanguage?: string;
390390
confidence?: number;
391391
}
392+
393+
// Proofreader API
394+
// https://github.com/webmachinelearning/proofreader-api?tab=readme-ov-file#full-api-surface-in-web-idl
395+
396+
declare abstract class Proofreader implements DestroyableModel {
397+
static create(options?: ProofreaderCreateOptions): Promise<Proofreader>;
398+
static availability(options?: ProofreaderCreateCoreOptions): Promise<Availability>;
399+
400+
proofread(input: string): Promise<ProofreadResult>;
401+
// proofreadStreaming(input: string): ReadableStream<unknown>;
402+
403+
readonly includeCorrectionTypes: boolean;
404+
readonly includeCorrectionExplanations: boolean;
405+
readonly correctionExplanationLanguage?: string;
406+
readonly expectedInputLanguages: ReadonlyArray<string>;
407+
408+
destroy(): void;
409+
}
410+
411+
interface ProofreaderCreateCoreOptions {
412+
includeCorrectionTypes?: boolean;
413+
includeCorrectionExplanations?: boolean;
414+
correctionExplanationLanguage?: string;
415+
expectedInputLanguages?: string[];
416+
}
417+
418+
interface ProofreaderCreateOptions extends ProofreaderCreateCoreOptions {
419+
signal?: AbortSignal;
420+
monitor?: CreateMonitorCallback;
421+
}
422+
423+
interface ProofreadResult {
424+
correctedInput: string;
425+
corrections: ProofreadCorrection[];
426+
}
427+
428+
interface ProofreadCorrection {
429+
startIndex: number;
430+
endIndex: number;
431+
correction: string;
432+
type?: CorrectionType;
433+
explanation?: string;
434+
}
435+
436+
type CorrectionType = "spelling" | "punctuation" | "capitalization" | "preposition" | "missing-words" | "grammar";

0 commit comments

Comments
 (0)