buildFileInfo(intoDir, templateVariables, file, commandOptions) {
    if (file.startsWith('_js_') || file.startsWith('_ts_')) {
      let fileInfo = this._super.buildFileInfo.apply(this, arguments);

      if (file.includes('_js_')) {
        if (commandOptions.typescript) {
          return null;
        }

        fileInfo.outputBasePath = fileInfo.outputPath.replace('_js_', '');
        fileInfo.outputPath = fileInfo.outputPath.replace('_js_', '');
        fileInfo.displayPath = fileInfo.outputPath.replace('_js_', '');
        return fileInfo;
      }

      if (file.includes('_ts_')) {
        if (!commandOptions.typescript) {
          return null;
        }

        fileInfo.outputBasePath = fileInfo.outputPath.replace('_ts_', '');
        fileInfo.outputPath = fileInfo.outputPath.replace('_ts_', '');
        fileInfo.displayPath = fileInfo.outputPath.replace('_ts_', '');
        return fileInfo;
      }

      return fileInfo;
    }

    let mappedPath = this.mapFile(file, templateVariables);
    let options = {
      action: 'write',
      outputBasePath: path.normalize(intoDir),
      outputPath: path.join(intoDir, mappedPath),
      displayPath: path.normalize(mappedPath),
      inputPath: this.srcPath(file),
      templateVariables,
      ui: this.ui,
    };

    if (file in replacers) {
      options.replacer = replacers[file].bind(this);
    }

    return new FileInfo(options);
  }
@override

This modification of buildFileInfo allows our differing
input files to output to a single file, depending on the options.
For example:

  for javascript,
    _ts_eslint.config.mjs is deleted
    _js_eslint.config.mjs is renamed to eslint.config.mjs

  for typescript,
    _js_eslint.config.mjs is deleted
    _ts_eslint.config.mjs is renamed to eslint.config.mjs