@@ -4,6 +4,7 @@ import * as Path from "path";
44import type { Application } from "../application" ;
55import type { Logger } from "./loggers" ;
66import { nicePath } from "./paths" ;
7+ import { validate } from "./validation" ;
78
89export function loadPlugins ( app : Application , plugins : readonly string [ ] ) {
910 if ( plugins . includes ( "none" ) ) {
@@ -97,7 +98,7 @@ export function discoverPlugins(app: Application): string[] {
9798/**
9899 * Load and parse the given `package.json`.
99100 */
100- function loadPackageInfo ( logger : Logger , fileName : string ) : any {
101+ function loadPackageInfo ( logger : Logger , fileName : string ) : unknown {
101102 try {
102103 return require ( fileName ) ;
103104 } catch {
@@ -111,20 +112,13 @@ const PLUGIN_KEYWORDS = ["typedocplugin", "typedoc-plugin", "typedoc-theme"];
111112/**
112113 * Test whether the given package info describes a TypeDoc plugin.
113114 */
114- function isPlugin ( info : any ) : boolean {
115- if ( typeof info !== "object" || ! info ) {
115+ function isPlugin ( info : unknown ) : boolean {
116+ if ( ! validate ( { keywords : [ Array , String ] } , info ) ) {
116117 return false ;
117118 }
118119
119- const keywords : unknown [ ] = info . keywords ;
120- if ( ! keywords || ! Array . isArray ( keywords ) ) {
121- return false ;
122- }
123-
124- return keywords . some (
125- ( keyword ) =>
126- typeof keyword === "string" &&
127- PLUGIN_KEYWORDS . includes ( keyword . toLocaleLowerCase ( ) )
120+ return info . keywords . some ( ( keyword ) =>
121+ PLUGIN_KEYWORDS . includes ( keyword . toLocaleLowerCase ( ) )
128122 ) ;
129123}
130124
0 commit comments