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' ;
@@ -16,27 +18,42 @@ import * as performanceTools from './performance.js';
1618import * as screencastTools from './screencast.js' ;
1719import * as screenshotTools from './screenshot.js' ;
1820import * as scriptTools from './script.js' ;
21+ import * as slimTools from './slim/tools.js' ;
1922import * as snapshotTools from './snapshot.js' ;
2023import type { ToolDefinition } from './ToolDefinition.js' ;
2124
22- const tools = [
23- ...Object . values ( consoleTools ) ,
24- ...Object . values ( emulationTools ) ,
25- ...Object . values ( extensionTools ) ,
26- ...Object . values ( inPageTools ) ,
27- ...Object . values ( inputTools ) ,
28- ...Object . values ( memoryTools ) ,
29- ...Object . values ( networkTools ) ,
30- ...Object . values ( pagesTools ) ,
31- ...Object . values ( performanceTools ) ,
32- ...Object . values ( screencastTools ) ,
33- ...Object . values ( screenshotTools ) ,
34- ...Object . values ( scriptTools ) ,
35- ...Object . values ( snapshotTools ) ,
36- ] as ToolDefinition [ ] ;
25+ export const createTools = ( args : ParsedArguments ) => {
26+ const rawTools = args . slim
27+ ? Object . values ( slimTools )
28+ : [
29+ ...Object . values ( consoleTools ) ,
30+ ...Object . values ( emulationTools ) ,
31+ ...Object . values ( extensionTools ) ,
32+ ...Object . values ( inPageTools ) ,
33+ ...Object . values ( inputTools ) ,
34+ ...Object . values ( memoryTools ) ,
35+ ...Object . values ( networkTools ) ,
36+ ...Object . values ( pagesTools ) ,
37+ ...Object . values ( performanceTools ) ,
38+ ...Object . values ( screencastTools ) ,
39+ ...Object . values ( screenshotTools ) ,
40+ ...Object . values ( scriptTools ) ,
41+ ...Object . values ( snapshotTools ) ,
42+ ] ;
43+
44+ const tools : ToolDefinition [ ] = [ ] ;
45+ for ( const tool of rawTools ) {
46+ if ( typeof tool === 'function' ) {
47+ // @ts -expect-error none of the tools for now implement the function type tool has type "never"
48+ tools . push ( tool ( args ) as ToolDefinition ) ;
49+ } else {
50+ tools . push ( tool as ToolDefinition ) ;
51+ }
52+ }
3753
38- tools . sort ( ( a , b ) => {
39- return a . name . localeCompare ( b . name ) ;
40- } ) ;
54+ tools . sort ( ( a , b ) => {
55+ return a . name . localeCompare ( b . name ) ;
56+ } ) ;
4157
42- export { tools } ;
58+ return tools ;
59+ } ;
0 commit comments