Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Report all new CTQ errors on Slack #141

Closed
chrisklus opened this issue May 13, 2022 · 10 comments
Closed

Report all new CTQ errors on Slack #141

chrisklus opened this issue May 13, 2022 · 10 comments

Comments

@chrisklus
Copy link
Contributor

The CT channel has largely been noise for me and the two times there have been errors that I should fix, they have both not been reported in the channel.

Proposal: Until #140 is fixed, filter out Error: Protocol error: Connection closed. Most likely the page has been closed. and Error: Navigation failed because browser has disconnected!. Also, report all new lint and tsc failures, if possible. Not reporting a new quick-type error because a different, unrelated error already exists is not preventing noise, it's covering up something that also needs to be fixed at high priority.

Marking for dev meeting in case this is not discussed before then.

@jbphet
Copy link
Contributor

jbphet commented May 19, 2022

@zepumph said in the 5/19/2022 developer meeting that #140 should be fixed soon, so there is no need to explicitly filter it out.

As for the 2nd proposal (alerting us when things change in the failure modes), @jonathanolson says that there is a reasonably quick way to try this out, which is to diff the failures and send a notification on changes (i.e. differences exist). He will implement this.

We would like to not get notifications when errors are fixed until they are all fixed, i.e. all lint is now passing.

@chrisklus
Copy link
Contributor Author

I made progress on this issue tonight. So far, I have just been experimenting with lint + tsc errors, as adding in transpiling and fuzzing makes for longer iterations and additional noise with memory stuff. So more work may be needed so support bringing those back, but I think I have a nice UX working for tsc and lint errors. Here is a log of a trial run, with my "commit" actions noted during each "checking stale" stage. When any messages would be sent to CT is noted in the logs. A patch of my working copy changes is down below the log output.

chk@voyager:~/phetsims/aqua$ grunt quick-server --testing
Running "quick-server" task
info: QuickServer: running on port 45367
info: QuickServer: cycle start
info: QuickServer: checking stale              // no action, letting clean test pass for first round
(node:9404) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: passing -> passing
info: QuickServer: cycle start
info: QuickServer: checking stale               // added one lint error
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: passing -> broken, sending broken CT message
info: Quick CT failing:

lint:

code: 6
stdout:
Running "lint-everything" task

/Users/chk/phetsims/geometric-optics/js/geometric-optics-main.ts
  15:27  error  Unexpected trailing comma  comma-dangle

✖ 1 problem (1 error, 0 warnings)
  1 error and 0 warnings potentially fixable with the `--fix` option.

Warning: 1 errors and 0 warnings Use --force to continue.

Aborted due to warnings.

stderr:

info: QuickServer: cycle start
info: QuickServer: checking stale              // added one TypeScript error
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: Deleting directory /Users/chk/phetsims//chipper/dist
info: QuickServer: tsc
info: broken -> more broken, sending additional broken CT message
info: Quick CT additional failure:

tsc:

code: 2
stdout:
../../../geometric-optics/js/geometric-optics-main.ts(17,7): error TS2339: Property 'hi' does not exist on type 'GOSim'.

stderr:

info: QuickServer: cycle start
info: QuickServer: checking stale              // added a second lint error
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: broken -> more broken, sending additional broken CT message
info: Quick CT additional failure:

lint:

code: 6
stdout:
Running "lint-everything" task

/Users/chk/phetsims/geometric-optics/js/geometric-optics-main.ts
  15:27  error  Unexpected trailing comma  comma-dangle
  18:4   error  Missing semicolon          semi

✖ 2 problems (2 errors, 0 warnings)
  2 errors and 0 warnings potentially fixable with the `--fix` option.

Warning: 2 errors and 0 warnings Use --force to continue.

Aborted due to warnings.

stderr:

info: QuickServer: cycle start
info: QuickServer: checking stale               // no action, letting sit one round to see that none of the 3 reported errors are re-reported
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: broken -> broken, no new errors to report
info: QuickServer: cycle start
info: QuickServer: checking stale              // added a second typescript error
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: broken -> more broken, sending additional broken CT message
info: Quick CT additional failure:

tsc:

code: 2
stdout:
../../../geometric-optics/js/geometric-optics-main.ts(14,71): error TS2339: Property 'hello' does not exist on type '{ title: string; }'.
../../../geometric-optics/js/geometric-optics-main.ts(17,7): error TS2339: Property 'hi' does not exist on type 'GOSim'.

stderr:

info: QuickServer: cycle start
info: QuickServer: checking stale              // fixed all errors
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: broken -> passing, sending passing CT message
info: QuickServer: cycle start
info: QuickServer: checking stale              // no action, making sure passing state is maintained
info: QuickServer: stale repos: 
info: QuickServer: cloning missing repos
info: Cloning missing repos
info: QuickServer: checking SHAs
info: QuickServer: linting
info: QuickServer: tsc
info: passing -> passing
info: QuickServer: cycle start
info: QuickServer: checking stale
^C

Caught interrupt signal, exiting
Index: js/server/QuickServer.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/server/QuickServer.js b/js/server/QuickServer.js
--- a/js/server/QuickServer.js	(revision e11b7af15b8976ab74a2db6f66a8140128fa4616)
+++ b/js/server/QuickServer.js	(date 1653368691952)
@@ -16,8 +16,8 @@
 const gruntCommand = require( '../../../perennial/js/common/gruntCommand' );
 const isStale = require( '../../../perennial/js/common/isStale' );
 const npmUpdate = require( '../../../perennial/js/common/npmUpdate' );
