refactor(module-type-aliases): remove fallback aliases (#5726)

This commit is contained in:
Joshua Chen 2021-10-20 21:27:16 +08:00 committed by GitHub
parent 6763496dc1
commit 90098ca838
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 97 additions and 61 deletions

View file

@ -69,11 +69,41 @@ declare module '@generated/codeTranslations' {
export default codeTranslations; export default codeTranslations;
} }
declare module '@theme/*';
declare module '@theme-original/*'; declare module '@theme-original/*';
declare module '@docusaurus/*'; declare module '@theme/Layout' {
import type {ReactNode} from 'react';
export interface Props {
readonly children: ReactNode;
readonly title?: string;
readonly description?: string;
}
export default function Layout(props: Props): JSX.Element;
}
declare module '@theme/Loading' {
import type {LoadingComponentProps} from 'react-loadable';
export default function Loading(props: LoadingComponentProps): JSX.Element;
}
declare module '@theme/NotFound' {
export default function NotFound(props: any): JSX.Element;
}
declare module '@theme/Root' {
import type {ReactNode} from 'react';
export interface Props {
readonly children: ReactNode;
}
export default function Root({children}: Props): JSX.Element;
}
declare module '@docusaurus/constants' {
export const DEFAULT_PLUGIN_ID: 'default';
}
declare module '@docusaurus/Head' { declare module '@docusaurus/Head' {
import type {HelmetProps} from 'react-helmet'; import type {HelmetProps} from 'react-helmet';

View file

@ -1,2 +1 @@
src copyUntypedFiles.js
copyUntypedFiles.js

View file

@ -3,6 +3,7 @@
"version": "2.0.0-beta.7", "version": "2.0.0-beta.7",
"description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).", "description": "Docusaurus Plugin to generate an almost ideal image (responsive, lazy-loading, and low quality placeholder).",
"main": "lib/index.js", "main": "lib/index.js",
"types": "src/plugin-ideal-image.d.ts",
"scripts": { "scripts": {
"build": "tsc && node copyUntypedFiles.js", "build": "tsc && node copyUntypedFiles.js",
"watch": "node copyUntypedFiles.js && tsc --watch" "watch": "node copyUntypedFiles.js && tsc --watch"

View file

@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
*/ */
import {LoadContext, Plugin} from '@docusaurus/types'; import {LoadContext, Plugin} from '@docusaurus/types';
import {PluginOptions} from './types'; import type {PluginOptions} from '@docusaurus/plugin-ideal-image';
import {Configuration} from 'webpack'; import {Configuration} from 'webpack';
import path from 'path'; import path from 'path';

View file

@ -0,0 +1,50 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
declare module '@docusaurus/plugin-ideal-image' {
export type PluginOptions = {
/**
* Filename template for output files.
*/
name?: string;
/**
* Specify all widths you want to use; if a specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up). You may also declare a default sizes array in the loader options in your webpack.config.js.
*/
sizes?: number[];
/**
* Specify one width you want to use; if the specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up)
*/
size?: number;
/**
* As an alternative to manually specifying sizes, you can specify min, max and steps, and the sizes will be generated for you.
*/
min?: number;
/**
* See min above
*/
max?: number;
/**
* Configure the number of images generated between min and max (inclusive)
*/
steps?: number;
/**
* JPEG compression quality
*/
quality?: number;
};
}
declare module '@theme/IdealImage' {
import type {ComponentProps} from 'react';
export interface Props extends ComponentProps<'img'> {
img: any;
}
export default function IdealImage(props: Props): JSX.Element;
}
declare module '@endiliey/react-ideal-image';

View file

@ -1,37 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
export interface PluginOptions {
/**
* Filename template for output files.
*/
name?: string;
/**
* Specify all widths you want to use; if a specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up). You may also declare a default sizes array in the loader options in your webpack.config.js.
*/
sizes?: number[];
/**
* Specify one width you want to use; if the specified size exceeds the original image's width, the latter will be used (i.e. images won't be scaled up)
*/
size?: number;
/**
* As an alternative to manually specifying sizes, you can specify min, max and steps, and the sizes will be generated for you.
*/
min?: number;
/**
* See min above
*/
max?: number;
/**
* Configure the number of images generated between min and max (inclusive)
*/
steps?: number;
/**
* JPEG compression quality
*/
quality?: number;
}

View file

@ -19,6 +19,10 @@ declare module '@theme/AnnouncementBar' {
export default AnnouncementBar; export default AnnouncementBar;
} }
declare module '@theme/BackToTopButton' {
export default function BackToTopButton(): JSX.Element;
}
declare module '@theme/BlogListPaginator' { declare module '@theme/BlogListPaginator' {
import type {Metadata} from '@theme/BlogListPage'; import type {Metadata} from '@theme/BlogListPage';
@ -505,6 +509,10 @@ declare module '@theme/NavbarItem' {
export default NavbarItem; export default NavbarItem;
} }
declare module '@theme/SearchBar' {
export default function SearchBar(): JSX.Element;
}
declare module '@theme/TabItem' { declare module '@theme/TabItem' {
import type {ReactNode} from 'react'; import type {ReactNode} from 'react';

View file

@ -5,16 +5,5 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
*/ */
/* // Constants used on the client-side: duplicated from server-side code
// eslint-disable-next-line no-restricted-imports
export {
// constants were only available on node
// this makes some useful constants available to frontend/themes too
// import {DEFAULT_PLUGIN_ID} '@docusaurus/constants'
DEFAULT_PLUGIN_ID,
} from '../../constants';
*/
// Not duplicating the constants seems to produce
// weird TS compilation side-effects
export const DEFAULT_PLUGIN_ID = 'default'; export const DEFAULT_PLUGIN_ID = 'default';

View file

@ -6,12 +6,7 @@
*/ */
import useDocusaurusContext from './useDocusaurusContext'; import useDocusaurusContext from './useDocusaurusContext';
import {DEFAULT_PLUGIN_ID} from './constants';
// TODO annoying constant duplication
// if we import something from outside the /client folder,
// the tsc directory structure is affected
// import {DEFAULT_PLUGIN_ID} from '../../constants';
const DEFAULT_PLUGIN_ID = 'default';
export default function useGlobalData(): Record<string, unknown> { export default function useGlobalData(): Record<string, unknown> {
const {globalData} = useDocusaurusContext(); const {globalData} = useDocusaurusContext();

1
website/src/types.d.ts vendored Normal file
View file

@ -0,0 +1 @@
/// <reference types="@docusaurus/plugin-ideal-image" />