{
  "$schema": "https://turbo.build/schema.json",
  "extends": ["//"],
  "tasks": {
    // Default overrides
    "fmt": { "with": ["//#fmt:root", "fmt:rust"] },
    "fmt:check": { "with": ["//#fmt:check:root", "fmt:rust:check"] },
    "lint": {
      "dependsOn": ["fmt", "^build", "build:bob", "fmt:rust"],
      "with": ["typecheck", "//#lint:root", "lint:rust"],
    },
    "lint:check": {
      "dependsOn": ["^build", "build:bob"],
      "with": [
        "fmt:check",
        "typecheck",
        "//#lint:check:root",
        "lint:rust",
        "lint:rust:check",
        "fmt:rust:check",
      ],
    },
    "build": {
      "dependsOn": ["build:bob"],
    },
    "typecheck": {
      "dependsOn": ["build:native"],
    },

    // Special tasks
    "lint:rust": {},
    "lint:rust:check": {},
    "fmt:rust": {},
    "fmt:rust:check": {},
    "build:bob": {
      "dependsOn": ["build:native"],
      "inputs": ["src/**"],
      "outputs": ["lib/**"],
    },
    "build:native": {},
    "build:android": {
      "inputs": ["rust/**", "!rust/target"],
      "outputs": [
        "android/**",
        "cpp/**",
        "src/generated/**",
        "src/index.ts",
        "src/NativeReactNativeUniffi*.ts",
      ],
    },
    "build:ios": {
      "inputs": ["rust/**", "!rust/target"],
      "outputs": [
        "ios/**",
        "cpp/**",
        "src/generated/**",
        "src/index.ts",
        "src/NativeReactNativeUniffi*.ts",
      ],
    },
  },
}
