{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/mason-registry/latest.json",
  "title": "Mason Registry package schema",
  "description": "Schema for package definitions.",
  "x-lintel": {
    "source": "https://github.com/mason-org/registry-schema/releases/latest/download/package.schema.json",
    "sourceSha256": "10b5ec58ee6b30395541f970080a2042d11adf6d239901298376300ecaadb343",
    "fileMatch": [
      "**/packages/*/package.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The package name. MUST be unique within the registry it belongs to."
    },
    "description": {
      "type": "string",
      "description": "The description of the package. Usually sourced upstream."
    },
    "homepage": {
      "type": "string",
      "format": "uri",
      "pattern": "^https?://",
      "description": "A URL to the package's homepage."
    },
    "licenses": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/enums:license"
      }
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/enums:category"
      }
    },
    "deprecation": {
      "$ref": "#/$defs/components:deprecation"
    },
    "source": {
      "$ref": "#/$defs/components:source"
    },
    "schemas": {
      "$ref": "#/$defs/components:schemas"
    },
    "bin": {
      "$ref": "#/$defs/components:bin"
    },
    "share": {
      "$ref": "#/$defs/components:share"
    },
    "opt": {
      "$ref": "#/$defs/components:opt"
    },
    "neovim": {
      "$ref": "#/$defs/components:neovim"
    },
    "ci_skip": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/enums:platform"
          }
        }
      ]
    }
  },
  "additionalProperties": false,
  "$defs": {
    "enums:license": {
      "anyOf": [
        {
          "$ref": "#/$defs/enums:spdx-license"
        },
        {
          "const": "proprietary"
        },
        {
          "type": "string",
          "pattern": "^[a-zA-Z0-9-.:]+\\+?(?: +(?:WITH|AND|OR) +[a-zA-Z0-9-.:]+\\+?)*$",
          "$comment": "For SPDX license expressions that are unfeasible to validate via JSON Schema (e.g. GPL-3.0-only WITH Qt-GPL-exception-1.0)"
        }
      ]
    },
    "enums:spdx-license": {
      "$comment": "SPDX license list; releaseDate=2025-04-11; source=https://raw.githubusercontent.com/spdx/license-list-data/main/json/licenses.json",
      "type": "string",
      "enum": [
        "0BSD",
        "3D-Slicer-1.0",
        "AAL",
        "Abstyles",
        "AdaCore-doc",
        "Adobe-2006",
        "Adobe-Display-PostScript",
        "Adobe-Glyph",
        "Adobe-Utopia",
        "ADSL",
        "AFL-1.1",
        "AFL-1.2",
        "AFL-2.0",
        "AFL-2.1",
        "AFL-3.0",
        "Afmparse",
        "AGPL-1.0",
        "AGPL-1.0-only",
        "AGPL-1.0-or-later",
        "AGPL-3.0",
        "AGPL-3.0-only",
        "AGPL-3.0-or-later",
        "Aladdin",
        "AMD-newlib",
        "AMDPLPA",
        "AML",
        "AML-glslang",
        "AMPAS",
        "ANTLR-PD",
        "ANTLR-PD-fallback",
        "any-OSI",
        "any-OSI-perl-modules",
        "Apache-1.0",
        "Apache-1.1",
        "Apache-2.0",
        "APAFML",
        "APL-1.0",
        "App-s2p",
        "APSL-1.0",
        "APSL-1.1",
        "APSL-1.2",
        "APSL-2.0",
        "Arphic-1999",
        "Artistic-1.0",
        "Artistic-1.0-cl8",
        "Artistic-1.0-Perl",
        "Artistic-2.0",
        "ASWF-Digital-Assets-1.0",
        "ASWF-Digital-Assets-1.1",
        "Baekmuk",
        "Bahyph",
        "Barr",
        "bcrypt-Solar-Designer",
        "Beerware",
        "Bitstream-Charter",
        "Bitstream-Vera",
        "BitTorrent-1.0",
        "BitTorrent-1.1",
        "blessing",
        "BlueOak-1.0.0",
        "Boehm-GC",
        "Boehm-GC-without-fee",
        "Borceux",
        "Brian-Gladman-2-Clause",
        "Brian-Gladman-3-Clause",
        "BSD-1-Clause",
        "BSD-2-Clause",
        "BSD-2-Clause-Darwin",
        "BSD-2-Clause-first-lines",
        "BSD-2-Clause-FreeBSD",
        "BSD-2-Clause-NetBSD",
        "BSD-2-Clause-Patent",
        "BSD-2-Clause-Views",
        "BSD-3-Clause",
        "BSD-3-Clause-acpica",
        "BSD-3-Clause-Attribution",
        "BSD-3-Clause-Clear",
        "BSD-3-Clause-flex",
        "BSD-3-Clause-HP",
        "BSD-3-Clause-LBNL",
        "BSD-3-Clause-Modification",
        "BSD-3-Clause-No-Military-License",
        "BSD-3-Clause-No-Nuclear-License",
        "BSD-3-Clause-No-Nuclear-License-2014",
        "BSD-3-Clause-No-Nuclear-Warranty",
        "BSD-3-Clause-Open-MPI",
        "BSD-3-Clause-Sun",
        "BSD-4-Clause",
        "BSD-4-Clause-Shortened",
        "BSD-4-Clause-UC",
        "BSD-4.3RENO",
        "BSD-4.3TAHOE",
        "BSD-Advertising-Acknowledgement",
        "BSD-Attribution-HPND-disclaimer",
        "BSD-Inferno-Nettverk",
        "BSD-Protection",
        "BSD-Source-beginning-file",
        "BSD-Source-Code",
        "BSD-Systemics",
        "BSD-Systemics-W3Works",
        "BSL-1.0",
        "BUSL-1.1",
        "bzip2-1.0.5",
        "bzip2-1.0.6",
        "C-UDA-1.0",
        "CAL-1.0",
        "CAL-1.0-Combined-Work-Exception",
        "Caldera",
        "Caldera-no-preamble",
        "Catharon",
        "CATOSL-1.1",
        "CC-BY-1.0",
        "CC-BY-2.0",
        "CC-BY-2.5",
        "CC-BY-2.5-AU",
        "CC-BY-3.0",
        "CC-BY-3.0-AT",
        "CC-BY-3.0-AU",
        "CC-BY-3.0-DE",
        "CC-BY-3.0-IGO",
        "CC-BY-3.0-NL",
        "CC-BY-3.0-US",
        "CC-BY-4.0",
        "CC-BY-NC-1.0",
        "CC-BY-NC-2.0",
        "CC-BY-NC-2.5",
        "CC-BY-NC-3.0",
        "CC-BY-NC-3.0-DE",
        "CC-BY-NC-4.0",
        "CC-BY-NC-ND-1.0",
        "CC-BY-NC-ND-2.0",
        "CC-BY-NC-ND-2.5",
        "CC-BY-NC-ND-3.0",
        "CC-BY-NC-ND-3.0-DE",
        "CC-BY-NC-ND-3.0-IGO",
        "CC-BY-NC-ND-4.0",
        "CC-BY-NC-SA-1.0",
        "CC-BY-NC-SA-2.0",
        "CC-BY-NC-SA-2.0-DE",
        "CC-BY-NC-SA-2.0-FR",
        "CC-BY-NC-SA-2.0-UK",
        "CC-BY-NC-SA-2.5",
        "CC-BY-NC-SA-3.0",
        "CC-BY-NC-SA-3.0-DE",
        "CC-BY-NC-SA-3.0-IGO",
        "CC-BY-NC-SA-4.0",
        "CC-BY-ND-1.0",
        "CC-BY-ND-2.0",
        "CC-BY-ND-2.5",
        "CC-BY-ND-3.0",
        "CC-BY-ND-3.0-DE",
        "CC-BY-ND-4.0",
        "CC-BY-SA-1.0",
        "CC-BY-SA-2.0",
        "CC-BY-SA-2.0-UK",
        "CC-BY-SA-2.1-JP",
        "CC-BY-SA-2.5",
        "CC-BY-SA-3.0",
        "CC-BY-SA-3.0-AT",
        "CC-BY-SA-3.0-DE",
        "CC-BY-SA-3.0-IGO",
        "CC-BY-SA-4.0",
        "CC-PDDC",
        "CC-PDM-1.0",
        "CC-SA-1.0",
        "CC0-1.0",
        "CDDL-1.0",
        "CDDL-1.1",
        "CDL-1.0",
        "CDLA-Permissive-1.0",
        "CDLA-Permissive-2.0",
        "CDLA-Sharing-1.0",
        "CECILL-1.0",
        "CECILL-1.1",
        "CECILL-2.0",
        "CECILL-2.1",
        "CECILL-B",
        "CECILL-C",
        "CERN-OHL-1.1",
        "CERN-OHL-1.2",
        "CERN-OHL-P-2.0",
        "CERN-OHL-S-2.0",
        "CERN-OHL-W-2.0",
        "CFITSIO",
        "check-cvs",
        "checkmk",
        "ClArtistic",
        "Clips",
        "CMU-Mach",
        "CMU-Mach-nodoc",
        "CNRI-Jython",
        "CNRI-Python",
        "CNRI-Python-GPL-Compatible",
        "COIL-1.0",
        "Community-Spec-1.0",
        "Condor-1.1",
        "copyleft-next-0.3.0",
        "copyleft-next-0.3.1",
        "Cornell-Lossless-JPEG",
        "CPAL-1.0",
        "CPL-1.0",
        "CPOL-1.02",
        "Cronyx",
        "Crossword",
        "CryptoSwift",
        "CrystalStacker",
        "CUA-OPL-1.0",
        "Cube",
        "curl",
        "cve-tou",
        "D-FSL-1.0",
        "DEC-3-Clause",
        "diffmark",
        "DL-DE-BY-2.0",
        "DL-DE-ZERO-2.0",
        "DOC",
        "DocBook-DTD",
        "DocBook-Schema",
        "DocBook-Stylesheet",
        "DocBook-XML",
        "Dotseqn",
        "DRL-1.0",
        "DRL-1.1",
        "DSDP",
        "dtoa",
        "dvipdfm",
        "ECL-1.0",
        "ECL-2.0",
        "eCos-2.0",
        "EFL-1.0",
        "EFL-2.0",
        "eGenix",
        "Elastic-2.0",
        "Entessa",
        "EPICS",
        "EPL-1.0",
        "EPL-2.0",
        "ErlPL-1.1",
        "etalab-2.0",
        "EUDatagrid",
        "EUPL-1.0",
        "EUPL-1.1",
        "EUPL-1.2",
        "Eurosym",
        "Fair",
        "FBM",
        "FDK-AAC",
        "Ferguson-Twofish",
        "Frameworx-1.0",
        "FreeBSD-DOC",
        "FreeImage",
        "FSFAP",
        "FSFAP-no-warranty-disclaimer",
        "FSFUL",
        "FSFULLR",
        "FSFULLRWD",
        "FTL",
        "Furuseth",
        "fwlw",
        "Game-Programming-Gems",
        "GCR-docs",
        "GD",
        "generic-xts",
        "GFDL-1.1",
        "GFDL-1.1-invariants-only",
        "GFDL-1.1-invariants-or-later",
        "GFDL-1.1-no-invariants-only",
        "GFDL-1.1-no-invariants-or-later",
        "GFDL-1.1-only",
        "GFDL-1.1-or-later",
        "GFDL-1.2",
        "GFDL-1.2-invariants-only",
        "GFDL-1.2-invariants-or-later",
        "GFDL-1.2-no-invariants-only",
        "GFDL-1.2-no-invariants-or-later",
        "GFDL-1.2-only",
        "GFDL-1.2-or-later",
        "GFDL-1.3",
        "GFDL-1.3-invariants-only",
        "GFDL-1.3-invariants-or-later",
        "GFDL-1.3-no-invariants-only",
        "GFDL-1.3-no-invariants-or-later",
        "GFDL-1.3-only",
        "GFDL-1.3-or-later",
        "Giftware",
        "GL2PS",
        "Glide",
        "Glulxe",
        "GLWTPL",
        "gnuplot",
        "GPL-1.0",
        "GPL-1.0+",
        "GPL-1.0-only",
        "GPL-1.0-or-later",
        "GPL-2.0",
        "GPL-2.0+",
        "GPL-2.0-only",
        "GPL-2.0-or-later",
        "GPL-2.0-with-autoconf-exception",
        "GPL-2.0-with-bison-exception",
        "GPL-2.0-with-classpath-exception",
        "GPL-2.0-with-font-exception",
        "GPL-2.0-with-GCC-exception",
        "GPL-3.0",
        "GPL-3.0+",
        "GPL-3.0-only",
        "GPL-3.0-or-later",
        "GPL-3.0-with-autoconf-exception",
        "GPL-3.0-with-GCC-exception",
        "Graphics-Gems",
        "gSOAP-1.3b",
        "gtkbook",
        "Gutmann",
        "HaskellReport",
        "hdparm",
        "HIDAPI",
        "Hippocratic-2.1",
        "HP-1986",
        "HP-1989",
        "HPND",
        "HPND-DEC",
        "HPND-doc",
        "HPND-doc-sell",
        "HPND-export-US",
        "HPND-export-US-acknowledgement",
        "HPND-export-US-modify",
        "HPND-export2-US",
        "HPND-Fenneberg-Livingston",
        "HPND-INRIA-IMAG",
        "HPND-Intel",
        "HPND-Kevlin-Henney",
        "HPND-Markus-Kuhn",
        "HPND-merchantability-variant",
        "HPND-MIT-disclaimer",
        "HPND-Netrek",
        "HPND-Pbmplus",
        "HPND-sell-MIT-disclaimer-xserver",
        "HPND-sell-regexpr",
        "HPND-sell-variant",
        "HPND-sell-variant-MIT-disclaimer",
        "HPND-sell-variant-MIT-disclaimer-rev",
        "HPND-UC",
        "HPND-UC-export-US",
        "HTMLTIDY",
        "IBM-pibs",
        "ICU",
        "IEC-Code-Components-EULA",
        "IJG",
        "IJG-short",
        "ImageMagick",
        "iMatix",
        "Imlib2",
        "Info-ZIP",
        "Inner-Net-2.0",
        "InnoSetup",
        "Intel",
        "Intel-ACPI",
        "Interbase-1.0",
        "IPA",
        "IPL-1.0",
        "ISC",
        "ISC-Veillard",
        "Jam",
        "JasPer-2.0",
        "JPL-image",
        "JPNIC",
        "JSON",
        "Kastrup",
        "Kazlib",
        "Knuth-CTAN",
        "LAL-1.2",
        "LAL-1.3",
        "Latex2e",
        "Latex2e-translated-notice",
        "Leptonica",
        "LGPL-2.0",
        "LGPL-2.0+",
        "LGPL-2.0-only",
        "LGPL-2.0-or-later",
        "LGPL-2.1",
        "LGPL-2.1+",
        "LGPL-2.1-only",
        "LGPL-2.1-or-later",
        "LGPL-3.0",
        "LGPL-3.0+",
        "LGPL-3.0-only",
        "LGPL-3.0-or-later",
        "LGPLLR",
        "Libpng",
        "libpng-2.0",
        "libselinux-1.0",
        "libtiff",
        "libutil-David-Nugent",
        "LiLiQ-P-1.1",
        "LiLiQ-R-1.1",
        "LiLiQ-Rplus-1.1",
        "Linux-man-pages-1-para",
        "Linux-man-pages-copyleft",
        "Linux-man-pages-copyleft-2-para",
        "Linux-man-pages-copyleft-var",
        "Linux-OpenIB",
        "LOOP",
        "LPD-document",
        "LPL-1.0",
        "LPL-1.02",
        "LPPL-1.0",
        "LPPL-1.1",
        "LPPL-1.2",
        "LPPL-1.3a",
        "LPPL-1.3c",
        "lsof",
        "Lucida-Bitmap-Fonts",
        "LZMA-SDK-9.11-to-9.20",
        "LZMA-SDK-9.22",
        "Mackerras-3-Clause",
        "Mackerras-3-Clause-acknowledgment",
        "magaz",
        "mailprio",
        "MakeIndex",
        "man2html",
        "Martin-Birgmeier",
        "McPhee-slideshow",
        "metamail",
        "Minpack",
        "MIPS",
        "MirOS",
        "MIT",
        "MIT-0",
        "MIT-advertising",
        "MIT-Click",
        "MIT-CMU",
        "MIT-enna",
        "MIT-feh",
        "MIT-Festival",
        "MIT-Khronos-old",
        "MIT-Modern-Variant",
        "MIT-open-group",
        "MIT-testregex",
        "MIT-Wu",
        "MITNFA",
        "MMIXware",
        "Motosoto",
        "MPEG-SSG",
        "mpi-permissive",
        "mpich2",
        "MPL-1.0",
        "MPL-1.1",
        "MPL-2.0",
        "MPL-2.0-no-copyleft-exception",
        "mplus",
        "MS-LPL",
        "MS-PL",
        "MS-RL",
        "MTLL",
        "MulanPSL-1.0",
        "MulanPSL-2.0",
        "Multics",
        "Mup",
        "NAIST-2003",
        "NASA-1.3",
        "Naumen",
        "NBPL-1.0",
        "NCBI-PD",
        "NCGL-UK-2.0",
        "NCL",
        "NCSA",
        "Net-SNMP",
        "NetCDF",
        "Newsletr",
        "NGPL",
        "NICTA-1.0",
        "NIST-PD",
        "NIST-PD-fallback",
        "NIST-Software",
        "NLOD-1.0",
        "NLOD-2.0",
        "NLPL",
        "Nokia",
        "NOSL",
        "Noweb",
        "NPL-1.0",
        "NPL-1.1",
        "NPOSL-3.0",
        "NRL",
        "NTP",
        "NTP-0",
        "Nunit",
        "O-UDA-1.0",
        "OAR",
        "OCCT-PL",
        "OCLC-2.0",
        "ODbL-1.0",
        "ODC-By-1.0",
        "OFFIS",
        "OFL-1.0",
        "OFL-1.0-no-RFN",
        "OFL-1.0-RFN",
        "OFL-1.1",
        "OFL-1.1-no-RFN",
        "OFL-1.1-RFN",
        "OGC-1.0",
        "OGDL-Taiwan-1.0",
        "OGL-Canada-2.0",
        "OGL-UK-1.0",
        "OGL-UK-2.0",
        "OGL-UK-3.0",
        "OGTSL",
        "OLDAP-1.1",
        "OLDAP-1.2",
        "OLDAP-1.3",
        "OLDAP-1.4",
        "OLDAP-2.0",
        "OLDAP-2.0.1",
        "OLDAP-2.1",
        "OLDAP-2.2",
        "OLDAP-2.2.1",
        "OLDAP-2.2.2",
        "OLDAP-2.3",
        "OLDAP-2.4",
        "OLDAP-2.5",
        "OLDAP-2.6",
        "OLDAP-2.7",
        "OLDAP-2.8",
        "OLFL-1.3",
        "OML",
        "OpenPBS-2.3",
        "OpenSSL",
        "OpenSSL-standalone",
        "OpenVision",
        "OPL-1.0",
        "OPL-UK-3.0",
        "OPUBL-1.0",
        "OSET-PL-2.1",
        "OSL-1.0",
        "OSL-1.1",
        "OSL-2.0",
        "OSL-2.1",
        "OSL-3.0",
        "PADL",
        "Parity-6.0.0",
        "Parity-7.0.0",
        "PDDL-1.0",
        "PHP-3.0",
        "PHP-3.01",
        "Pixar",
        "pkgconf",
        "Plexus",
        "pnmstitch",
        "PolyForm-Noncommercial-1.0.0",
        "PolyForm-Small-Business-1.0.0",
        "PostgreSQL",
        "PPL",
        "PSF-2.0",
        "psfrag",
        "psutils",
        "Python-2.0",
        "Python-2.0.1",
        "python-ldap",
        "Qhull",
        "QPL-1.0",
        "QPL-1.0-INRIA-2004",
        "radvd",
        "Rdisc",
        "RHeCos-1.1",
        "RPL-1.1",
        "RPL-1.5",
        "RPSL-1.0",
        "RSA-MD",
        "RSCPL",
        "Ruby",
        "Ruby-pty",
        "SAX-PD",
        "SAX-PD-2.0",
        "Saxpath",
        "SCEA",
        "SchemeReport",
        "Sendmail",
        "Sendmail-8.23",
        "Sendmail-Open-Source-1.1",
        "SGI-B-1.0",
        "SGI-B-1.1",
        "SGI-B-2.0",
        "SGI-OpenGL",
        "SGP4",
        "SHL-0.5",
        "SHL-0.51",
        "SimPL-2.0",
        "SISSL",
        "SISSL-1.2",
        "SL",
        "Sleepycat",
        "SMAIL-GPL",
        "SMLNJ",
        "SMPPL",
        "SNIA",
        "snprintf",
        "softSurfer",
        "Soundex",
        "Spencer-86",
        "Spencer-94",
        "Spencer-99",
        "SPL-1.0",
        "ssh-keyscan",
        "SSH-OpenSSH",
        "SSH-short",
        "SSLeay-standalone",
        "SSPL-1.0",
        "StandardML-NJ",
        "SugarCRM-1.1.3",
        "Sun-PPP",
        "Sun-PPP-2000",
        "SunPro",
        "SWL",
        "swrule",
        "Symlinks",
        "TAPR-OHL-1.0",
        "TCL",
        "TCP-wrappers",
        "TermReadKey",
        "TGPPL-1.0",
        "ThirdEye",
        "threeparttable",
        "TMate",
        "TORQUE-1.1",
        "TOSL",
        "TPDL",
        "TPL-1.0",
        "TrustedQSL",
        "TTWL",
        "TTYP0",
        "TU-Berlin-1.0",
        "TU-Berlin-2.0",
        "Ubuntu-font-1.0",
        "UCAR",
        "UCL-1.0",
        "ulem",
        "UMich-Merit",
        "Unicode-3.0",
        "Unicode-DFS-2015",
        "Unicode-DFS-2016",
        "Unicode-TOU",
        "UnixCrypt",
        "Unlicense",
        "UPL-1.0",
        "URT-RLE",
        "Vim",
        "VOSTROM",
        "VSL-1.0",
        "W3C",
        "W3C-19980720",
        "W3C-20150513",
        "w3m",
        "Watcom-1.0",
        "Widget-Workshop",
        "Wsuipa",
        "WTFPL",
        "wwl",
        "wxWindows",
        "X11",
        "X11-distribute-modifications-variant",
        "X11-swapped",
        "Xdebug-1.03",
        "Xerox",
        "Xfig",
        "XFree86-1.1",
        "xinetd",
        "xkeyboard-config-Zinoviev",
        "xlock",
        "Xnet",
        "xpp",
        "XSkat",
        "xzoom",
        "YPL-1.0",
        "YPL-1.1",
        "Zed",
        "Zeeff",
        "Zend-2.0",
        "Zimbra-1.3",
        "Zimbra-1.4",
        "Zlib",
        "zlib-acknowledgement",
        "ZPL-1.1",
        "ZPL-2.0",
        "ZPL-2.1"
      ]
    },
    "enums:category": {
      "type": "string",
      "enum": [
        "Compiler",
        "DAP",
        "Formatter",
        "LSP",
        "Linter",
        "Runtime"
      ]
    },
    "components:deprecation": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Deprecation message shown to users. Should include alternative installation methods if available."
        },
        "since": {
          "type": "string",
          "description": "The version number when the deprecation was made."
        }
      },
      "required": [
        "since",
        "message"
      ],
      "additionalProperties": false
    },
    "components:source": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "version_overrides": {
              "type": "array",
              "items": {
                "type": "object",
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "constraint"
                    ],
                    "properties": {
                      "constraint": {
                        "type": "string",
                        "pattern": "^semver:(<=)?v?\\d+\\.\\d+\\.\\d+"
                      }
                    }
                  },
                  {
                    "$ref": "#/$defs/components:source/$defs/Source"
                  }
                ]
              }
            }
          }
        },
        {
          "$ref": "#/$defs/components:source/$defs/Source"
        }
      ],
      "$defs": {
        "Source": {
          "oneOf": [
            {
              "$ref": "#/$defs/components:sources:cargo"
            },
            {
              "$ref": "#/$defs/components:sources:composer"
            },
            {
              "$ref": "#/$defs/components:sources:gem"
            },
            {
              "$ref": "#/$defs/components:sources:generic"
            },
            {
              "$ref": "#/$defs/components:sources:github"
            },
            {
              "$ref": "#/$defs/components:sources:golang"
            },
            {
              "$ref": "#/$defs/components:sources:luarocks"
            },
            {
              "$ref": "#/$defs/components:sources:npm"
            },
            {
              "$ref": "#/$defs/components:sources:nuget"
            },
            {
              "$ref": "#/$defs/components:sources:opam"
            },
            {
              "$ref": "#/$defs/components:sources:openvsx"
            },
            {
              "$ref": "#/$defs/components:sources:pypi"
            }
          ]
        }
      }
    },
    "components:sources:cargo": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:cargo/.+@.+"
        },
        "supported_platforms": {
          "type": "array",
          "description": "List of platforms supported by the cargo package.",
          "items": {
            "$ref": "#/$defs/enums:platform"
          }
        }
      }
    },
    "enums:platform": {
      "type": "string",
      "enum": [
        "unix",
        "darwin",
        "darwin_arm64",
        "darwin_x64",
        "linux",
        "linux_arm",
        "linux_arm64",
        "linux_arm64_gnu",
        "linux_arm64_musl",
        "linux_arm64_openbsd",
        "linux_arm_gnu",
        "linux_armv6_gnu",
        "linux_armv6l",
        "linux_armv7_gnu",
        "linux_armv7l",
        "linux_x64",
        "linux_x64_gnu",
        "linux_x64_musl",
        "linux_x64_openbsd",
        "linux_x86",
        "linux_x86_gnu",
        "linux_x86_musl",
        "linux_x86_openbsd",
        "win",
        "win_arm",
        "win_arm64",
        "win_armv6l",
        "win_armv7l",
        "win_x64",
        "win_x86"
      ]
    },
    "components:sources:composer": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:composer/.+/.+@.+"
        }
      }
    },
    "components:sources:gem": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:gem/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra gem packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        },
        "supported_platforms": {
          "type": "array",
          "description": "List of platforms supported by the gem package.",
          "items": {
            "$ref": "#/$defs/enums:platform"
          }
        }
      }
    },
    "components:sources:generic": {
      "oneOf": [
        {
          "$ref": "#/$defs/components:sources:generic:download"
        },
        {
          "$ref": "#/$defs/components:sources:generic:build"
        }
      ]
    },
    "components:sources:generic:download": {
      "type": "object",
      "required": [
        "id",
        "download"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:generic/.+@.+"
        },
        "download": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/components:sources:generic:download/$defs/Download"
              }
            },
            {
              "$ref": "#/$defs/components:sources:generic:download/$defs/Download"
            }
          ]
        }
      },
      "$defs": {
        "Download": {
          "type": "object",
          "required": [
            "files"
          ],
          "properties": {
            "target": {
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/enums:platform"
                  }
                },
                {
                  "$ref": "#/$defs/enums:platform"
                }
              ]
            },
            "files": {
              "type": "object",
              "additionalProperties": false,
              "patternProperties": {
                "^[a-zA-Z0-9_\\-\\.]+$": {
                  "type": "string",
                  "pattern": "^https?://"
                }
              }
            }
          },
          "additionalProperties": true
        }
      }
    },
    "components:sources:generic:build": {
      "type": "object",
      "required": [
        "id",
        "build"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:generic/.+@.+"
        },
        "build": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/components:sources:build"
              }
            },
            {
              "$ref": "#/$defs/components:sources:build"
            }
          ]
        }
      }
    },
    "components:sources:build": {
      "type": "object",
      "required": [
        "run"
      ],
      "properties": {
        "target": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/enums:platform"
              }
            },
            {
              "$ref": "#/$defs/enums:platform"
            }
          ]
        },
        "run": {
          "type": "string",
          "description": "The shell script to run. Platform sensitive (bash on Unix, powershell on Windows)."
        },
        "env": {
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^[A-Z0-9_]+$": {
              "type": "string"
            }
          }
        },
        "staged": {
          "type": "boolean",
          "description": "Whether to run the build script in a staging location (defaults to true)."
        }
      }
    },
    "components:sources:github": {
      "oneOf": [
        {
          "$ref": "#/$defs/components:sources:github:release"
        },
        {
          "$ref": "#/$defs/components:sources:github:build"
        }
      ]
    },
    "components:sources:github:release": {
      "type": "object",
      "required": [
        "id",
        "asset"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:github/.+/.+@.+"
        },
        "asset": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "target": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/enums:platform"
                        }
                      },
                      {
                        "$ref": "#/$defs/enums:platform"
                      }
                    ]
                  },
                  "file": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  }
                },
                "required": [
                  "file",
                  "target"
                ],
                "additionalProperties": true
              }
            },
            {
              "type": "object",
              "properties": {
                "file": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "file"
              ],
              "additionalProperties": true
            }
          ]
        }
      }
    },
    "components:sources:github:build": {
      "type": "object",
      "required": [
        "id",
        "build"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:github/.+/.+@.+"
        },
        "build": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/components:sources:build"
              }
            },
            {
              "$ref": "#/$defs/components:sources:build"
            }
          ]
        }
      }
    },
    "components:sources:golang": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:golang/.+/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra golang packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "components:sources:luarocks": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:luarocks/.+@.+"
        }
      }
    },
    "components:sources:npm": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:npm/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra npm packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "components:sources:nuget": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:nuget/.+@.+"
        }
      }
    },
    "components:sources:opam": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:opam/.+@.+"
        }
      }
    },
    "components:sources:openvsx": {
      "type": "object",
      "required": [
        "id",
        "download"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:openvsx/.+/.+@.+"
        },
        "download": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "target": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "$ref": "#/$defs/enums:platform"
                        }
                      },
                      {
                        "$ref": "#/$defs/enums:platform"
                      }
                    ]
                  },
                  "file": {
                    "oneOf": [
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      {
                        "type": "string"
                      }
                    ]
                  },
                  "target_platform": {
                    "type": "string",
                    "enum": [
                      "in32-x64",
                      "win32-ia32",
                      "win32-arm64",
                      "linux-x64",
                      "linux-arm64",
                      "linux-armhf",
                      "alpine-x64",
                      "alpine-arm64",
                      "darwin-x64",
                      "darwin-arm64",
                      "web",
                      "universal"
                    ]
                  }
                },
                "required": [
                  "file",
                  "target"
                ],
                "additionalProperties": true
              }
            },
            {
              "type": "object",
              "properties": {
                "file": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "file"
              ],
              "additionalProperties": true
            }
          ]
        }
      }
    },
    "components:sources:pypi": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^pkg:pypi/.+@.+"
        },
        "extra_packages": {
          "type": "array",
          "description": "Extra pypi packages required by the main package to function.",
          "items": {
            "type": "string"
          }
        },
        "supported_platforms": {
          "type": "array",
          "description": "List of platforms supported by the pypi package.",
          "items": {
            "$ref": "#/$defs/enums:platform"
          }
        }
      }
    },
    "components:schemas": {
      "type": "object",
      "properties": {
        "lsp": {
          "type": "string",
          "description": "A URL to where the LSP JSON schema can be downloaded from. If the provided URL is a VSCode package.json you MUST prefix the url with vscode:",
          "pattern": "^(vscode:)?https://"
        }
      },
      "additionalProperties": false
    },
    "components:bin": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^[a-zA-Z0-9_\\-\\.]+$": {
          "type": "string"
        }
      }
    },
    "components:share": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^[a-zA-Z0-9_\\-\\./]+$": {
          "type": "string"
        }
      }
    },
    "components:opt": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^[a-zA-Z0-9_\\-\\./]+$": {
          "type": "string"
        }
      }
    },
    "components:neovim": {
      "type": "object",
      "properties": {
        "lspconfig": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "name",
    "description",
    "homepage",
    "licenses",
    "languages",
    "categories",
    "source"
  ]
}
