22// Use of this source code is governed by a BSD-style license that can be
33// found in the LICENSE file.
44
5- 'use strict' ;
6-
7- const fs = require ( 'node:fs' ) ;
8- const https = require ( 'node:https' ) ;
9- const path = require ( 'node:path' ) ;
10- const ts = require ( 'typescript' ) ;
5+ import fs from 'node:fs' ;
6+ import https from 'node:https' ;
7+ import path from 'node:path' ;
8+ import ts from 'typescript' ;
119
1210const readDirAsync = fs . promises . readdir ;
1311const readFileAsync = fs . promises . readFile ;
@@ -18,13 +16,9 @@ const ORIGIN_PATTERNS_TO_CHECK = [
1816 new RegExp ( '^https://developer[s]?.chrome.com' ) ,
1917] ;
2018
21- const DIRECTORIES_TO_CHECK = [
22- 'front_end' ,
23- ] ;
19+ const DIRECTORIES_TO_CHECK = [ 'front_end' ] ;
2420
25- const EXCLUDE_DIRECTORIES = [
26- 'front_end/third_party' ,
27- ] ;
21+ const EXCLUDE_DIRECTORIES = [ 'front_end/third_party' ] ;
2822
2923const REQUEST_TIMEOUT = 5000 ;
3024
@@ -34,25 +28,29 @@ const REDIRECTS_CONSIDERED_ERROR = new Set([
3428 /* Permament redirect */ 308 ,
3529] ) ;
3630
37- const ROOT_REPOSITORY_PATH = path . resolve ( __dirname , '..' ) ;
38- const DIRECTORIES_TO_CHECK_PATHS = DIRECTORIES_TO_CHECK . map ( directory => path . resolve ( ROOT_REPOSITORY_PATH , directory ) ) ;
31+ const ROOT_REPOSITORY_PATH = path . resolve ( import . meta. dirname , '..' ) ;
32+ const DIRECTORIES_TO_CHECK_PATHS = DIRECTORIES_TO_CHECK . map (
33+ directory => path . resolve ( ROOT_REPOSITORY_PATH , directory ) ,
34+ ) ;
3935
4036async function findAllSourceFiles ( directory ) {
4137 if ( EXCLUDE_DIRECTORIES . includes ( path . relative ( ROOT_REPOSITORY_PATH , directory ) ) ) {
4238 return [ ] ;
4339 }
4440
4541 const dirEntries = await readDirAsync ( directory , { withFileTypes : true } ) ;
46- const files = await Promise . all ( dirEntries . map ( dirEntry => {
47- const resolvedPath = path . resolve ( directory , dirEntry . name ) ;
48- if ( dirEntry . isDirectory ( ) ) {
49- return findAllSourceFiles ( resolvedPath ) ;
50- }
51- if ( dirEntry . isFile ( ) && / \. ( j s | t s ) $ / . test ( dirEntry . name ) ) {
52- return resolvedPath ;
53- }
54- return [ ] ; // Let Array#flat filter out files we are not interested in.
55- } ) ) ;
42+ const files = await Promise . all (
43+ dirEntries . map ( dirEntry => {
44+ const resolvedPath = path . resolve ( directory , dirEntry . name ) ;
45+ if ( dirEntry . isDirectory ( ) ) {
46+ return findAllSourceFiles ( resolvedPath ) ;
47+ }
48+ if ( dirEntry . isFile ( ) && / \. ( j s | t s ) $ / . test ( dirEntry . name ) ) {
49+ return resolvedPath ;
50+ }
51+ return [ ] ; // Let Array#flat filter out files we are not interested in.
52+ } ) ,
53+ ) ;
5654 return files . flat ( ) ;
5755}
5856
@@ -63,7 +61,9 @@ function collectUrlsToCheck(node) {
6361 const currentNode = nodesToVisit . shift ( ) ;
6462 if ( currentNode . kind === ts . SyntaxKind . StringLiteral ||
6563 currentNode . kind === ts . SyntaxKind . NoSubstitutionTemplateLiteral ) {
66- const checkUrl = ORIGIN_PATTERNS_TO_CHECK . some ( originPattern => originPattern . test ( currentNode . text ) ) ;
64+ const checkUrl = ORIGIN_PATTERNS_TO_CHECK . some (
65+ originPattern => originPattern . test ( currentNode . text ) ,
66+ ) ;
6767 if ( checkUrl ) {
6868 urlsToCheck . push ( currentNode . text ) ;
6969 }
@@ -75,25 +75,33 @@ function collectUrlsToCheck(node) {
7575
7676async function collectUrlsToCheckFromFile ( filePath ) {
7777 const content = await readFileAsync ( filePath , 'utf8' ) ;
78- const sourceFile = ts . createSourceFile ( filePath , content , ts . ScriptTarget . ESNext , true ) ;
78+ const sourceFile = ts . createSourceFile (
79+ filePath ,
80+ content ,
81+ ts . ScriptTarget . ESNext ,
82+ true ,
83+ ) ;
7984 return collectUrlsToCheck ( sourceFile ) ;
8085}
8186
8287async function checkUrls ( urls ) {
8388 // clang-format off
84- const requestPromises = urls . map ( url => new Promise ( resolve => {
85- const request = https . request ( url , { method : 'HEAD' } , response => {
86- resolve ( { url, statusCode : response . statusCode } ) ;
87- } ) ;
88-
89- request . on ( 'error' , err => {
90- resolve ( { url, error : err } ) ;
91- } ) ;
92- request . setTimeout ( REQUEST_TIMEOUT , _ => {
93- resolve ( { url, error : `Timed out after ${ REQUEST_TIMEOUT } ` } ) ;
94- } ) ;
95- request . end ( ) ;
96- } ) ) ;
89+ const requestPromises = urls . map (
90+ url =>
91+ new Promise ( resolve => {
92+ const request = https . request ( url , { method : 'HEAD' } , response => {
93+ resolve ( { url, statusCode : response . statusCode } ) ;
94+ } ) ;
95+
96+ request . on ( 'error' , err => {
97+ resolve ( { url, error : err } ) ;
98+ } ) ;
99+ request . setTimeout ( REQUEST_TIMEOUT , _ => {
100+ resolve ( { url, error : `Timed out after ${ REQUEST_TIMEOUT } ` } ) ;
101+ } ) ;
102+ request . end ( ) ;
103+ } ) ,
104+ ) ;
97105 // clang-format on
98106
99107 return Promise . all ( requestPromises ) ;
@@ -122,9 +130,13 @@ function printSelectedRequestResults(requestResults) {
122130 if ( requestResult . error ) {
123131 console . error ( `[Failure] ${ requestResult . error } - ${ requestResult . url } ` ) ;
124132 } else if ( isErrorStatusCode ( requestResult . statusCode ) ) {
125- console . error ( `[Failure] Status Code: ${ requestResult . statusCode } - ${ requestResult . url } ` ) ;
133+ console . error (
134+ `[Failure] Status Code: ${ requestResult . statusCode } - ${ requestResult . url } ` ,
135+ ) ;
126136 } else {
127- console . log ( `Status Code: ${ requestResult . statusCode } - ${ requestResult . url } ` ) ;
137+ console . log (
138+ `Status Code: ${ requestResult . statusCode } - ${ requestResult . url } ` ,
139+ ) ;
128140 }
129141 }
130142}
0 commit comments