Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion purl-types-index.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@
"qpkg",
"rpm",
"swid",
"swift"
"swift",
"vscode"
]
211 changes: 211 additions & 0 deletions tests/types/vscode-test.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
{
"$schema": "https://packageurl.org/schemas/purl-test.schema-1.0.json",
"tests": [
{
"description": "Parse test for basic VS Code Extension PURL with version",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/redhat/java@1.46.2025091308",
"expected_output": {
"type": "vscode",
"namespace": "redhat",
"name": "java",
"version": "1.46.2025091308",
"qualifiers": null,
"subpath": null
},
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Roundtrip test for basic VS Code Extension PURL with version",
"test_group": "base",
"test_type": "roundtrip",
"input": "pkg:vscode/redhat/java@1.46.2025091308",
"expected_output": "pkg:vscode/redhat/java@1.46.2025091308",
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Build test for basic VS Code Extension PURL with version",
"test_group": "base",
"test_type": "build",
"input": {
"type": "vscode",
"namespace": "redhat",
"name": "java",
"version": "1.46.2025091308",
"qualifiers": null,
"subpath": null
},
"expected_output": "pkg:vscode/redhat/java@1.46.2025091308",
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Parse test for VS Code Extension PURL with platform qualifier",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/redhat/java@1.46.2025091308?platform=linux-x64",
"expected_output": {
"type": "vscode",
"namespace": "redhat",
"name": "java",
"version": "1.46.2025091308",
"qualifiers": {
"platform": "linux-x64"
},
"subpath": null
},
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Roundtrip test for VS Code Extension PURL with platform qualifier",
"test_group": "base",
"test_type": "roundtrip",
"input": "pkg:vscode/redhat/java@1.46.2025091308?platform=linux-x64",
"expected_output": "pkg:vscode/redhat/java@1.46.2025091308?platform=linux-x64",
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Build test for VS Code Extension PURL with platform qualifier",
"test_group": "base",
"test_type": "build",
"input": {
"type": "vscode",
"namespace": "redhat",
"name": "java",
"version": "1.46.2025091308",
"qualifiers": {
"platform": "linux-x64"
},
"subpath": null
},
"expected_output": "pkg:vscode/redhat/java@1.46.2025091308?platform=linux-x64",
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Parse test for VS Code Extension PURL without version",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/ms-python/python",
"expected_output": {
"type": "vscode",
"namespace": "ms-python",
"name": "python",
"version": null,
"qualifiers": null,
"subpath": null
},
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Roundtrip test for VS Code Extension PURL without version",
"test_group": "base",
"test_type": "roundtrip",
"input": "pkg:vscode/ms-python/python",
"expected_output": "pkg:vscode/ms-python/python",
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Build test for VS Code Extension PURL without version",
"test_group": "base",
"test_type": "build",
"input": {
"type": "vscode",
"namespace": "microsoft",
"name": "python",
"version": null,
"qualifiers": null,
"subpath": null
},
"expected_output": "pkg:vscode/microsoft/python",
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Parse test for VS Code Extension PURL with darwin-arm64 platform",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/microsoft/python@2024.10.0?platform=darwin-arm64",
"expected_output": {
"type": "vscode",
"namespace": "microsoft",
"name": "python",
"version": "2024.10.0",
"qualifiers": {
"platform": "darwin-arm64"
},
"subpath": null
},
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Parse test for VS Code Extension PURL with win32-x64 platform",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/golang/go@0.39.1?platform=win32-x64",
"expected_output": {
"type": "vscode",
"namespace": "golang",
"name": "go",
"version": "0.39.1",
"qualifiers": {
"platform": "win32-x64"
},
"subpath": null
},
"expected_failure": false,
"expected_failure_reason": null
},
{
"description": "Parse test for VS Code Extension PURL without namespace should fail",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/java@1.46.2025091308",
"expected_output": null,
"expected_failure": true,
"expected_failure_reason": "VS Code Extension PURLs require a namespace (publisher)"
},
{
"description": "Build test for VS Code Extension PURL without namespace should fail",
"test_group": "base",
"test_type": "build",
"input": {
"type": "vscode",
"namespace": null,
"name": "java",
"version": "1.46.2025091308",
"qualifiers": null,
"subpath": null
},
"expected_output": null,
"expected_failure": true,
"expected_failure_reason": "VS Code Extension PURLs require a namespace (publisher)"
},
{
"description": "Parse test for VS Code Extension PURL with platform=universal (default)",
"test_group": "base",
"test_type": "parse",
"input": "pkg:vscode/redhat/java@1.46.2025091308?platform=universal",
"expected_output": {
"type": "vscode",
"namespace": "redhat",
"name": "java",
"version": "1.46.2025091308",
"qualifiers": {
"platform": "universal"
},
"subpath": null
},
"expected_failure": false,
"expected_failure_reason": null
}
]
}
55 changes: 55 additions & 0 deletions types-doc/vscode-definition.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<!-- NOTE: Auto-generated from the JSON PURL type definition.
Do not manually edit this file. Edit the JSON type definition instead. -->

# PURL Type Definition: vscode

- **Type Name:** VS Code Extension packages
- **Description:** VS Code Extension packages
- **Schema ID:** `https://packageurl.org/types/vscode-definition.json`

## PURL Syntax

The structure of a PURL for this package type is:

pkg:vscode/<namespace>/<name>@<version>?<qualifiers>#<subpath>

## Repository Information

- **Use Repository:** Yes
- **Default Repository URL:** https://marketplace.visualstudio.com/vscode

## Namespace definition

- **Requirement:** Required
- **Native Label:** publisher
- **Note:** `The namespace is the publisher or vendor of the extension (e.g., 'redhat', 'microsoft'). This corresponds to the 'Publisher' property of the 'Identity' element in the package's .vsixmanifest file.`

## Name definition

- **Requirement:** Required
- **Native Label:** name
- **Note:** `The extension name. This corresponds to the 'Id' property of the 'Identity' element in the package's .vsixmanifest file.`

## Version definition

- **Requirement:** Optional
- **Native Label:** version
- **Note:** `The extension version. This corresponds to the 'Version' property of the 'Identity' element in the package's .vsixmanifest file.`

## Qualifiers Definition

| Key | Requirement | Native name | Default Value | Description |
|------|-------------|-------------|---------------|-------------|
| platform | Optional | targetPlatform | universal | The target platform for the extension. Common values include 'universal', 'linux-x64', 'linux-arm64', 'darwin-x64', 'darwin-arm64', 'win32-x64', 'win32-arm64', etc. |

## Examples

- `pkg:vscode/ms-python/python@2023.25.10292213`
- `pkg:vscode/muhammad-sammy/csharp@2.15.30?repository_url=https://open-vsx.org`
- `pkg:vscode/golang/go@0.39.1?platform=win32-x64`

## Reference URLs

- `https://open-vsx.org/`
- `https://github.com/eclipse/openvsx`
- `https://code.visualstudio.com/api/working-with-extensions/publishing-extension#platformspecific-extensions`
48 changes: 48 additions & 0 deletions types/vscode-definition.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"$schema": "https://packageurl.org/schemas/purl-type-definition.schema-1.0.json",
"$id": "https://packageurl.org/types/vscode-definition.json",
"type": "vscode",
"type_name": "VS Code Extension packages",
"description": "VS Code Extension packages",
"repository": {
"use_repository": true,
"default_repository_url": "https://marketplace.visualstudio.com/vscode"
},
"namespace_definition": {
"requirement": "required",
"case_sensitive": false,
"native_name": "publisher",
"note": "The namespace is the publisher or vendor of the extension (e.g., 'redhat', 'microsoft'). This corresponds to the 'Publisher' property of the 'Identity' element in the package's .vsixmanifest file."
},
"name_definition": {
"requirement": "required",
"case_sensitive": false,
"native_name": "name",
"note": "The extension name. This corresponds to the 'Id' property of the 'Identity' element in the package's .vsixmanifest file."
},
"version_definition": {
"requirement": "optional",
"case_sensitive": false,
"native_name": "version",
"note": "The extension version. This corresponds to the 'Version' property of the 'Identity' element in the package's .vsixmanifest file."
},
"qualifiers_definition": [
{
"key": "platform",
"requirement": "optional",
"description": "The target platform for the extension. Common values include 'universal', 'linux-x64', 'linux-arm64', 'darwin-x64', 'darwin-arm64', 'win32-x64', 'win32-arm64', etc.",
"default_value": "universal",
"native_name": "targetPlatform"
}
],
"examples": [
"pkg:vscode/ms-python/python@2023.25.10292213",
"pkg:vscode/muhammad-sammy/csharp@2.15.30?repository_url=https://open-vsx.org",
"pkg:vscode/golang/go@0.39.1?platform=win32-x64"
],
"reference_urls": [
"https://open-vsx.org/",
"https://github.com/eclipse/openvsx",
"https://code.visualstudio.com/api/working-with-extensions/publishing-extension#platformspecific-extensions"
]
}