From cea788b1a72b96546ce0bf9cf65a5b2dca33f85d Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Sun, 20 Aug 2023 18:59:10 +0200 Subject: [PATCH] Fix type of settings if nothing is registered yet --- index.d.ts | 8 ++++++-- index.test-d.ts | 13 +++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/index.d.ts b/index.d.ts index 45d03891..247e3112 100644 --- a/index.d.ts +++ b/index.d.ts @@ -22,6 +22,9 @@ export type { export {unified} from './lib/index.js' +// See: +declare const emptyObjectSymbol: unique symbol + /** * Interface of known results from compilers. * @@ -98,5 +101,6 @@ export interface Data { * export {} // You may not need this, but it makes sure the file is a module. * ``` */ -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface Settings {} +export interface Settings { + [emptyObjectSymbol]?: never +} diff --git a/index.test-d.ts b/index.test-d.ts index d92e1483..36ecbfab 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -464,10 +464,6 @@ declare module './index.js' { interface CompileResultMap { ReactNode: ReactNode } - - interface Data { - something?: string | undefined - } } // Compile plugin (to a non-node). @@ -552,6 +548,15 @@ expectType( }) ) +/** + * Register our setting. + */ +declare module './index.js' { + interface Settings { + something?: string | undefined + } +} + expectType( unified().use({ plugins: [