-const puppeteerLoad = require( '../../../perennial/js/common/puppeteerLoad' );
-const withServer = require( '../../../perennial/js/common/withServer' );
+// const puppeteerLoad = require( '../../../perennial/js/common/puppeteerLoad' );
+// const withServer = require( '../../../perennial/js/common/withServer' );
 const assert = require( 'assert' );
 const http = require( 'http' );
 const _ = require( 'lodash' ); // eslint-disable-line
@@ -45,7 +45,7 @@
     };
 
     // @public {*}
-    this.reportState = {};
+    this.testingState = {};
 
     // @public {string} - root of your GitHub working copy, relative to the name of the directory that the
     // currently-executing script resides in
@@ -53,6 +53,9 @@
 
     // @public {boolean} - whether we are in testing mode. if true, tests are continuously forced to run
     this.isTestMode = options.isTestMode;
+
+    // @public {string[]} - errors found in any given loop
+    this.errorMessages = [];
   }
 
   /**
@@ -120,110 +123,88 @@
           winston.info( 'QuickServer: tsc' );
           const tscResult = await execute( '../../node_modules/typescript/bin/tsc', [], `${this.rootDir}/chipper/tsconfig/all`, { errors: 'resolve' } );
 
-          winston.info( 'QuickServer: transpiling' );
-          const transpileResult = await execute( 'node', [ 'js/scripts/transpile.js' ], `${this.rootDir}/chipper`, { errors: 'resolve' } );
+          // winston.info( 'QuickServer: transpiling' );
+          // const transpileResult = await execute( 'node', [ 'js/scripts/transpile.js' ], `${this.rootDir}/chipper`, { errors: 'resolve' } );
 
-          winston.info( 'QuickServer: sim fuzz' );
-          let simFuzz = null;
-          try {
-            await withServer( async port => {
-              const url = `http://localhost:${port}/natural-selection/natural-selection_en.html?brand=phet&ea&debugger&fuzz`;
-              const error = await puppeteerLoad( url, {
-                waitAfterLoad: 10000,
-                allowedTimeToLoad: 120000,
-                puppeteerTimeout: 120000
-              } );
-              if ( error ) {
-                simFuzz = error;
-              }
-            } );
-          }
-          catch( e ) {
-            simFuzz = e;
-          }
-
-          winston.info( 'QuickServer: studio fuzz' );
-          let studioFuzz = null;
-          try {
-            await withServer( async port => {
-              const url = `http://localhost:${port}/studio/index.html?sim=states-of-matter&phetioElementsDisplay=all&fuzz`;
-              const error = await puppeteerLoad( url, {
-                waitAfterLoad: 10000,
-                allowedTimeToLoad: 120000,
-                puppeteerTimeout: 120000
-              } );
-              if ( error ) {
-                studioFuzz = error;
-              }
-            } );
-          }
-          catch( e ) {
-            studioFuzz = e;
-          }
+          // winston.info( 'QuickServer: sim fuzz' );
+          // let simFuzz = null;
+          // try {
+          //   await withServer( async port => {
+          //     const url = `http://localhost:${port}/natural-selection/natural-selection_en.html?brand=phet&ea&debugger&fuzz`;
+          //     const error = await puppeteerLoad( url, {
+          //       waitAfterLoad: 10000,
+          //       allowedTimeToLoad: 120000,
+          //       puppeteerTimeout: 120000
+          //     } );
+          //     if ( error ) {
+          //       simFuzz = error;
+          //     }
+          //   } );
+          // }
+          // catch( e ) {
+          //   simFuzz = e;
+          // }
+          //
+          // winston.info( 'QuickServer: studio fuzz' );
+          // let studioFuzz = null;
+          // try {
+          //   await withServer( async port => {
+          //     const url = `http://localhost:${port}/studio/index.html?sim=states-of-matter&phetioElementsDisplay=all&fuzz`;
+          //     const error = await puppeteerLoad( url, {
+          //       waitAfterLoad: 10000,
+          //       allowedTimeToLoad: 120000,
+          //       puppeteerTimeout: 120000
+          //     } );
+          //     if ( error ) {
+          //       studioFuzz = error;
+          //     }
+          //   } );
+          // }
+          // catch( e ) {
+          //   studioFuzz = e;
+          // }
 
           const executeResultToOutput = result => {
             return {
               passed: result.code === 0,
-              message: `code: ${result.code}\nstdout:\n${result.stdout}\nstderr:\n${result.stderr}`
+              // TODO: Can the message just be stdout? Why are the other values needed? Code is just a number, and
+              // stderr seems to always be blank
+              message: `code: ${result.code}\nstdout:\n${result.stdout}\nstderr:\n${result.stderr}`,
+              stdout: result.stdout
             };
           };
-          const fuzzResultToOutput = result => {
-            if ( result === null ) {
-              return { passed: true, message: '' };
-            }
-            else {
-              return { passed: false, message: '' + result };
-            }
-          };
+          // const fuzzResultToOutput = result => {
+          //   if ( result === null ) {
+          //     return { passed: true, message: '' };
+          //   }
+          //   else {
+          //     return { passed: false, message: '' + result };
+          //   }
+          // };
 
           // This would take up too much space
-          transpileResult.stdout = '';
+          // transpileResult.stdout = '';
 
-          this.reportState = {
+          this.testingState = {
             lint: executeResultToOutput( lintResult ),
             tsc: executeResultToOutput( tscResult ),
-            transpile: executeResultToOutput( transpileResult ),
-            simFuzz: fuzzResultToOutput( simFuzz ),
-            studioFuzz: fuzzResultToOutput( studioFuzz ),
+            // transpile: executeResultToOutput( transpileResult ),
+            // simFuzz: fuzzResultToOutput( simFuzz ),
+            // studioFuzz: fuzzResultToOutput( studioFuzz ),
             shas: shas,
             timestamp: timestamp
           };
 
           try {
-            const broken = !this.reportState.lint.passed ||
-                           !this.reportState.tsc.passed ||
-                           !this.reportState.transpile.passed ||
-                           !this.reportState.simFuzz.passed ||
-                           !this.reportState.studioFuzz.passed;
-
-            if ( lastBroken !== broken ) {
-
-              if ( broken ) {
-                winston.info( 'sending broken CT message' );
-                let message = 'Quick CT failing';
-
-                const check = ( result, name ) => {
-                  if ( !result.passed ) {
-                    message += `\n${name}:\n\`\`\`\n${result.message}\n\`\`\`\n`;
-                  }
-                };
+            const broken = !this.testingState.lint.passed ||
+                           !this.testingState.tsc.passed;
+            // !this.testingState.transpile.passed ||
+            // !this.testingState.simFuzz.passed ||
+            // !this.testingState.studioFuzz.passed;
 
-                check( this.reportState.lint, 'lint' );
-                check( this.reportState.tsc, 'tsc' );
-                check( this.reportState.transpile, 'transpile' );
-                check( this.reportState.simFuzz, 'simFuzz' );
-                check( this.reportState.studioFuzz, 'studioFuzz' );
-                winston.info( message );
-
-                await sendSlackMessage( message );
-              }
-              else {
-                winston.info( 'sending passing CT message' );
-                await sendSlackMessage( 'Quick CT passing' );
-              }
+            await this.reportErrorStatus( broken, lastBroken );
 
-              lastBroken = broken;
-            }
+            lastBroken = broken;
           }
           catch( e ) {
             winston.info( `Slack error: ${e}` );
@@ -253,7 +234,7 @@
 
         if ( requestInfo.pathname === '/quickserver/status' ) {
           res.writeHead( 200, jsonHeaders );
-          res.end( JSON.stringify( this.reportState, null, 2 ) );
+          res.end( JSON.stringify( this.testingState, null, 2 ) );
         }
       }
       catch( e ) {
@@ -263,6 +244,63 @@
 
     winston.info( `QuickServer: running on port ${port}` );
   }
+
+  /**
+   * Checks the error messages and reports the current status to the logs and Slack.
+   *
+   * @param {boolean} broken
+   * @param {boolean} lastBroken
+   * @private
+   */
+  async reportErrorStatus( broken, lastBroken ) {
+    if ( lastBroken !== broken && !broken ) {
+      this.errorMessages.length = 0;
+      winston.info( 'broken -> passing, sending passing CT message' );
+      !this.isTestMode && await sendSlackMessage( 'Quick CT passing' );
+    }
+    else if ( broken ) {
+      let message = '';
+      let previousFailureFound = false;
+
+      const check = ( result, name ) => {
+        if ( !result.passed && !this.errorMessages.includes( result.stdout ) ) {
+          this.errorMessages.push( result.stdout );
+          message += `\n${name}:\n\`\`\`\n${result.message}\n\`\`\`\n`;
+        }
+        else if ( !result.passed ) {
+          previousFailureFound = true;
+        }
+      };
+
+      check( this.testingState.lint, 'lint' );
+      check( this.testingState.tsc, 'tsc' );
+      // check( this.testingState.transpile, 'transpile' );
+      // check( this.testingState.simFuzz, 'simFuzz' );
+      // check( this.testingState.studioFuzz, 'studioFuzz' );
+
+      if ( message.length > 0 ) {
+
+        if ( previousFailureFound ) {
+          winston.info( 'broken -> more broken, sending additional broken CT message' );
+          message = 'Quick CT additional failure:' + message;
+        }
+        else {
+          winston.info( 'passing -> broken, sending broken CT message' );
+          message = 'Quick CT failing:' + message;
+        }
+
+        winston.info( message );
+        !this.isTestMode && await sendSlackMessage( message );
+      }
+      else {
+        assert && assert( previousFailureFound, 'Previous failures must exist if no new errors are found and CTQ is still broken' );
+        winston.info( 'broken -> broken, no new errors to report' );
+      }
+    }
+    else {
+      winston.info( 'passing -> passing' );
+    }
+  }
 }
 
 module.exports = QuickServer;

