{
  "$schema": "https://turborepo.com/schema.json",
  "ui": "tui",
  // The following are used by tools such as pnpm, gh actions to setup pnpm, etc.
  "globalPassThroughEnv": [
    "Path",
    "APPDATA",
    "LOCALAPPDATA",
    "TMPDIR",
    "HOME",
    "TMP",
    "USERPROFILE",
    "SCCACHE_GHA_ENABLED",
    "SCCACHE_BUCKET",
    "SCCACHE_REGION",
    "AWS_ACCESS_KEY_ID",
    "AWS_SECRET_ACCESS_KEY",
    "RUSTC_WRAPPER",
    "CARGO_INCREMENTAL",
    "ACTIONS_CACHE_URL",
    "ACTIONS_RUNTIME_TOKEN"
  ],
  // This is probably overkill, but we do things per-platform often enough that we should segment
  // everything by OS and RUNNER_OS. This will segment between GH actions and everything else for now.
  "globalEnv": ["OS", "RUNNER_OS"],
  "tasks": {
    "test": {
      "outputs": ["coverage/**/*"],

      "env": ["NODE_VERSION"],

      // ^build is generically set here, we haven't fully enumerated which workspaces
      // actually need to build before running tests.
      "dependsOn": ["^build"]
    },

    // run prettier check before eslint
    "lint": {
      "dependsOn": ["lint:prettier", "^build"]
    },

    // root lint task runs toml check
    "//#lint": {
      "dependsOn": ["//#check:toml"]
    },

    // run lint:prettier in all workspaces
    "lint:prettier": {
      "inputs": [
        "**/*.4DForm",
        "**/*.4DProject",
        "**/*.JSON-tmLanguage",
        "**/*._js",
        "**/*.avsc",
        "**/*.bones",
        "**/*.cjs",
        "**/*.code-snippets",
        "**/*.component.html",
        "**/*.css",
        "**/*.cts",
        "**/*.es",
        "**/*.es6",
        "**/*.frag",
        "**/*.geojson",
        "**/*.gltf",
        "**/*.gql",
        "**/*.graphql",
        "**/*.graphqls",
        "**/*.gs",
        "**/*.handlebars",
        "**/*.har",
        "**/*.hbs",
        "**/*.hta",
        "**/*.htm",
        "**/*.html",
        "**/*.html.hl",
        "**/*.ice",
        "**/*.importmap",
        "**/*.inc",
        "**/*.jake",
        "**/*.javascript",
        "**/*.js",
        "**/*.js.flow",
        "**/*.jsb",
        "**/*.jscad",
        "**/*.jsfl",
        "**/*.jslib",
        "**/*.jsm",
        "**/*.json",
        "**/*.json5",
        "**/*.jsonc",
        "**/*.jspre",
        "**/*.jss",
        "**/*.jsx",
        "**/*.less",
        "**/*.livemd",
        "**/*.markdown",
        "**/*.mcmeta",
        "**/*.md",
        "**/*.mdown",
        "**/*.mdwn",
        "**/*.mdx",
        "**/*.mir",
        "**/*.mjml",
        "**/*.mjs",
        "**/*.mkd",
        "**/*.mkdn",
        "**/*.mkdown",
        "**/*.mts",
        "**/*.njs",
        "**/*.pac",
        "**/*.pcss",
        "**/*.postcss",
        "**/*.reek",
        "**/*.ronn",
        "**/*.rviz",
        "**/*.scd",
        "**/*.scss",
        "**/*.sjs",
        "**/*.ssjs",
        "**/*.sublime-build",
        "**/*.sublime-commands",
        "**/*.sublime-completions",
        "**/*.sublime-keymap",
        "**/*.sublime-macro",
        "**/*.sublime-menu",
        "**/*.sublime-mousemap",
        "**/*.sublime-project",
        "**/*.sublime-settings",
        "**/*.sublime-syntax",
        "**/*.sublime-theme",
        "**/*.sublime-workspace",
        "**/*.sublime_metrics",
        "**/*.sublime_session",
        "**/*.syntax",
        "**/*.tfstate",
        "**/*.tfstate.backup",
        "**/*.topojson",
        "**/*.ts",
        "**/*.tsx",
        "**/*.vue",
        "**/*.webapp",
        "**/*.webmanifest",
        "**/*.workbook",
        "**/*.wxs",
        "**/*.wxss",
        "**/*.xht",
        "**/*.xhtml",
        "**/*.xsjs",
        "**/*.xsjslib",
        "**/*.yaml",
        "**/*.yaml-tmlanguage",
        "**/*.yaml.sed",
        "**/*.yml",
        "**/*.yml.mysql",
        "**/*.yy",
        "**/*.yyp",
        "**/*.arcconfig",
        "**/*.auto-changelog",
        "**/*.babelrc",
        "**/*.c8rc",
        "**/*.clang-format",
        "**/*.clang-tidy",
        "**/*.devcontainer.json",
        "**/*.eslintrc",
        "**/*.eslintrc.json",
        "**/*.gemrc",
        "**/*.htmlhintrc",
        "**/*.imgbotconfig",
        "**/*.jscsrc",
        "**/*.jshintrc",
        "**/*.jslintrc",
        "**/*.lintstagedrc",
        "**/*.nycrc",
        "**/*.prettierrc",
        "**/*.stylelintrc",
        "**/*.swcrc",
        "**/*.tern-config",
        "**/*.tern-project",
        "**/*.watchmanconfig",
        "**/*CITATION.cff",
        "**/*Jakefile",
        "**/*Pipfile.lock",
        "**/*README",
        "**/*api-extractor.json",
        "**/*composer.json",
        "**/*composer.lock",
        "**/*contents.lr",
        "**/*devcontainer.json",
        "**/*glide.lock",
        "**/*jsconfig.json",
        "**/*language-configuration.json",
        "**/*mcmod.info",
        "**/*package-lock.json",
        "**/*package.json",
        "**/*tsconfig.json",
        "**/*tslint.json"
      ]
    },
    "//#check:toml": {},
    "check-types": {
      "dependsOn": ["^build"]
    },
    "//#build:ts": {
      "outputs": ["packages/**/dist"]
    },
    "build:ts": {
      "outputs": ["dist/**/*"]
    },
    "build": {
      "outputs": ["dist/**/*", ".next/**/*"],
      "dependsOn": ["^build"]
    },
    "package-checks": {
      "dependsOn": ["package:types", "package:lint"]
    },
    "package:types": {},
    "package:lint": {
      "dependsOn": ["build"]
    },
    // This is a synthetic tasks that lets us pull in other workspaces as dependencies
    // So changes in internal workspaces that we depend on, will trigger this task.
    "topo": {
      "dependsOn": ["^topo"]
    }
  }
}
