{
  "tasks": {
    "build": {
      "name": "build",
      "description": "Full release build",
      "steps": [
        {
          "spawn": "default"
        },
        {
          "spawn": "pre-compile"
        },
        {
          "spawn": "compile"
        },
        {
          "spawn": "post-compile"
        },
        {
          "spawn": "test"
        },
        {
          "spawn": "package"
        }
      ]
    },
    "bundle": {
      "name": "bundle",
      "description": "Prepare assets"
    },
    "clobber": {
      "name": "clobber",
      "description": "hard resets to HEAD of origin and cleans the local repo",
      "env": {
        "BRANCH": "$(git branch --show-current)"
      },
      "steps": [
        {
          "exec": "git checkout -b scratch",
          "name": "save current HEAD in \"scratch\" branch"
        },
        {
          "exec": "git checkout $BRANCH"
        },
        {
          "exec": "git fetch origin",
          "name": "fetch latest changes from origin"
        },
        {
          "exec": "git reset --hard origin/$BRANCH",
          "name": "hard reset to origin commit"
        },
        {
          "exec": "git clean -fdx",
          "name": "clean all untracked files"
        },
        {
          "say": "ready to rock! (unpushed commits are under the \"scratch\" branch)"
        }
      ],
      "condition": "git diff --exit-code > /dev/null"
    },
    "compile": {
      "name": "compile",
      "description": "Only compile"
    },
    "default": {
      "name": "default",
      "description": "Synthesize project files",
      "steps": [
        {
          "exec": "node .projenrc.js"
        }
      ]
    },
    "deploy": {
      "name": "deploy",
      "description": "Deploys your CDK app to the AWS cloud",
      "steps": [
        {
          "exec": "cdk deploy",
          "receiveArgs": true
        }
      ]
    },
    "destroy": {
      "name": "destroy",
      "description": "Destroys your cdk app in the AWS cloud",
      "steps": [
        {
          "exec": "cdk destroy",
          "receiveArgs": true
        }
      ]
    },
    "diff": {
      "name": "diff",
      "description": "Diffs the currently deployed app against your code",
      "steps": [
        {
          "exec": "cdk diff"
        }
      ]
    },
    "eject": {
      "name": "eject",
      "description": "Remove projen from the project",
      "env": {
        "PROJEN_EJECTING": "true"
      },
      "steps": [
        {
          "spawn": "default"
        }
      ]
    },
    "eslint": {
      "name": "eslint",
      "description": "Runs eslint against the codebase",
      "steps": [
        {
          "exec": "eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test build-tools .projenrc.js"
        }
      ]
    },
    "install": {
      "name": "install",
      "description": "Install project dependencies and update lockfile (non-frozen)",
      "steps": [
        {
          "exec": "yarn install --check-files"
        }
      ]
    },
    "install:ci": {
      "name": "install:ci",
      "description": "Install project dependencies using frozen lockfile",
      "steps": [
        {
          "exec": "yarn install --check-files --frozen-lockfile"
        }
      ]
    },
    "package": {
      "name": "package",
      "description": "Creates the distribution package"
    },
    "post-compile": {
      "name": "post-compile",
      "description": "Runs after successful compilation",
      "steps": [
        {
          "spawn": "synth:silent"
        }
      ]
    },
    "post-upgrade": {
      "name": "post-upgrade",
      "description": "Runs after upgrading dependencies"
    },
    "pre-compile": {
      "name": "pre-compile",
      "description": "Prepare the project for compilation"
    },
    "synth": {
      "name": "synth",
      "description": "Synthesizes your cdk app into cdk.out",
      "steps": [
        {
          "exec": "cdk synth"
        }
      ]
    },
    "synth:silent": {
      "name": "synth:silent",
      "description": "Synthesizes your cdk app into cdk.out and suppresses the template in stdout (part of \"yarn build\")",
      "steps": [
        {
          "exec": "cdk synth -q"
        }
      ]
    },
    "test": {
      "name": "test",
      "description": "Run tests",
      "steps": [
        {
          "exec": "jest --passWithNoTests --updateSnapshot",
          "receiveArgs": true
        },
        {
          "spawn": "eslint"
        }
      ]
    },
    "test:watch": {
      "name": "test:watch",
      "description": "Run jest in watch mode",
      "steps": [
        {
          "exec": "jest --watch"
        }
      ]
    },
    "upgrade": {
      "name": "upgrade",
      "description": "upgrade dependencies",
      "env": {
        "CI": "0"
      },
      "steps": [
        {
          "exec": "yarn upgrade npm-check-updates"
        },
        {
          "exec": "npm-check-updates --dep dev --upgrade --target=minor"
        },
        {
          "exec": "npm-check-updates --dep optional --upgrade --target=minor"
        },
        {
          "exec": "npm-check-updates --dep peer --upgrade --target=minor"
        },
        {
          "exec": "npm-check-updates --dep prod --upgrade --target=minor"
        },
        {
          "exec": "npm-check-updates --dep bundle --upgrade --target=minor"
        },
        {
          "exec": "yarn install --check-files"
        },
        {
          "exec": "yarn upgrade"
        },
        {
          "exec": "npx projen"
        },
        {
          "spawn": "post-upgrade"
        }
      ]
    },
    "watch": {
      "name": "watch",
      "description": "Watches changes in your source code and rebuilds and deploys to the current account",
      "steps": [
        {
          "exec": "cdk deploy --hotswap"
        },
        {
          "exec": "cdk watch"
        }
      ]
    }
  },
  "env": {
    "PATH": "$(npx -c \"node -e \\\"console.log(process.env.PATH)\\\"\")"
  },
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
}