@chrisklus
Copy link
Contributor Author

Before adding back in transpiling and fuzzing, I also want to do more thorough testing of lint + tsc errors, similar to what was done above, but with more variation, like a new lint and tsc error in the same cycle, two new errors of the same type in the same cycle, mixing in errors in different files, fixing errors over many cycles instead of all at once, etc to make sure all those cases are working appropriately.

@zepumph
Copy link
Member

zepumph commented May 25, 2022

// no action, making sure passing state is maintained

Does this mean you have to get two passing rounds before it considers the error solved? What if in a round an error is solved and another appears? Is this important?

@chrisklus
Copy link
Contributor Author

Does this mean you have to get two passing rounds before it considers the error solved?

No, I just wanted to make sure that the state went from broken -> passing to passing -> passing. Note that the passing CT message went out before that comment.

What if in a round an error is solved and another appears? Is this important?

With the changes above, it would just report the new error and not send a passing message. I'm considering trying out some feedback that would reflect that change, but in a way that would not send additional messages. Maybe like:

2 new lint errors: 
*error details*
all other pre-existing errors fixed.

If new errors show up and there are still errors that were previously reported, maybe something like this:

2 new lint errors: 
*error details*
3 other pre-existing errors remain.

@chrisklus
Copy link
Contributor Author

