code: /* eslint-disable
      handle-callback-err,
      no-unused-vars,
  */
  // TODO: This file was created by bulk-decaffeinate.
  // Fix any style issues and re-enable lint.
  /*
   * decaffeinate suggestions:
   * DS101: Remove unnecessary use of Array.from
   * DS102: Remove unnecessary code created because of implicit returns
   * DS207: Consider shorter variations of null checks
   * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
   */
  let TikzManager
  const fs = require('fs')
  const Path = require('path')
  const ResourceWriter = require('./ResourceWriter')
  const SafeReader = require('./SafeReader')
  const logger = require('logger-sharelatex')
  
  // for \tikzexternalize or pstool to work the main file needs to match the
  // jobname.  Since we set the -jobname to output, we have to create a
  // copy of the main file as 'output.tex'.
  
  module.exports = TikzManager = {
    checkMainFile(compileDir, mainFile, resources, callback) {
      // if there's already an output.tex file, we don't want to touch it
      if (callback == null) {
        callback = function (error, needsMainFile) {}
      }
      for (const resource of Array.from(resources)) {
        if (resource.path === 'output.tex') {
          logger.log({ compileDir, mainFile }, 'output.tex already in resources')
          return callback(null, false)
        }
      }
      // if there's no output.tex, see if we are using tikz/pgf or pstool in the main file
      return ResourceWriter.checkPath(compileDir, mainFile, function (
        error,
        path
      ) {
        if (error != null) {
          return callback(error)
        }
        return SafeReader.readFile(path, 65536, 'utf8', function (
          error,
          content
        ) {
          if (error != null) {
            return callback(error)
          }
          const usesTikzExternalize =
            (content != null
              ? content.indexOf('\\tikzexternalize')
              : undefined) >= 0
          const usesPsTool =
            (content != null ? content.indexOf('{pstool}') : undefined) >= 0
          logger.log(
            { compileDir, mainFile, usesTikzExternalize, usesPsTool },
            'checked for packages needing main file as output.tex'
          )
          const needsMainFile = usesTikzExternalize || usesPsTool
          return callback(null, needsMainFile)
        })
      })
    },
  
    injectOutputFile(compileDir, mainFile, callback) {
      if (callback == null) {
        callback = function (error) {}
      }
      return ResourceWriter.checkPath(compileDir, mainFile, function (
        error,
        path
      ) {
        if (error != null) {
          return callback(error)
        }
        return fs.readFile(path, 'utf8', function (error, content) {
          if (error != null) {
            return callback(error)
          }
          logger.log(
            { compileDir, mainFile },
            'copied file to output.tex as project uses packages which require it'
          )
          // use wx flag to ensure that output file does not already exist
          return fs.writeFile(
            Path.join(compileDir, 'output.tex'),
            content,
            { flag: 'wx' },
            callback
          )
        })
      })
    }
  }
  