44 * SPDX-License-Identifier: Apache-2.0
55 */
66
7+ import type { ParsedArguments } from '../cli.js' ;
8+
79import * as consoleTools from './console.js' ;
810import * as emulationTools from './emulation.js' ;
911import * as extensionTools from './extensions.js' ;
@@ -15,26 +17,41 @@ import * as performanceTools from './performance.js';
1517import * as screencastTools from './screencast.js' ;
1618import * as screenshotTools from './screenshot.js' ;
1719import * as scriptTools from './script.js' ;
20+ import * as slimTools from './slim/tools.js' ;
1821import * as snapshotTools from './snapshot.js' ;
1922import type { ToolDefinition } from './ToolDefinition.js' ;
2023
21- const tools = [
22- ...Object . values ( consoleTools ) ,
23- ...Object . values ( emulationTools ) ,
24- ...Object . values ( extensionTools ) ,
25- ...Object . values ( inputTools ) ,
26- ...Object . values ( memoryTools ) ,
27- ...Object . values ( networkTools ) ,
28- ...Object . values ( pagesTools ) ,
29- ...Object . values ( performanceTools ) ,
30- ...Object . values ( screencastTools ) ,
31- ...Object . values ( screenshotTools ) ,
32- ...Object . values ( scriptTools ) ,
33- ...Object . values ( snapshotTools ) ,
34- ] as ToolDefinition [ ] ;
24+ export const createTools = ( args : ParsedArguments ) => {
25+ const rawTools = args . slim
26+ ? Object . values ( slimTools )
27+ : [
28+ ...Object . values ( consoleTools ) ,
29+ ...Object . values ( emulationTools ) ,
30+ ...Object . values ( extensionTools ) ,
31+ ...Object . values ( inputTools ) ,
32+ ...Object . values ( memoryTools ) ,
33+ ...Object . values ( networkTools ) ,
34+ ...Object . values ( pagesTools ) ,
35+ ...Object . values ( performanceTools ) ,
36+ ...Object . values ( screencastTools ) ,
37+ ...Object . values ( screenshotTools ) ,
38+ ...Object . values ( scriptTools ) ,
39+ ...Object . values ( snapshotTools ) ,
40+ ] ;
41+
42+ const tools : ToolDefinition [ ] = [ ] ;
43+ for ( const tool of rawTools ) {
44+ if ( typeof tool === 'function' ) {
45+ // @ts -expect-error none of the tools for now implement the function type tool has type "never"
46+ tools . push ( tool ( args ) as ToolDefinition ) ;
47+ } else {
48+ tools . push ( tool as ToolDefinition ) ;
49+ }
50+ }
3551
36- tools . sort ( ( a , b ) => {
37- return a . name . localeCompare ( b . name ) ;
38- } ) ;
52+ tools . sort ( ( a , b ) => {
53+ return a . name . localeCompare ( b . name ) ;
54+ } ) ;
3955
40- export { tools } ;
56+ return tools ;
57+ } ;
0 commit comments