I got close to finishing tonight but am not quite there. Latest patch:

Index: js/server/QuickServer.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/server/QuickServer.js b/js/server/QuickServer.js
--- a/js/server/QuickServer.js	(revision e11b7af15b8976ab74a2db6f66a8140128fa4616)
+++ b/js/server/QuickServer.js	(date 1653542733302)
@@ -26,6 +26,14 @@
 const winston = require( 'winston' );
 const sendSlackMessage = require( './sendSlackMessage' );
 
+const ctqType = {
+  LINT: 'lint',
+  TSC: 'tsc',
+  TRANSPILE: 'transpile',
+  SIM_FUZZ: 'simFuzz',
+  STUDIO_FUZZ: 'studioFuzz'
+};
+
 // Headers that we'll include in all server replies
 const jsonHeaders = {
   'Content-Type': 'application/json',
@@ -45,7 +53,7 @@
     };
 
     // @public {*}
-    this.reportState = {};
+    this.testingState = {};
 
     // @public {string} - root of your GitHub working copy, relative to the name of the directory that the
     // currently-executing script resides in
@@ -53,6 +61,9 @@
 
     // @public {boolean} - whether we are in testing mode. if true, tests are continuously forced to run
     this.isTestMode = options.isTestMode;
+
+    // @public {string[]} - errors found in any given loop
+    this.errorMessages = [];
   }
 
   /**
@@ -161,69 +172,46 @@
             studioFuzz = e;
           }
 
-          const executeResultToOutput = result => {
+          const executeResultToOutput = ( result, name ) => {
             return {
               passed: result.code === 0,
-              message: `code: ${result.code}\nstdout:\n${result.stdout}\nstderr:\n${result.stderr}`
+              // TODO: CK: I changed the message to only include stdout, is this okay? Wasn't seeing how the other two were
+              // helpful in the context of Slack messages
+              errorMessages: this.parseErrors( result.stdout, name )
             };
           };
-          const fuzzResultToOutput = result => {
+          const fuzzResultToOutput = ( result, name ) => {
             if ( result === null ) {
-              return { passed: true, message: '' };
+              return { passed: true, errorMessages: [] };
             }
             else {
-              return { passed: false, message: '' + result };
+              return { passed: false, errorMessages: this.parseErrors( result, name ) };
             }
           };
 
           // This would take up too much space
           transpileResult.stdout = '';
 
-          this.reportState = {
-            lint: executeResultToOutput( lintResult ),
-            tsc: executeResultToOutput( tscResult ),
-            transpile: executeResultToOutput( transpileResult ),
-            simFuzz: fuzzResultToOutput( simFuzz ),
-            studioFuzz: fuzzResultToOutput( studioFuzz ),
+          this.testingState = {
+            lint: executeResultToOutput( lintResult, ctqType.LINT ),
+            tsc: executeResultToOutput( tscResult, ctqType.TSC ),
+            transpile: executeResultToOutput( transpileResult, ctqType.TRANSPILE ),
+            simFuzz: fuzzResultToOutput( simFuzz, ctqType.SIM_FUZZ ),
+            studioFuzz: fuzzResultToOutput( studioFuzz, ctqType.STUDIO_FUZZ ),
             shas: shas,
             timestamp: timestamp
           };
 
           try {
-            const broken = !this.reportState.lint.passed ||
-                           !this.reportState.tsc.passed ||
-                           !this.reportState.transpile.passed ||
-                           !this.reportState.simFuzz.passed ||
-                           !this.reportState.studioFuzz.passed;
-
-            if ( lastBroken !== broken ) {
-
-              if ( broken ) {
-                winston.info( 'sending broken CT message' );
-                let message = 'Quick CT failing';
-
-                const check = ( result, name ) => {
-                  if ( !result.passed ) {
-                    message += `\n${name}:\n\`\`\`\n${result.message}\n\`\`\`\n`;
-                  }
-                };
+            const broken = !this.testingState.lint.passed ||
+                           !this.testingState.tsc.passed ||
+                           !this.testingState.transpile.passed ||
+                           !this.testingState.simFuzz.passed ||
+                           !this.testingState.studioFuzz.passed;
 
-                check( this.reportState.lint, 'lint' );
-                check( this.reportState.tsc, 'tsc' );
-                check( this.reportState.transpile, 'transpile' );
-                check( this.reportState.simFuzz, 'simFuzz' );
-                check( this.reportState.studioFuzz, 'studioFuzz' );
-                winston.info( message );
-
-                await sendSlackMessage( message );
-              }
-              else {
-                winston.info( 'sending passing CT message' );
-                await sendSlackMessage( 'Quick CT passing' );
-              }
+            await this.reportErrorStatus( broken, lastBroken );
 
-              lastBroken = broken;
-            }
+            lastBroken = broken;
           }
           catch( e ) {
             winston.info( `Slack error: ${e}` );
@@ -253,7 +241,7 @@
 
         if ( requestInfo.pathname === '/quickserver/status' ) {
           res.writeHead( 200, jsonHeaders );
-          res.end( JSON.stringify( this.reportState, null, 2 ) );
+          res.end( JSON.stringify( this.testingState, null, 2 ) );
         }
       }
       catch( e ) {
@@ -263,6 +251,92 @@
 
     winston.info( `QuickServer: running on port ${port}` );
   }
+
+  /**
+   * Checks the error messages and reports the current status to the logs and Slack.
+   *
+   * @param {boolean} broken
+   * @param {boolean} lastBroken
+   * @private
+   */
+  async reportErrorStatus( broken, lastBroken ) {
+    if ( lastBroken !== broken && !broken ) {
+      this.errorMessages.length = 0;
+      winston.info( 'broken -> passing, sending CTQ passing message to Slack' );
+      await sendSlackMessage( 'CTQ passing', this.isTestMode );
+    }
+    else if ( broken ) {
+      let message = '';
+      let previousFailureFound = false;
+
+      const check = result => {
+        if ( !result.passed ) {
+          result.errorMessages.forEach( errorMessage => {
+            if ( !this.errorMessages.includes( errorMessage ) ) {
+              this.errorMessages.push( errorMessage );
+              message += `\n${errorMessage}`;
+            }
+            else {
+              previousFailureFound = true;
+            }
+          } );
+        }
+      };
+
+      check( this.testingState.lint );
+      check( this.testingState.tsc );
+      check( this.testingState.transpile );
+      check( this.testingState.simFuzz );
+      check( this.testingState.studioFuzz );
+
+      if ( message.length > 0 ) {
+
+        if ( previousFailureFound ) {
+          winston.info( 'broken -> more broken, sending additional CTQ failure message to Slack' );
+          message = 'CTQ additional failure:\n```' + message + '```';
+          // TODO: Report number of other, pr-existing failures
+        }
+        else {
+          winston.info( 'passing -> broken, sending CTQ failure message to Slack' );
+          message = 'CTQ failing:\n```' + message + '```';
+        }
+
+        winston.info( message );
+        await sendSlackMessage( message, this.isTestMode );
+      }
+      else {
+        assert && assert( previousFailureFound, 'Previous failures must exist if no new errors are found and CTQ is still broken' );
+        winston.info( 'broken -> broken, no new failures to report to Slack' );
+      }
+    }
+    else {
+      winston.info( 'passing -> passing' );
+    }
+  }
+
+  /**
+   * Parses individual errors out of a collection of the same type of error, e.g. lint
+   *
+   * @param {string} message
+   * @param {string} name
+   * @returns {string[]}
+   * @private
+   */
+  parseErrors( message, name ) {
+    const errorMessages = [];
+
+    // TODO: parse out individual errors from lint and tsc messages, create one line error messages per error
+    // if ( name === ctqType.LINT ) {
+    //   return [];
+    // }
+    // else if ( name === ctqType.TSC ) {
+    //   return [];
+    // }
+    // else {
+    errorMessages.push( `${name}: ${message}` );
+    // }
+    return errorMessages;
+  }
 }
 
 module.exports = QuickServer;
