{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/angular-json/latest.json",
  "title": "Angular CLI Workspace Configuration",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/angular/angular-cli/master/packages/angular/cli/lib/config/workspace-schema.json",
    "sourceSha256": "42e874ab177889f9fc83e889d6e4c5018f9af512dc032b18b9aed3866a644441",
    "fileMatch": [
      "angular.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "version": {
      "$ref": "#/$defs/fileVersion"
    },
    "cli": {
      "$ref": "#/$defs/cliOptions"
    },
    "schematics": {
      "$ref": "#/$defs/schematicOptions"
    },
    "newProjectRoot": {
      "type": "string",
      "description": "Path where new projects will be created."
    },
    "projects": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^(?:@[a-zA-Z0-9._-]+/)?[a-zA-Z0-9._-]+$": {
          "$ref": "#/$defs/project"
        }
      }
    }
  },
  "$defs": {
    "cliOptions": {
      "type": "object",
      "properties": {
        "schematicCollections": {
          "type": "array",
          "description": "The list of schematic collections to use.",
          "items": {
            "type": "string",
            "uniqueItems": true
          }
        },
        "packageManager": {
          "description": "Specify which package manager tool to use.",
          "type": "string",
          "enum": [
            "npm",
            "yarn",
            "pnpm",
            "bun"
          ]
        },
        "warnings": {
          "description": "Control CLI specific console warnings",
          "type": "object",
          "properties": {
            "versionMismatch": {
              "description": "Show a warning when the global version is newer than the local one.",
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "analytics": {
          "type": [
            "boolean",
            "string"
          ],
          "description": "Share pseudonymous usage data with the Angular Team at Google."
        },
        "cache": {
          "description": "Control disk cache.",
          "type": "object",
          "properties": {
            "environment": {
              "description": "Configure in which environment disk cache is enabled.",
              "type": "string",
              "enum": [
                "local",
                "ci",
                "all"
              ]
            },
            "enabled": {
              "description": "Configure whether disk caching is enabled.",
              "type": "boolean"
            },
            "path": {
              "description": "Cache base path.",
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "cliGlobalOptions": {
      "type": "object",
      "properties": {
        "schematicCollections": {
          "type": "array",
          "description": "The list of schematic collections to use.",
          "items": {
            "type": "string",
            "uniqueItems": true
          }
        },
        "packageManager": {
          "description": "Specify which package manager tool to use.",
          "type": "string",
          "enum": [
            "npm",
            "yarn",
            "pnpm",
            "bun"
          ]
        },
        "warnings": {
          "description": "Control CLI specific console warnings",
          "type": "object",
          "properties": {
            "versionMismatch": {
              "description": "Show a warning when the global version is newer than the local one.",
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "analytics": {
          "type": [
            "boolean",
            "string"
          ],
          "description": "Share pseudonymous usage data with the Angular Team at Google."
        },
        "completion": {
          "type": "object",
          "description": "Angular CLI completion settings.",
          "properties": {
            "prompted": {
              "type": "boolean",
              "description": "Whether the user has been prompted to add completion command prompt."
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "schematicOptions": {
      "type": "object",
      "properties": {
        "@schematics/angular:application": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:class": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:component": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:directive": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:enum": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:guard": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:interceptor": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:interface": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:library": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:pipe": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:ng-new": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:resolver": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:service": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        },
        "@schematics/angular:web-worker": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
        }
      },
      "additionalProperties": true
    },
    "fileVersion": {
      "type": "integer",
      "description": "File format version",
      "minimum": 1
    },
    "project": {
      "type": "object",
      "properties": {
        "cli": {
          "schematicCollections": {
            "type": "array",
            "description": "The list of schematic collections to use.",
            "items": {
              "type": "string",
              "uniqueItems": true
            }
          }
        },
        "schematics": {
          "$ref": "#/$defs/schematicOptions"
        },
        "prefix": {
          "type": "string",
          "format": "html-selector",
          "description": "The prefix to apply to generated selectors."
        },
        "root": {
          "type": "string",
          "description": "Root of the project files."
        },
        "i18n": {
          "$ref": "#/$defs/project/$defs/i18n"
        },
        "sourceRoot": {
          "type": "string",
          "description": "The root of the source files, assets and index.html file structure."
        },
        "projectType": {
          "type": "string",
          "description": "Project type.",
          "enum": [
            "application",
            "library"
          ]
        },
        "architect": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/project/$defs/target"
          }
        },
        "targets": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/project/$defs/target"
          }
        }
      },
      "required": [
        "root",
        "projectType"
      ],
      "anyOf": [
        {
          "required": [
            "architect"
          ],
          "not": {
            "required": [
              "targets"
            ]
          }
        },
        {
          "required": [
            "targets"
          ],
          "not": {
            "required": [
              "architect"
            ]
          }
        },
        {
          "not": {
            "required": [
              "targets",
              "architect"
            ]
          }
        }
      ],
      "$defs": {
        "i18n": {
          "description": "Project i18n options",
          "type": "object",
          "properties": {
            "sourceLocale": {
              "oneOf": [
                {
                  "type": "string",
                  "description": "Specifies the source locale of the application.",
                  "default": "en-US",
                  "$comment": "IETF BCP 47 language tag (simplified)",
                  "pattern": "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$"
                },
                {
                  "type": "object",
                  "description": "Localization options to use for the source locale.",
                  "properties": {
                    "code": {
                      "type": "string",
                      "description": "Specifies the locale code of the source locale.",
                      "pattern": "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$"
                    },
                    "baseHref": {
                      "type": "string",
                      "description": "Specifies the HTML base HREF for the locale. Defaults to the locale code if not provided."
                    },
                    "subPath": {
                      "type": "string",
                      "description": "Defines the subpath for accessing this locale. It serves as the HTML base HREF and the directory name for the output. Defaults to the locale code if not specified.",
                      "pattern": "^[\\w-]*$"
                    }
                  },
                  "anyOf": [
                    {
                      "required": [
                        "subPath"
                      ],
                      "not": {
                        "required": [
                          "baseHref"
                        ]
                      }
                    },
                    {
                      "required": [
                        "baseHref"
                      ],
                      "not": {
                        "required": [
                          "subPath"
                        ]
                      }
                    },
                    {
                      "not": {
                        "required": [
                          "baseHref",
                          "subPath"
                        ]
                      }
                    }
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "locales": {
              "type": "object",
              "additionalProperties": false,
              "patternProperties": {
                "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$": {
                  "oneOf": [
                    {
                      "type": "string",
                      "description": "Localization file to use for i18n."
                    },
                    {
                      "type": "array",
                      "description": "Localization files to use for i18n.",
                      "items": {
                        "type": "string",
                        "uniqueItems": true
                      }
                    },
                    {
                      "type": "object",
                      "description": "Localization options to use for the locale.",
                      "properties": {
                        "translation": {
                          "oneOf": [
                            {
                              "type": "string",
                              "description": "Localization file to use for i18n."
                            },
                            {
                              "type": "array",
                              "description": "Localization files to use for i18n.",
                              "items": {
                                "type": "string",
                                "uniqueItems": true
                              }
                            }
                          ]
                        },
                        "baseHref": {
                          "type": "string",
                          "description": "Specifies the HTML base HREF for the locale. Defaults to the locale code if not provided."
                        },
                        "subPath": {
                          "type": "string",
                          "description": "Defines the URL segment for accessing this locale. It serves as the HTML base HREF and the directory name for the output. Defaults to the locale code if not specified.",
                          "pattern": "^[\\w-]*$"
                        }
                      },
                      "anyOf": [
                        {
                          "required": [
                            "subPath"
                          ],
                          "not": {
                            "required": [
                              "baseHref"
                            ]
                          }
                        },
                        {
                          "required": [
                            "baseHref"
                          ],
                          "not": {
                            "required": [
                              "subPath"
                            ]
                          }
                        },
                        {
                          "not": {
                            "required": [
                              "baseHref",
                              "subPath"
                            ]
                          }
                        }
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              }
            }
          },
          "additionalProperties": false
        },
        "target": {
          "oneOf": [
            {
              "$comment": "Extendable target with custom builder",
              "type": "object",
              "properties": {
                "builder": {
                  "type": "string",
                  "description": "The builder used for this package.",
                  "not": {
                    "enum": [
                      "@angular/build:application",
                      "@angular/build:dev-server",
                      "@angular/build:extract-i18n",
                      "@angular/build:karma",
                      "@angular/build:ng-packagr",
                      "@angular/build:unit-test",
                      "@angular-devkit/build-angular:application",
                      "@angular-devkit/build-angular:app-shell",
                      "@angular-devkit/build-angular:browser",
                      "@angular-devkit/build-angular:browser-esbuild",
                      "@angular-devkit/build-angular:dev-server",
                      "@angular-devkit/build-angular:extract-i18n",
                      "@angular-devkit/build-angular:karma",
                      "@angular-devkit/build-angular:ng-packagr",
                      "@angular-devkit/build-angular:prerender",
                      "@angular-devkit/build-angular:server",
                      "@angular-devkit/build-angular:ssr-dev-server"
                    ]
                  }
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "type": "object"
                },
                "configurations": {
                  "type": "object",
                  "description": "A map of alternative target options.",
                  "additionalProperties": {
                    "type": "object"
                  }
                }
              },
              "required": [
                "builder"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular/build:application"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:application"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:app-shell"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:browser"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:browser-esbuild"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular/build:dev-server"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:dev-server"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular/build:extract-i18n"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:extract-i18n"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular/build:unit-test"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular/build:karma"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:karma"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:prerender"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:ssr-dev-server"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:server"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular-devkit/build-angular:ng-packagr"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "builder": {
                  "const": "@angular/build:ng-packagr"
                },
                "defaultConfiguration": {
                  "type": "string",
                  "description": "A default named configuration to use when a target configuration is not provided."
                },
                "options": {
                  "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                },
                "configurations": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "https://catalog.lintel.tools/schemas/schemastore/angular-json/_shared/latest--schema.json"
                  }
                }
              },
              "additionalProperties": false
            }
          ]
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^[a-z]{1,3}-.*": {}
      }
    },
    "global": {
      "type": "object",
      "properties": {
        "$schema": {
          "type": "string"
        },
        "version": {
          "$ref": "#/$defs/fileVersion"
        },
        "cli": {
          "$ref": "#/$defs/cliGlobalOptions"
        },
        "schematics": {
          "$ref": "#/$defs/schematicOptions"
        }
      },
      "required": [
        "version"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "version"
  ]
}
