{
  "$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json",
  "$id": "https://packageurl.org/types/npm-definition.json",
  "type": "npm",
  "type_name": "Node NPM packages",
  "description": "PURL type for npm packages.",
  "repository": {
    "use_repository": true,
    "default_repository_url": "https://registry.npmjs.org/",
    "note": "The default repository is the npm Registry at https://registry.npmjs.org"
  },
  "namespace_definition": {
    "requirement": "optional",
    "case_sensitive": true,
    "native_name": "scope",
    "note": "The namespace is used for the scope of a scoped NPM package. The npm scope @ sign prefix is always percent encoded, as it was in the early days of npm scope."
  },
  "name_definition": {
    "requirement": "required",
    "case_sensitive": true,
    "native_name": "name",
    "note": "The package.json spec changed in 2015 to require that a new package 'must not have uppercase letters in the name', but old packages with mixed case names were \"grandfathered in\"."
  },
  "version_definition": {
    "requirement": "optional",
    "case_sensitive": true,
    "native_name": "version"
  },
  "examples": [
    "pkg:npm/foobar@12.3.1",
    "pkg:npm/%40angular/animation@12.3.1",
    "pkg:npm/mypackage@12.4.5?vcs_url=git://host.com/path/to/repo.git%404345abcd34343"
  ]
}