Index: js/server/sendSlackMessage.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/server/sendSlackMessage.js b/js/server/sendSlackMessage.js
--- a/js/server/sendSlackMessage.js	(revision e11b7af15b8976ab74a2db6f66a8140128fa4616)
+++ b/js/server/sendSlackMessage.js	(date 1653531229880)
@@ -12,7 +12,8 @@
 
 let app;
 
-module.exports = async messageText => {
+module.exports = async ( messageText, testing = false ) => {
+
   // Lazily initialized so we don't force the App creation when this file is required
   if ( !app ) {
     app = new App( {
@@ -21,9 +22,18 @@
     } );
   }
 
-  await app.client.chat.postMessage( {
-    // #continuous-testing chat ID
-    channel: 'C03D6JMPAHF',
-    text: messageText
-  } );
+  if ( testing ) {
+    await app.client.chat.postMessage( {
+      // #ctq-testing chat ID
+      channel: 'C03G9D6NY07',
+      text: messageText
+    } );
+  }
+  else {
+    await app.client.chat.postMessage( {
+      // #continuous-testing chat ID
+      channel: 'C03D6JMPAHF',
+      text: messageText
+    } );
+  }
 };

@chrisklus chrisklus changed the title Proposal to filter out false positives and report all new lint + tsc errors Report all new CTQ errors on Slack May 26, 2022
chrisklus added a commit that referenced this issue Jun 11, 2022
@chrisklus
Copy link
Contributor Author

I got these working in a test Slack channel, then pushed my changes. Not sure which aqua repo on bayes needs to be pulled, but I asked @jonathanolson to help me out when we return on Monday.

If we like how this is working, I'll finish up cleanup + comments and close or assign for review.

chrisklus added a commit that referenced this issue Jun 13, 2022
chrisklus added a commit that referenced this issue Jun 13, 2022
chrisklus added a commit that referenced this issue Jun 13, 2022
chrisklus added a commit that referenced this issue Jun 13, 2022
chrisklus added a commit to phetsims/number-play that referenced this issue Jun 13, 2022
chrisklus added a commit to phetsims/number-play that referenced this issue Jun 13, 2022
chrisklus added a commit to phetsims/number-play that referenced this issue Jun 13, 2022
@chrisklus
Copy link
Contributor Author

@pixelzoom reported a problem in #141 that would have been prevented if this code was in TypeScript, so I'll do the conversion as part of cleanup for this issue.

@zepumph
Copy link
Member

zepumph commented Jun 15, 2022

I believe this is working as it is intended, but I thought I'd post a situation in which this change seems to not be an improvement. This morning @AgustinVallejo and I were in the middle of committing to ~20 repos and 200 files, there were merge conflicts so all in all it took about 30 minutes to get things committed. Here is what the CT slack channel said:

[CT Notifier](https://app.slack.com/team/U03CBH8DXE1)
APP  [11:03](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655312596684199)
CTQ failing:
tsc: ../../../quadrilateral/js/quadrilateral/view/CalibrationContentNode.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../quadrilateral/js/quadrilateral/view/QuadrilateralModelValuePanel.ts(20,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../quadrilateral/js/quadrilateral/view/QuadrilateralPreferencesNode.ts(22,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../quadrilateral/js/quadrilateral/view/VertexDragAreaNode.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?

[1 reply](https://app.slack.com/client/T5QBX4DGB/C03D6JMPAHF/thread/G6E0RA1T2-1655315381.420089)
Today at 11:03View thread

[CT Notifier](https://app.slack.com/team/U03CBH8DXE1)
APP  [11:05](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655312731219599)
CTQ additional failures:

tsc: ../../../axon/js/BooleanProperty.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../axon/js/DerivedProperty.ts(21,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../axon/js/Emitter.ts(13,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../axon/js/EnumerationProperty.ts(15,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../axon/js/NumberProperty.ts(12,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../axon/js/StringEnumerationProperty.ts(15,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../axon/js/StringProperty.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../build-a-nucleus/js/common/model/BANModel.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../build-a-nucleus/js/common/view/BANScreenView.ts(22,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../build-a-nucleus/js/decay/DecayScreen.ts(17,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../build-a-nucleus/js/decay/model/DecayModel.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../build-a-nucleus/js/decay/view/DecayScreenView.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/CAVScreen.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/model/CAVModel.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/model/CardModel.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/model/SoccerModel.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
11:05
tsc: ../../../center-and-variability/js/common/model/SoccerPlayer.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/CAVPlotNode.ts(14,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/CardNode.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/CardNodeContainer.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/DragIndicatorArrowNode.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/KickButtonGroup.ts(14,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/MeanOrMedianScreenView.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/SoccerPlayerNode.ts(60,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/common/view/ValueReadoutsNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/lab/LabScreen.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/lab/model/LabModel.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/lab/view/LabScreenView.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/mean-and-median/MeanAndMedianScreen.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/mean-and-median/model/MeanAndMedianModel.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
11:05
tsc: ../../../center-and-variability/js/mean-and-median/view/MeanAndMedianScreenView.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/median/MedianScreen.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/median/model/MedianModel.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/median/view/MedianScreenView.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/variability/VariabilityScreen.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/variability/model/VariabilityModel.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../center-and-variability/js/variability/view/VariabilityScreenView.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../circuit-construction-kit-common/js/model/ACVoltage.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../circuit-construction-kit-common/js/model/Battery.ts(13,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../circuit-construction-kit-common/js/model/DynamicCircuitElement.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../circuit-construction-kit-common/js/model/SeriesAmmeter.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?```
4 other pre-existing errors remain.

CT Notifier
APP 11:13
CTQ additional failures:

tsc: ../../../geometric-optics/js/common/model/GOScene.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/model/Guide.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/model/Guides.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/model/LightSpot.ts(24,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/model/ProjectionScreen.ts(22,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/model/SecondPoint.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/model/tools/GOTool.ts(17,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/Add2FPointsCheckbox.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/DiameterControl.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/FocalLengthControl.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/FocalLengthModelTypeControl.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/FocalLengthModelTypeRadioButtonGroup.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/FocalPointNode.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/GuideNode.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/GuidesNode.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:13](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313193079589)
tsc: ../../../geometric-optics/js/common/view/IndexOfRefractionControl.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/LightPropagationToggleButton.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/ObjectDragModeToggleButton.ts(23,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticSurfaceTypeRadioButtonGroup.ts(20,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticalAxisForegroundNode.ts(26,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticalAxisInFrontOfProjectionScreenNode.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticalAxisNode.ts(20,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticalImageNode.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticalObjectChoiceComboBox.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/OpticalObjectNode.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/ProjectionScreenNode.ts(27,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/RadiusOfCurvatureControl.ts(20,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/RaysRadioButtonGroup.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/RealLightRaysForegroundNode.ts(23,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:13](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313193099619)
tsc: ../../../geometric-optics/js/common/view/SecondPointNode.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/TwoFPointNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/labels/OpticLabelNode.ts(13,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/tools/GORulerNode.ts(33,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/tools/GOToolDragListener.ts(15,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/common/view/tools/GOToolboxNode.ts(15,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/lens/model/Lens.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/lens/model/LensModel.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/lens/view/LensNode.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/lens/view/LensScreenView.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/mirror/view/MirrorNode.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../geometric-optics/js/mirror/view/MirrorScreenView.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../gravity-and-orbits/js/common/view/CheckboxPanel.ts(31,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../gravity-and-orbits/js/common/view/GravityAndOrbitsTimeControlNode.ts(24,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../gravity-and-orbits/js/common/view/MassControlPanel.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:13](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313193123159)
tsc: ../../../gravity-and-orbits/js/common/view/SceneSelectionControls.ts(25,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../gravity-and-orbits/js/common/view/ZoomControl.ts(24,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?```
45 other pre-existing errors remain.
[11:14](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313295270419)
CTQ additional failures:

tsc: ../../../joist/js/AboutDialog.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/HomeButton.ts(14,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/KeyboardHelpButton.ts(12,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/KeyboardHelpDialog.ts(10,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/NavigationBarAudioToggleButton.ts(20,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/OptionsDialog.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/QueryParametersWarningDialog.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/UpdateDialog.ts(10,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/preferences/NavigationBarPreferencesButton.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../joist/js/toolbar/VoicingToolbarItem.ts(22,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/common/MeanShareAndBalanceScreen.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/common/model/MeanShareAndBalanceModel.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/common/view/MeanShareAndBalanceScreenView.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/IntroScreen.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/model/IntroModel.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
11:14
tsc: ../../../mean-share-and-balance/js/intro/view/IntroScreenView.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/view/PipeNode.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/view/PredictMeanNode.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/view/TickMarksNode.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/view/WaterCup2DNode.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/view/WaterCup3DNode.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../mean-share-and-balance/js/intro/view/WaterLevelTriangleNode.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/BohrModel.ts(30,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/ClassicalSolarSystemModel.ts(28,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/DeBroglieModel.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/Electron.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/ExperimentModel.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/Light.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/MOTHAModel.ts(14,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
11:14
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/Neutron.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/PlumPuddingModel.ts(34,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/Proton.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/model/SchrodingerModel.ts(42,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/BilliardBallNode.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/BoxOfHydrogenNode.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/ElectronNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/ExperimentPredictionSwitch.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/HydrogenAtomNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/LegendAccordionBox.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/LightModeRadioButtonGroup.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/MOTHAOptionsNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/MOTHAScreen.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/MOTHATimeControlNode.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
11:14
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/MOTHAViewProperties.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/MonochromaticControls.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/NeutronNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/PhotonNode.ts(20,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/PlumPuddingNode.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/PredictionPanel.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/ProtonNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/ShowAbsorptionWavelengthsCheckbox.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/SnapshotNode.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/SnapshotsDialog.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/SpectrometerAccordionBox.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/TinyBox.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/ViewSnapshotsButton.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/common/view/ZoomedInBoxNode.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
11:14
tsc: ../../../models-of-the-hydrogen-atom/js/energylevels/EnergyLevelsScreen.ts(10,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/energylevels/model/EnergyLevelsModel.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/energylevels/view/ElectronEnergyLevelAccordionBox.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/energylevels/view/EnergyLevelsScreenView.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/energylevels/view/EnergyLevelsViewProperties.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/spectra/SpectraScreen.ts(10,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/spectra/model/SpectraModel.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/spectra/view/SpectraScreenView.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/spectra/view/SpectraViewProperties.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../models-of-the-hydrogen-atom/js/spectra/view/SpectraZoomedInBoxNode.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?```
91 other pre-existing errors remain.
11:17
CTQ additional failure:
tsc: ../../../phet-core/js/optionize.ts(20,29): error TS2792: Cannot find module './types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
158 other pre-existing errors remain.
11:20
CTQ additional failures:

tsc: ../../../density-buoyancy-common/js/buoyancy/model/Bottle.ts(79,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/buoyancy/model/BuoyancyIntroModel.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/buoyancy/model/BuoyancyShapesModel.ts(20,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/common/model/Cone.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/common/model/Cuboid.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/common/model/Ellipsoid.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/common/model/HorizontalCylinder.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/common/model/Pool.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/common/model/VerticalCylinder.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/density/model/DensityCompareModel.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/density/model/DensityMysteryModel.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../density-buoyancy-common/js/density/view/DensityTableNode.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/common/model/GreenhouseEffectModel.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/common/view/AtmosphericPhotonsSoundGenerator.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/common/view/ConcentrationControlPanel.ts(355,23): error TS7006: Parameter 'n' implicitly has an 'any' type.
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313619968879)
tsc: ../../../greenhouse-effect/js/common/view/GasConcentrationAlerter.ts(29,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/layer-model/view/IrAbsorbanceSoundPlayer.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/layer-model/view/NumberOfLayersSoundPlayer.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/layer-model/view/SolarIntensitySoundPlayer.ts(14,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../greenhouse-effect/js/layer-model/view/SurfaceAlbedoSoundPlayer.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/ArrowsCheckboxNode.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/BodyNode.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/MassesControlPanel.ts(19,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/MySolarSystemCheckbox.ts(13,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/MySolarSystemGridNode.ts(21,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/MySolarSystemSlider.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/OrbitalInformation.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/VectorNode.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/common/view/VisibilityInformation.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/intro/model/IntroModel.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620000709)
tsc: ../../../my-solar-system/js/intro/view/IntroScreenView.ts(14,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/keplers-laws/model/KeplersLawsModel.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/keplers-laws/view/KeplersLawsOrbitalInformation.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/keplers-laws/view/KeplersLawsSliders.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/keplers-laws/view/LawButton.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/lab/model/LabModel.ts(15,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(18,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(66,70): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(67,74): error TS2322: Type '{ x: number; y: number; width: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(68,74): error TS2322: Type '{ x: number; y: number; width: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(69,67): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(70,67): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(71,68): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(72,68): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(78,76): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620021729)
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(81,50): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(84,50): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(87,50): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(90,50): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/FullDataPanel.ts(93,50): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/LabScreenView.ts(45,26): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/LabScreenView.ts(49,96): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../my-solar-system/js/lab/view/LabScreenView.ts(50,86): error TS2322: Type '{ x: number; y: number; }' is not assignable to type 'ILayoutOptions'.
  Object literal may only specify known properties, and 'x' does not exist in type 'ILayoutOptions'.
tsc: ../../../number-play/js/common/view/OnesCreatorPanel.ts(23,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../ratio-and-proportion/js/common/view/RatioHandNode.ts(31,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../ratio-and-proportion/js/common/view/TickMarkViewRadioButtonGroup.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../ratio-and-proportion/js/common/view/sound/InProportionSoundGenerator.ts(20,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../ratio-and-proportion/js/common/view/sound/MovingInProportionSoundGenerator.ts(11,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../ratio-and-proportion/js/common/view/sound/StaccatoFrequencySoundGenerator.ts(42,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620062989)
tsc: ../../../ratio-and-proportion/js/create/view/MyChallengeAccordionBox.ts(31,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/GradientRectangle.ts(32,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/LightBulbNode.ts(14,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/LockNode.ts(10,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/OopsDialog.ts(13,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/PaperAirplaneNode.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/PointerCoordinatesNode.ts(14,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/WireNode.ts(14,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/bucket/BucketHole.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/EyeToggleButton.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/PlayPauseButton.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/PlayStopButton.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/RestartButton.ts(13,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/SoundToggleButton.ts(15,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/StarButton.ts(10,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/StepBackwardButton.ts(10,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620078129)
tsc: ../../../scenery-phet/js/buttons/StepForwardButton.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery-phet/js/buttons/TimerToggleButton.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/input/Input.ts(166,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/constraints/NodeLayoutConstraint.ts(17,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/AlignBox.ts(33,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/AlignPropertyBox.ts(12,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/Divider.ts(11,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/HBox.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/HDivider.ts(9,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/LayoutBox.ts(16,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/VBox.ts(10,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/layout/nodes/VDivider.ts(9,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/nodes/Image.ts(19,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/nodes/Node.ts(175,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/nodes/Path.ts(15,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/nodes/RichText.ts(74,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620096469)
tsc: ../../../scenery/js/util/ColorProperty.ts(5,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/util/ProfileColorProperty.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../scenery/js/util/TransformTracker.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/AquaRadioButtonGroup.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/BooleanToggleNode.ts(15,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/HSeparator.ts(10,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/HSlider.ts(16,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/HorizontalAquaRadioButtonGroup.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/OnOffSwitch.ts(12,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/VSeparator.ts(10,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/VSlider.ts(16,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/VerticalAquaRadioButtonGroup.ts(11,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/BooleanRectangularStickyToggleButton.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/BooleanRectangularToggleButton.ts(13,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/BooleanRoundStickyToggleButton.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/BooleanRoundToggleButton.ts(13,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620114699)
tsc: ../../../sun/js/buttons/MomentaryButtonModel.ts(11,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/PushButtonInteractionStateProperty.ts(10,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/RectangularMomentaryButton.ts(16,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/RectangularStickyToggleButton.ts(12,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/RoundMomentaryButton.ts(15,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/StickyToggleButtonModel.ts(16,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/buttons/ToggleButtonModel.ts(13,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/demo/ButtonsScreenView.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/demo/ComponentsScreenView.ts(21,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/demo/DialogsScreenView.ts(18,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../sun/js/demo/LayoutScreenView.ts(28,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tambo/js/demo/testing/view/AmplitudeModulatorDemoNode.ts(12,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tambo/js/demo/testing/view/ContinuousPropertySoundGeneratorTestNode.ts(27,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tambo/js/demo/testing/view/RemoveAndDisposeSoundGeneratorsTestPanel.ts(14,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tambo/js/demo/testing/view/SoundClipChordTestNode.ts(17,29): error TS2792: Cannot find module '../../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tambo/js/demo/ui-components/view/SliderSoundTestNode.ts(39,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
[11:20](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655313620131639)
tsc: ../../../tambo/js/demo/ui-components/view/SliderSoundTestNode.ts(48,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../tambo/js/demo/ui-components/view/SliderSoundTestNode.ts(105,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../tambo/js/sound-generators/CompositeSoundClip.ts(14,29): error TS2792: Cannot find module '../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tandem/js/PhetioAction.ts(26,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../tandem/js/PhetioGroup.ts(21,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../utterance-queue/js/ActivationUtterance.ts(14,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../utterance-queue/js/AriaLiveAnnouncer.ts(33,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../utterance-queue/js/SpeechSynthesisAnnouncer.ts(21,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../utterance-queue/js/ValueChangeUtterance.ts(15,29): error TS2792: Cannot find module '../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
tsc: ../../../vegas/js/demo/FiniteChallengesScreenView.ts(79,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../vegas/js/demo/FiniteChallengesScreenView.ts(88,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../vegas/js/demo/FiniteChallengesScreenView.ts(97,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../vegas/js/demo/FiniteChallengesScreenView.ts(108,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../vegas/js/demo/FiniteChallengesScreenView.ts(117,27): error TS7006: Parameter 'value' implicitly has an 'any' type.
tsc: ../../../wilder/js/wilder/model/WilderOptionsPatterns.ts(72,29): error TS2792: Cannot find module '../../../../phet-core/js/types/EmptyObjectType.js'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?```
159 other pre-existing errors remain.

[CT Notifier](https://app.slack.com/team/U03CBH8DXE1)
APP  [11:30](https://phetsims.slack.com/archives/C03D6JMPAHF/p1655314201076809)
CTQ passing

I am not recommending changes necessarily, but this is all one problem. If CT should remain as loud as we want it to be, how should we make it so that all of these post as a single error? Isn't that ideal?

@zepumph zepumph removed their assignment Jun 15, 2022
@chrisklus chrisklus mentioned this issue Jul 6, 2022
4 tasks
@chrisklus
Copy link
Contributor Author

Thanks @zepumph - agreed that case was not ideal. I moved this item to a list of remaining work to investigate in #152, and am going to close this issue since the refactor to report all new errors is complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants