/**
 * This configuration file manages Rush's build cache feature.
 * More documentation is available on the Rush website: https://rushjs.io
 */
{
  "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/build-cache.schema.json",

  /**
   * (Required) EXPERIMENTAL - Set this to true to enable the build cache feature.
   *
   * See https://rushjs.io/pages/maintainer/build_cache/ for details about this experimental feature.
   */
  "buildCacheEnabled": true,

  /**
   * (Required) Choose where project build outputs will be cached.
   *
   * Possible values: "local-only", "azure-blob-storage", "amazon-s3"
   */
  "cacheProvider": "local-only",

  /**
   * Setting this property overrides the cache entry ID.  If this property is set, it must contain
   * a [hash] token.
   *
   * Other available tokens:
   *  - [projectName]
   *  - [projectName:normalize]
   *  - [phaseName]
   *  - [phaseName:normalize]
   *  - [phaseName:trimPrefix]
   */
  // "cacheEntryNamePattern": "[projectName:normalize]-[phaseName:normalize]-[hash]"

  /**
   * Use this configuration with "cacheProvider"="azure-blob-storage"
   */
  "azureBlobStorageConfiguration": {
    /**
     * (Required) The name of the the Azure storage account to use for build cache.
     */
    // "storageAccountName": "example",

    /**
     * (Required) The name of the container in the Azure storage account to use for build cache.
     */
    // "storageContainerName": "my-container",

    /**
     * The Azure environment the storage account exists in. Defaults to AzurePublicCloud.
     *
     * Possible values: "AzurePublicCloud", "AzureChina", "AzureGermany", "AzureGovernment"
     */
    // "azureEnvironment": "AzurePublicCloud",

    /**
     * An optional prefix for cache item blob names.
     */
    // "blobPrefix": "my-prefix",

    /**
     * If set to true, allow writing to the cache. Defaults to false.
     */
    // "isCacheWriteAllowed": true
  },

  /**
   * Use this configuration with "cacheProvider"="amazon-s3"
   */
  "amazonS3Configuration": {
    /**
     * (Required unless s3Endpoint is specified) The name of the bucket to use for build cache.
     * Example: "my-bucket"
     */
    // "s3Bucket": "my-bucket",

    /**
     * (Required unless s3Bucket is specified) The Amazon S3 endpoint of the bucket to use for build cache.
     * This should not include any path; use the s3Prefix to set the path.
     * Examples: "my-bucket.s3.us-east-2.amazonaws.com" or "http://localhost:9000"
     */
    // "s3Endpoint": "https://my-bucket.s3.us-east-2.amazonaws.com",

    /**
     * (Required) The Amazon S3 region of the bucket to use for build cache.
     * Example: "us-east-1"
     */
    // "s3Region": "us-east-1",

    /**
     * An optional prefix ("folder") for cache items. It should not start with "/".
     */
    // "s3Prefix": "my-prefix",

    /**
     * If set to true, allow writing to the cache. Defaults to false.
     */
    // "isCacheWriteAllowed": true
  },

  /**
   * Use this configuration with "cacheProvider"="http"
   */
  "httpConfiguration": {
    /**
     * (Required) The URL of the server that stores the caches.
     * Example: "https://build-cacches.example.com/"
     */
    // "url": "https://build-cacches.example.com/",

    /**
     * (Optional) The HTTP method to use when writing to the cache (defaults to PUT).
     * Should be one of PUT, POST, or PATCH.
     * Example: "PUT"
     */
    // "uploadMethod": "PUT",

    /**
     * (Optional) HTTP headers to pass to the cache server.
     * Example: { "X-HTTP-Company-Id": "109283" }
     */
    // "headers": {},

    /**
     * (Optional) Shell command that prints the authorization token needed to communicate with the
     * cache server, and exits with exit code 0. This command will be executed from the root of
     * the monorepo.
     * Example: { "exec": "node", "args": ["common/scripts/auth.js"] }
     */
    // "tokenHandler": { "exec": "node", "args": ["common/scripts/auth.js"] },

    /**
     * (Optional) Prefix for cache keys.
     * Example: "my-company-"
     */
    // "cacheKeyPrefix": "",

    /**
     * (Optional) If set to true, allow writing to the cache. Defaults to false.
     */
    // "isCacheWriteAllowed": true
  }
}