refactor(v2): correct some of type errors reported by eslint (#4382)

* fix: correct some of type errors reported by eslint

* fix: remove unnecessary import
This commit is contained in:
Armano 2021-03-12 12:24:22 +01:00 committed by GitHub
parent a39c62f644
commit bfe52cdae3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 32 additions and 21 deletions

View file

@ -20,7 +20,7 @@ export type RedirectFileMetadata = {
fileContent: string; fileContent: string;
}; };
export function createToUrl(baseUrl: string, to: string) { export function createToUrl(baseUrl: string, to: string): string {
return normalizeUrl([baseUrl, to]); return normalizeUrl([baseUrl, to]);
} }

View file

@ -18,8 +18,10 @@ import {
getActiveVersion, getActiveVersion,
getActiveDocContext, getActiveDocContext,
getDocVersionSuggestions, getDocVersionSuggestions,
GetActivePluginOptions,
ActivePlugin, ActivePlugin,
ActiveDocContext,
DocVersionSuggestions,
GetActivePluginOptions,
} from '../../client/docsClientUtils'; } from '../../client/docsClientUtils';
export const useAllDocsData = (): Record<string, GlobalPluginData> => export const useAllDocsData = (): Record<string, GlobalPluginData> =>
@ -28,7 +30,9 @@ export const useAllDocsData = (): Record<string, GlobalPluginData> =>
export const useDocsData = (pluginId: string | undefined) => export const useDocsData = (pluginId: string | undefined) =>
usePluginData('docusaurus-plugin-content-docs', pluginId) as GlobalPluginData; usePluginData('docusaurus-plugin-content-docs', pluginId) as GlobalPluginData;
export const useActivePlugin = (options: GetActivePluginOptions = {}) => { export const useActivePlugin = (
options: GetActivePluginOptions = {},
): ActivePlugin | undefined => {
const data = useAllDocsData(); const data = useAllDocsData();
const {pathname} = useLocation(); const {pathname} = useLocation();
return getActivePlugin(data, pathname, options); return getActivePlugin(data, pathname, options);
@ -57,27 +61,35 @@ export const useVersions = (pluginId: string | undefined): GlobalVersion[] => {
return data.versions; return data.versions;
}; };
export const useLatestVersion = (pluginId: string | undefined) => { export const useLatestVersion = (
pluginId: string | undefined,
): GlobalVersion => {
const data = useDocsData(pluginId); const data = useDocsData(pluginId);
return getLatestVersion(data); return getLatestVersion(data);
}; };
// Note: return undefined on doc-unrelated pages, // Note: return undefined on doc-unrelated pages,
// because there's no version currently considered as active // because there's no version currently considered as active
export const useActiveVersion = (pluginId: string | undefined) => { export const useActiveVersion = (
pluginId: string | undefined,
): GlobalVersion | undefined => {
const data = useDocsData(pluginId); const data = useDocsData(pluginId);
const {pathname} = useLocation(); const {pathname} = useLocation();
return getActiveVersion(data, pathname); return getActiveVersion(data, pathname);
}; };
export const useActiveDocContext = (pluginId: string | undefined) => { export const useActiveDocContext = (
pluginId: string | undefined,
): ActiveDocContext => {
const data = useDocsData(pluginId); const data = useDocsData(pluginId);
const {pathname} = useLocation(); const {pathname} = useLocation();
return getActiveDocContext(data, pathname); return getActiveDocContext(data, pathname);
}; };
// Useful to say "hey, you are not on the latest docs version, please switch" // Useful to say "hey, you are not on the latest docs version, please switch"
export const useDocVersionSuggestions = (pluginId: string | undefined) => { export const useDocVersionSuggestions = (
pluginId: string | undefined,
): DocVersionSuggestions => {
const data = useDocsData(pluginId); const data = useDocsData(pluginId);
const {pathname} = useLocation(); const {pathname} = useLocation();
return getDocVersionSuggestions(data, pathname); return getDocVersionSuggestions(data, pathname);

View file

@ -6,7 +6,7 @@
*/ */
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
export const useTitleFormatter = (title?: string | undefined) => { export const useTitleFormatter = (title?: string | undefined): string => {
const {siteConfig = {}} = useDocusaurusContext(); const {siteConfig = {}} = useDocusaurusContext();
const {title: siteTitle, titleDelimiter = '|'} = siteConfig; const {title: siteTitle, titleDelimiter = '|'} = siteConfig;
return title && title.trim().length return title && title.trim().length

View file

@ -28,7 +28,6 @@ function createTestHelpers({
function testFail(value: unknown) { function testFail(value: unknown) {
expect(() => Joi.attempt(value, schema)).toThrowErrorMatchingSnapshot( expect(() => Joi.attempt(value, schema)).toThrowErrorMatchingSnapshot(
// @ts-expect-error: seems ok at runtime, but bad typedef
`for value=${JSON.stringify(value)}`, `for value=${JSON.stringify(value)}`,
); );
} }

View file

@ -38,7 +38,7 @@ export const logValidationBugReportHint = (): void => {
export function normalizePluginOptions<T extends {id?: string}>( export function normalizePluginOptions<T extends {id?: string}>(
schema: Joi.ObjectSchema<T>, schema: Joi.ObjectSchema<T>,
options: unknown, options: unknown,
) { ): T {
// All plugins can be provided an "id" option (multi-instance support) // All plugins can be provided an "id" option (multi-instance support)
// we add schema validation automatically // we add schema validation automatically
const finalSchema = schema.append({ const finalSchema = schema.append({
@ -51,7 +51,7 @@ export function normalizePluginOptions<T extends {id?: string}>(
logValidationBugReportHint(); logValidationBugReportHint();
if (isValidationDisabledEscapeHatch) { if (isValidationDisabledEscapeHatch) {
console.error(error); console.error(error);
return options; return options as T;
} else { } else {
throw error; throw error;
} }
@ -62,7 +62,7 @@ export function normalizePluginOptions<T extends {id?: string}>(
export function normalizeThemeConfig<T>( export function normalizeThemeConfig<T>(
schema: Joi.ObjectSchema<T>, schema: Joi.ObjectSchema<T>,
themeConfig: unknown, themeConfig: unknown,
) { ): T {
// A theme should only validate his "slice" of the full themeConfig, // A theme should only validate his "slice" of the full themeConfig,
// not the whole object, so we allow unknown attributes // not the whole object, so we allow unknown attributes
// otherwise one theme would fail validating the data of another theme // otherwise one theme would fail validating the data of another theme
@ -76,7 +76,7 @@ export function normalizeThemeConfig<T>(
logValidationBugReportHint(); logValidationBugReportHint();
if (isValidationDisabledEscapeHatch) { if (isValidationDisabledEscapeHatch) {
console.error(error); console.error(error);
return themeConfig; return themeConfig as T;
} else { } else {
throw error; throw error;
} }

View file

@ -6,7 +6,7 @@
*/ */
// Too dynamic // Too dynamic
// eslint-disable-next-line @typescript-eslint/no-explicit-any /* eslint-disable @typescript-eslint/no-explicit-any */
function flat(target: unknown): Record<string, any> { function flat(target: unknown): Record<string, any> {
const delimiter = '.'; const delimiter = '.';
const output: Record<string, any> = {}; const output: Record<string, any> = {};

View file

@ -15,11 +15,11 @@ import initPlugins from '../server/plugins/init';
import {flatten} from 'lodash'; import {flatten} from 'lodash';
import {parseMarkdownHeadingId} from '@docusaurus/utils'; import {parseMarkdownHeadingId} from '@docusaurus/utils';
export function unwrapMarkdownLinks(line) { export function unwrapMarkdownLinks(line: string): string {
return line.replace(/\[([^\]]+)\]\([^)]+\)/g, (match, p1) => p1); return line.replace(/\[([^\]]+)\]\([^)]+\)/g, (match, p1) => p1);
} }
function addHeadingId(line, slugger) { function addHeadingId(line: string, slugger: GithubSlugger): string {
let headingLevel = 0; let headingLevel = 0;
while (line.charAt(headingLevel) === '#') { while (line.charAt(headingLevel) === '#') {
headingLevel += 1; headingLevel += 1;
@ -35,7 +35,7 @@ function addHeadingId(line, slugger) {
export function transformMarkdownHeadingLine( export function transformMarkdownHeadingLine(
line: string, line: string,
slugger: GithubSlugger, slugger: GithubSlugger,
) { ): string {
if (!line.startsWith('#')) { if (!line.startsWith('#')) {
throw new Error(`Line is not a markdown heading: ${line}`); throw new Error(`Line is not a markdown heading: ${line}`);
} }

View file

@ -32,7 +32,7 @@ function isTranslatableSourceCodePath(filePath: string): boolean {
return TranslatableSourceCodeExtension.has(nodePath.extname(filePath)); return TranslatableSourceCodeExtension.has(nodePath.extname(filePath));
} }
function getSiteSourceCodeFilePaths(siteDir): string[] { function getSiteSourceCodeFilePaths(siteDir: string): string[] {
return [nodePath.join(siteDir, SRC_DIR_NAME)]; return [nodePath.join(siteDir, SRC_DIR_NAME)];
} }
@ -180,7 +180,7 @@ function extractSourceCodeAstTranslations(
return `File=${sourceCodeFilePath} at line=${node.loc?.start.line}`; return `File=${sourceCodeFilePath} at line=${node.loc?.start.line}`;
} }
function generateCode(node: Node) { function generateCode(node: Node) {
return generate(node as any).code; return generate(node).code;
} }
const translations: Record<string, TranslationMessage> = {}; const translations: Record<string, TranslationMessage> = {};

View file

@ -21,7 +21,7 @@ export default class WaitPlugin {
this.filepath = options.filepath; this.filepath = options.filepath;
} }
apply(compiler: Compiler) { apply(compiler: Compiler): void {
// Before finishing the compilation step // Before finishing the compilation step
compiler.hooks.make.tapAsync('WaitPlugin', (compilation, callback) => { compiler.hooks.make.tapAsync('WaitPlugin', (compilation, callback) => {
// To prevent 'waitFile' error on waiting non-existing directory // To prevent 'waitFile' error on waiting non-existing directory

View file

@ -7,7 +7,7 @@
"rootDir": "src", "rootDir": "src",
"outDir": "lib", "outDir": "lib",
"noImplicitAny": false, "noImplicitAny": false,
"jsx": "react", "jsx": "react"
}, },
"exclude": ["node_modules", "**/__tests__/**/*", "**/lib/**/*", "src/client"] "exclude": ["node_modules", "**/__tests__/**/*", "**/lib/**/*", "src/client"]
} }