purl 1.1.2 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/purl-types.json CHANGED
@@ -1,25 +1,24 @@
1
1
  {
2
- "version": "1.0.0",
3
- "description": "PURL types and registry URL patterns for package ecosystems",
4
- "source": "https://github.com/package-url/purl-spec/blob/main/PURL-TYPES.rst",
5
- "last_updated": "2025-07-24",
2
+ "version": "1.2.0",
3
+ "description": "Official PURL types with registry configurations",
4
+ "source": "https://github.com/package-url/purl-spec",
5
+ "last_updated": "2025-07-27",
6
6
  "types": {
7
7
  "alpm": {
8
- "description": "Arch Linux and other users of the libalpm/pacman package manager",
8
+ "description": "Arch Linux packages and other users of the libalpm/pacman package manager.",
9
9
  "default_registry": null,
10
10
  "examples": [
11
- "pkg:alpm/arch/pacman@6.0.2-5?distro=arch",
12
- "pkg:alpm/arch/curl@7.87.0-2?distro=arch",
13
- "pkg:alpm/arch/systemd@252.4-2?distro=arch"
11
+ "pkg:alpm/arch/pacman@6.0.1-1?arch=x86_64",
12
+ "pkg:alpm/arch/python-pip@21.0-1?arch=any",
13
+ "pkg:alpm/arch/containers-common@1:0.47.4-4?arch=x86_64"
14
14
  ]
15
15
  },
16
16
  "apk": {
17
- "description": "APK-based packages",
17
+ "description": "Alpine Linux APK-based packages",
18
18
  "default_registry": null,
19
19
  "examples": [
20
- "pkg:apk/alpine/curl@7.83.0-r0?distro=alpine-3.16",
21
- "pkg:apk/alpine/busybox@1.35.0-r17?distro=alpine-3.16",
22
- "pkg:apk/alpine/musl@1.2.3-r0?distro=alpine-3.16"
20
+ "pkg:apk/alpine/curl@7.83.0-r0?arch=x86",
21
+ "pkg:apk/alpine/apk@2.12.9-r3?arch=x86"
23
22
  ]
24
23
  },
25
24
  "bitbucket": {
@@ -33,15 +32,16 @@
33
32
  },
34
33
  "bitnami": {
35
34
  "description": "Bitnami-based packages",
36
- "default_registry": "https://downloads.bitnami.com/files/stacksmith",
35
+ "default_registry": null,
37
36
  "examples": [
38
- "pkg:bitnami/wordpress@6.1.1-0",
39
- "pkg:bitnami/mysql@8.0.31-0",
40
- "pkg:bitnami/apache@2.4.54-0"
37
+ "pkg:bitnami/wordpress?distro=debian-12",
38
+ "pkg:bitnami/wordpress@6.2.0?distro=debian-12",
39
+ "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=debian-12",
40
+ "pkg:bitnami/wordpress@6.2.0?arch=arm64&distro=photon-4"
41
41
  ]
42
42
  },
43
43
  "cargo": {
44
- "description": "Rust packages",
44
+ "description": "Cargo packages for Rust",
45
45
  "default_registry": "https://crates.io",
46
46
  "examples": [
47
47
  "pkg:cargo/rand@0.7.2",
@@ -50,10 +50,8 @@
50
50
  ],
51
51
  "registry_config": {
52
52
  "base_url": "https://crates.io/crates",
53
- "route_patterns": [
54
- "https://crates.io/crates/:name"
55
- ],
56
53
  "reverse_regex": "^https://crates\\.io/crates/([^/?#]+)",
54
+ "uri_template": "https://crates.io/crates/{name}",
57
55
  "components": {
58
56
  "namespace": false,
59
57
  "version_in_url": false
@@ -61,7 +59,7 @@
61
59
  }
62
60
  },
63
61
  "cocoapods": {
64
- "description": "CocoaPods",
62
+ "description": "CocoaPods pods",
65
63
  "default_registry": "https://cdn.cocoapods.org/",
66
64
  "examples": [
67
65
  "pkg:cocoapods/Alamofire@5.6.4",
@@ -70,10 +68,8 @@
70
68
  ],
71
69
  "registry_config": {
72
70
  "base_url": "https://cocoapods.org/pods",
73
- "route_patterns": [
74
- "https://cocoapods.org/pods/:name"
75
- ],
76
71
  "reverse_regex": "^https://cocoapods\\.org/pods/([^/?#]+)",
72
+ "uri_template": "https://cocoapods.org/pods/{name}",
77
73
  "components": {
78
74
  "namespace": false,
79
75
  "version_in_url": false
@@ -83,6 +79,7 @@
83
79
  "composer": {
84
80
  "description": "Composer PHP packages",
85
81
  "default_registry": "https://packagist.org",
82
+ "namespace_requirement": "required",
86
83
  "examples": [
87
84
  "pkg:composer/symfony/console@6.1.7",
88
85
  "pkg:composer/laravel/framework@9.42.2",
@@ -90,10 +87,8 @@
90
87
  ],
91
88
  "registry_config": {
92
89
  "base_url": "https://packagist.org/packages",
93
- "route_patterns": [
94
- "https://packagist.org/packages/:namespace/:name"
95
- ],
96
90
  "reverse_regex": "^https://packagist\\.org/packages/([^/?#]+)/([^/?#]+)",
91
+ "uri_template": "https://packagist.org/packages/{namespace}/{name}",
97
92
  "components": {
98
93
  "namespace": true,
99
94
  "namespace_required": true,
@@ -102,16 +97,25 @@
102
97
  }
103
98
  },
104
99
  "conan": {
105
- "description": "Conan C/C++ packages",
106
- "default_registry": "https://center.conan.io",
100
+ "description": "Conan C/C++ packages. The purl is designed to closely resemble the Conan-native <package-name>/<package-version>@<user>/<channel> syntax for package references as specified in https://docs.conan.io/en/1.46/cheatsheet.html#package-terminology",
101
+ "default_registry": "https://conan.io/center",
107
102
  "examples": [
108
- "pkg:conan/boost@1.80.0",
109
- "pkg:conan/openssl@1.1.1s",
110
- "pkg:conan/zlib@1.2.13"
111
- ]
103
+ "pkg:conan/openssl@3.0.3",
104
+ "pkg:conan/openssl.org/openssl@3.0.3?user=bincrafters&channel=stable",
105
+ "pkg:conan/openssl.org/openssl@3.0.3?arch=x86_64&build_type=Debug&compiler=Visual%20Studio&compiler.runtime=MDd&compiler.version=16&os=Windows&shared=True&rrev=93a82349c31917d2d674d22065c7a9ef9f380c8e&prev=b429db8a0e324114c25ec387bfd8281f330d7c5c"
106
+ ],
107
+ "registry_config": {
108
+ "base_url": "https://conan.io/center/recipes",
109
+ "reverse_regex": "^https://conan\\.io/center/recipes/([^/?#]+)",
110
+ "uri_template": "https://conan.io/center/recipes/{name}",
111
+ "components": {
112
+ "namespace": false,
113
+ "version_in_url": false
114
+ }
115
+ }
112
116
  },
113
117
  "conda": {
114
- "description": "Conda packages",
118
+ "description": "conda is for Conda packages",
115
119
  "default_registry": "https://repo.anaconda.com",
116
120
  "examples": [
117
121
  "pkg:conda/numpy@1.24.1",
@@ -120,10 +124,8 @@
120
124
  ],
121
125
  "registry_config": {
122
126
  "base_url": "https://anaconda.org/conda-forge",
123
- "route_patterns": [
124
- "https://anaconda.org/conda-forge/:name"
125
- ],
126
127
  "reverse_regex": "^https://anaconda\\.org/conda-forge/([^/?#]+)",
128
+ "uri_template": "https://anaconda.org/conda-forge/{name}",
127
129
  "components": {
128
130
  "namespace": false,
129
131
  "version_in_url": false
@@ -140,10 +142,8 @@
140
142
  ],
141
143
  "registry_config": {
142
144
  "base_url": "https://metacpan.org/dist",
143
- "route_patterns": [
144
- "https://metacpan.org/dist/:name"
145
- ],
146
145
  "reverse_regex": "^https://metacpan\\.org/dist/([^/?#]+)",
146
+ "uri_template": "https://metacpan.org/dist/{name}",
147
147
  "components": {
148
148
  "namespace": false,
149
149
  "version_in_url": false
@@ -153,6 +153,7 @@
153
153
  "cran": {
154
154
  "description": "CRAN R packages",
155
155
  "default_registry": "https://cran.r-project.org",
156
+ "namespace_requirement": "prohibited",
156
157
  "examples": [
157
158
  "pkg:cran/ggplot2@3.4.0",
158
159
  "pkg:cran/dplyr@1.0.10",
@@ -160,16 +161,18 @@
160
161
  ]
161
162
  },
162
163
  "deb": {
163
- "description": "Debian, Debian derivatives, and Ubuntu packages",
164
+ "description": "Debian packages, Debian derivatives, and Ubuntu packages",
164
165
  "default_registry": null,
165
166
  "examples": [
166
- "pkg:deb/debian/curl@7.74.0-1.3+deb11u3?distro=debian-11",
167
- "pkg:deb/ubuntu/nginx@1.18.0-0ubuntu1.4?distro=ubuntu-20.04",
168
- "pkg:deb/debian/git@1:2.30.2-1+deb11u2?distro=debian-11"
167
+ "pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie",
168
+ "pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch",
169
+ "pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64",
170
+ "pkg:deb/debian/attr@1:2.4.47-2?arch=source",
171
+ "pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64"
169
172
  ]
170
173
  },
171
174
  "docker": {
172
- "description": "Docker images",
175
+ "description": "for Docker images",
173
176
  "default_registry": "https://hub.docker.com",
174
177
  "examples": [
175
178
  "pkg:docker/nginx@1.21.6",
@@ -180,6 +183,7 @@
180
183
  "gem": {
181
184
  "description": "RubyGems",
182
185
  "default_registry": "https://rubygems.org",
186
+ "namespace_requirement": "prohibited",
183
187
  "examples": [
184
188
  "pkg:gem/ruby-advisory-db-check@0.12.4",
185
189
  "pkg:gem/rails@7.0.4",
@@ -187,11 +191,9 @@
187
191
  ],
188
192
  "registry_config": {
189
193
  "base_url": "https://rubygems.org/gems",
190
- "route_patterns": [
191
- "https://rubygems.org/gems/:name",
192
- "https://rubygems.org/gems/:name/versions/:version"
193
- ],
194
194
  "reverse_regex": "^https://rubygems\\.org/gems/([^/?#]+)(?:/versions/([^/?#]+))?",
195
+ "uri_template": "https://rubygems.org/gems/{name}",
196
+ "uri_template_with_version": "https://rubygems.org/gems/{name}/versions/{version}",
195
197
  "components": {
196
198
  "namespace": false,
197
199
  "version_in_url": true,
@@ -200,12 +202,12 @@
200
202
  }
201
203
  },
202
204
  "generic": {
203
- "description": "Plain packages that do not fit anywhere else",
205
+ "description": "The generic type is for plain, generic packages that do not fit anywhere else such as for \"upstream-from-distro\" packages. In particular this is handy for a plain version control repository such as a bare git repo in combination with a vcs_url.",
204
206
  "default_registry": null,
205
207
  "examples": [
206
- "pkg:generic/bitwardeninc/mobile@2023.1.0",
207
- "pkg:generic/curl@7.80.0?distro=fedora-35",
208
- "pkg:generic/openssl@1.1.1q"
208
+ "pkg:generic/openssl@1.1.10g",
209
+ "pkg:generic/openssl@1.1.10g?download_url=https://openssl.org/source/openssl-1.1.0g.tar.gz&checksum=sha256:de4d501267da",
210
+ "pkg:generic/bitwarderl?vcs_url=git%2Bhttps://git.fsfe.org/dxtr/bitwarderl%40cc55108da32"
209
211
  ]
210
212
  },
211
213
  "github": {
@@ -219,22 +221,21 @@
219
221
  },
220
222
  "golang": {
221
223
  "description": "Go packages",
222
- "default_registry": null,
224
+ "default_registry": "https://pkg.go.dev",
223
225
  "examples": [
226
+ "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c",
224
227
  "pkg:golang/google.golang.org/genproto#googleapis/api/annotations",
225
- "pkg:golang/github.com/gorilla/mux@v1.8.0"
228
+ "pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api"
226
229
  ],
227
230
  "registry_config": {
228
231
  "base_url": "https://pkg.go.dev",
229
- "route_patterns": [
230
- "https://pkg.go.dev/:namespace/:name",
231
- "https://pkg.go.dev/:name"
232
- ],
233
- "reverse_regex": "^https://pkg\\.go\\.dev/(?:([^/?#]+)/)?([^/?#]+)",
232
+ "reverse_regex": "^https://pkg\\.go\\.dev/(.+)",
233
+ "uri_template": "https://pkg.go.dev/{namespace}/{name}",
234
234
  "components": {
235
235
  "namespace": true,
236
- "namespace_required": false,
237
- "version_in_url": false
236
+ "namespace_required": true,
237
+ "version_in_url": false,
238
+ "special_handling": "golang_import_path"
238
239
  }
239
240
  }
240
241
  },
@@ -248,11 +249,9 @@
248
249
  ],
249
250
  "registry_config": {
250
251
  "base_url": "https://hackage.haskell.org/package",
251
- "route_patterns": [
252
- "https://hackage.haskell.org/package/:name",
253
- "https://hackage.haskell.org/package/:name-:version"
254
- ],
255
252
  "reverse_regex": "^https://hackage\\.haskell\\.org/package/([^/?#-]+)(?:-([^/?#]+))?",
253
+ "uri_template": "https://hackage.haskell.org/package/{name}",
254
+ "uri_template_with_version": "https://hackage.haskell.org/package/{name}-{version}",
256
255
  "components": {
257
256
  "namespace": false,
258
257
  "version_in_url": true,
@@ -270,10 +269,8 @@
270
269
  ],
271
270
  "registry_config": {
272
271
  "base_url": "https://hex.pm/packages",
273
- "route_patterns": [
274
- "https://hex.pm/packages/:name"
275
- ],
276
272
  "reverse_regex": "^https://hex\\.pm/packages/([^/?#]+)",
273
+ "uri_template": "https://hex.pm/packages/{name}",
277
274
  "components": {
278
275
  "namespace": false,
279
276
  "version_in_url": false
@@ -284,23 +281,45 @@
284
281
  "description": "Hugging Face ML models",
285
282
  "default_registry": "https://huggingface.co",
286
283
  "examples": [
287
- "pkg:huggingface/transformers@4.25.1",
288
- "pkg:huggingface/tokenizers@0.13.2",
289
- "pkg:huggingface/datasets@2.7.1"
290
- ]
284
+ "pkg:huggingface/huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027",
285
+ "pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co"
286
+ ],
287
+ "registry_config": {
288
+ "base_url": "https://huggingface.co",
289
+ "reverse_regex": "^https://huggingface\\.co/(?:([^/?#]+)/)?([^/?#]+)",
290
+ "uri_template": "https://huggingface.co/{namespace}/{name}",
291
+ "uri_template_no_namespace": "https://huggingface.co/{name}",
292
+ "components": {
293
+ "namespace": true,
294
+ "namespace_required": false,
295
+ "version_in_url": false
296
+ }
297
+ }
291
298
  },
292
299
  "luarocks": {
293
300
  "description": "Lua packages installed with LuaRocks",
294
301
  "default_registry": "https://luarocks.org",
295
302
  "examples": [
296
- "pkg:luarocks/luasocket@3.0.0-1",
297
- "pkg:luarocks/lfs@1.8.0-1",
298
- "pkg:luarocks/lua-cjson@2.1.0-1"
299
- ]
303
+ "pkg:luarocks/luasocket@3.1.0-1",
304
+ "pkg:luarocks/hisham/luafilesystem@1.8.0-1",
305
+ "pkg:luarocks/username/packagename@0.1.0-1?repository_url=https://example.com/private_rocks_server/"
306
+ ],
307
+ "registry_config": {
308
+ "base_url": "https://luarocks.org/modules",
309
+ "reverse_regex": "^https://luarocks\\.org/modules/(?:([^/?#]+)/)?([^/?#]+)",
310
+ "uri_template": "https://luarocks.org/modules/{namespace}/{name}",
311
+ "uri_template_no_namespace": "https://luarocks.org/modules/{name}",
312
+ "components": {
313
+ "namespace": true,
314
+ "namespace_required": false,
315
+ "version_in_url": false
316
+ }
317
+ }
300
318
  },
301
319
  "maven": {
302
- "description": "Maven JARs and related artifacts",
320
+ "description": "PURL type for Maven JARs and related artifacts.",
303
321
  "default_registry": "https://repo.maven.apache.org/maven2",
322
+ "namespace_requirement": "required",
304
323
  "examples": [
305
324
  "pkg:maven/org.apache.commons/commons-lang3@3.12.0",
306
325
  "pkg:maven/junit/junit@4.13.2",
@@ -308,11 +327,9 @@
308
327
  ],
309
328
  "registry_config": {
310
329
  "base_url": "https://mvnrepository.com/artifact",
311
- "route_patterns": [
312
- "https://mvnrepository.com/artifact/:namespace/:name",
313
- "https://mvnrepository.com/artifact/:namespace/:name/:version"
314
- ],
315
330
  "reverse_regex": "^https://mvnrepository\\.com/artifact/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
331
+ "uri_template": "https://mvnrepository.com/artifact/{namespace}/{name}",
332
+ "uri_template_with_version": "https://mvnrepository.com/artifact/{namespace}/{name}/{version}",
316
333
  "components": {
317
334
  "namespace": true,
318
335
  "namespace_required": true,
@@ -322,17 +339,17 @@
322
339
  }
323
340
  },
324
341
  "mlflow": {
325
- "description": "MLflow ML models",
342
+ "description": "MLflow ML models (Azure ML, Databricks, etc.)",
326
343
  "default_registry": null,
327
344
  "examples": [
328
- "pkg:mlflow/model/sklearn-iris@1.0.0",
329
- "pkg:mlflow/model/pytorch-mnist@2.1.0",
330
- "pkg:mlflow/model/tensorflow-classification@1.5.0"
345
+ "pkg:mlflow/creditfraud@3?repository_url=https://westus2.api.azureml.ms/mlflow/v1.0/subscriptions/a50f2011-fab8-4164-af23-c62881ef8c95/resourceGroups/TestResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/TestWorkspace",
346
+ "pkg:mlflow/trafficsigns@10?model_uuid=36233173b22f4c89b451f1228d700d49&run_id=410a3121-2709-4f88-98dd-dba0ef056b0a&repository_url=https://adb-5245952564735461.0.azuredatabricks.net/api/2.0/mlflow"
331
347
  ]
332
348
  },
333
349
  "npm": {
334
- "description": "Node NPM packages",
350
+ "description": "PURL type for npm packages.",
335
351
  "default_registry": "https://registry.npmjs.org",
352
+ "namespace_requirement": "optional",
336
353
  "examples": [
337
354
  "pkg:npm/@babel/core@7.20.0",
338
355
  "pkg:npm/lodash@4.17.21",
@@ -340,13 +357,11 @@
340
357
  ],
341
358
  "registry_config": {
342
359
  "base_url": "https://www.npmjs.com/package",
343
- "route_patterns": [
344
- "https://www.npmjs.com/package/:namespace/:name",
345
- "https://www.npmjs.com/package/:name",
346
- "https://www.npmjs.com/package/:namespace/:name/v/:version",
347
- "https://www.npmjs.com/package/:name/v/:version"
348
- ],
349
360
  "reverse_regex": "^https://(?:www\\.)?npmjs\\.com/package/(?:(@[^/]+)/)?([^/?#]+)(?:/v/([^/?#]+))?",
361
+ "uri_template": "https://www.npmjs.com/package/{namespace}/{name}",
362
+ "uri_template_no_namespace": "https://www.npmjs.com/package/{name}",
363
+ "uri_template_with_version": "https://www.npmjs.com/package/{namespace}/{name}/v/{version}",
364
+ "uri_template_with_version_no_namespace": "https://www.npmjs.com/package/{name}/v/{version}",
350
365
  "components": {
351
366
  "namespace": true,
352
367
  "namespace_required": false,
@@ -366,11 +381,9 @@
366
381
  ],
367
382
  "registry_config": {
368
383
  "base_url": "https://www.nuget.org/packages",
369
- "route_patterns": [
370
- "https://www.nuget.org/packages/:name",
371
- "https://www.nuget.org/packages/:name/:version"
372
- ],
373
384
  "reverse_regex": "^https://(?:www\\.)?nuget\\.org/packages/([^/?#]+)(?:/([^/?#]+))?",
385
+ "uri_template": "https://www.nuget.org/packages/{name}",
386
+ "uri_template_with_version": "https://www.nuget.org/packages/{name}/{version}",
374
387
  "components": {
375
388
  "namespace": false,
376
389
  "version_in_url": true,
@@ -379,16 +392,17 @@
379
392
  }
380
393
  },
381
394
  "oci": {
382
- "description": "Artifacts stored in registries that conform to OCI Distribution Specification",
395
+ "description": "For artifacts stored in registries that conform to the OCI Distribution Specification https://github.com/opencontainers/distribution-spec including container images built by Docker and others",
383
396
  "default_registry": null,
384
397
  "examples": [
385
- "pkg:oci/hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042",
386
- "pkg:oci/nginx@1.21.6",
387
- "pkg:oci/ubuntu@20.04"
398
+ "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=docker.io/library/debian&arch=amd64&tag=latest",
399
+ "pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=ghcr.io/debian&tag=bullseye",
400
+ "pkg:oci/static@sha256%3A244fd47e07d10?repository_url=gcr.io/distroless/static&tag=latest",
401
+ "pkg:oci/hello-wasm@sha256%3A244fd47e07d10?tag=v1"
388
402
  ]
389
403
  },
390
404
  "pub": {
391
- "description": "Dart and Flutter packages",
405
+ "description": "Dart and Flutter pub packages",
392
406
  "default_registry": "https://pub.dartlang.org",
393
407
  "examples": [
394
408
  "pkg:pub/http@0.13.5",
@@ -397,10 +411,8 @@
397
411
  ],
398
412
  "registry_config": {
399
413
  "base_url": "https://pub.dev/packages",
400
- "route_patterns": [
401
- "https://pub.dev/packages/:name"
402
- ],
403
414
  "reverse_regex": "^https://pub\\.dev/packages/([^/?#]+)",
415
+ "uri_template": "https://pub.dev/packages/{name}",
404
416
  "components": {
405
417
  "namespace": false,
406
418
  "version_in_url": false
@@ -417,11 +429,9 @@
417
429
  ],
418
430
  "registry_config": {
419
431
  "base_url": "https://pypi.org/project",
420
- "route_patterns": [
421
- "https://pypi.org/project/:name/",
422
- "https://pypi.org/project/:name/:version/"
423
- ],
424
432
  "reverse_regex": "^https://pypi\\.org/project/([^/?#]+)/?(?:([^/?#]+)/?)?",
433
+ "uri_template": "https://pypi.org/project/{name}/",
434
+ "uri_template_with_version": "https://pypi.org/project/{name}/{version}/",
425
435
  "components": {
426
436
  "namespace": false,
427
437
  "version_in_url": true,
@@ -434,42 +444,39 @@
434
444
  "description": "QNX packages",
435
445
  "default_registry": null,
436
446
  "examples": [
437
- "pkg:qpkg/qnx/libc@7.1.0",
438
- "pkg:qpkg/qnx/procnto-smp@7.1.0",
439
- "pkg:qpkg/qnx/ph@7.1.0"
447
+ "pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847",
448
+ "pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L"
440
449
  ]
441
450
  },
442
451
  "rpm": {
443
- "description": "RPMs",
452
+ "description": "RPM packages",
444
453
  "default_registry": null,
445
454
  "examples": [
446
- "pkg:rpm/fedora/curl@7.87.0-1.fc37?distro=fedora-37",
447
- "pkg:rpm/centos/httpd@2.4.51-7.el8_5?distro=centos-8",
448
- "pkg:rpm/opensuse/git@2.38.1-1.1?distro=opensuse-tumbleweed"
455
+ "pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25",
456
+ "pkg:rpm/fedora/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25"
449
457
  ]
450
458
  },
451
459
  "swid": {
452
- "description": "Software Identification (SWID) tags",
460
+ "description": "PURL type for ISO-IEC 19770-2 Software Identification (SWID) tags.",
453
461
  "default_registry": null,
454
462
  "examples": [
455
- "pkg:swid/microsoft.com/Microsoft%20Office@16.0.12345.67890",
456
- "pkg:swid/adobe.com/Photoshop@23.1.0",
457
- "pkg:swid/oracle.com/Java%20SE@8u351"
463
+ "pkg:swid/Acme/example.com/Enterprise+Server@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d",
464
+ "pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29",
465
+ "pkg:swid/Adobe+Systems+Incorporated/Adobe+InDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL"
458
466
  ]
459
467
  },
460
468
  "swift": {
461
469
  "description": "Swift packages",
462
- "default_registry": null,
470
+ "default_registry": "https://swiftpackageindex.com",
471
+ "namespace_requirement": "required",
463
472
  "examples": [
464
473
  "pkg:swift/github.com/Alamofire/Alamofire@5.6.4",
465
474
  "pkg:swift/github.com/apple/swift-package-manager@1.7.0"
466
475
  ],
467
476
  "registry_config": {
468
477
  "base_url": "https://swiftpackageindex.com",
469
- "route_patterns": [
470
- "https://swiftpackageindex.com/:namespace/:name"
471
- ],
472
478
  "reverse_regex": "^https://swiftpackageindex\\.com/([^/?#]+)/([^/?#]+)",
479
+ "uri_template": "https://swiftpackageindex.com/{namespace}/{name}",
473
480
  "components": {
474
481
  "namespace": true,
475
482
  "namespace_required": true,
@@ -477,20 +484,57 @@
477
484
  }
478
485
  }
479
486
  },
487
+ "clojars": {
488
+ "description": "Clojars packages",
489
+ "default_registry": "https://clojars.org",
490
+ "examples": [
491
+ "pkg:clojars/org.clojure/clojure@1.11.1",
492
+ "pkg:clojars/ring/ring-core@1.9.5"
493
+ ],
494
+ "registry_config": {
495
+ "base_url": "https://clojars.org",
496
+ "reverse_regex": "^https://clojars\\.org/(?:([^/?#]+)/)?([^/?#]+)",
497
+ "uri_template": "https://clojars.org/{namespace}/{name}",
498
+ "uri_template_no_namespace": "https://clojars.org/{name}",
499
+ "components": {
500
+ "namespace": true,
501
+ "namespace_required": false,
502
+ "version_in_url": false
503
+ }
504
+ }
505
+ },
506
+ "elm": {
507
+ "description": "Elm packages",
508
+ "default_registry": "https://package.elm-lang.org",
509
+ "examples": [
510
+ "pkg:elm/elm/http@2.0.0",
511
+ "pkg:elm/elm-community/json-extra@4.3.0"
512
+ ],
513
+ "registry_config": {
514
+ "base_url": "https://package.elm-lang.org/packages",
515
+ "reverse_regex": "^https://package\\.elm-lang\\.org/packages/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
516
+ "uri_template": "https://package.elm-lang.org/packages/{namespace}/{name}/latest",
517
+ "uri_template_with_version": "https://package.elm-lang.org/packages/{namespace}/{name}/{version}",
518
+ "components": {
519
+ "namespace": true,
520
+ "namespace_required": true,
521
+ "version_in_url": true,
522
+ "default_version": "latest"
523
+ }
524
+ }
525
+ },
480
526
  "deno": {
481
527
  "description": "Deno packages",
482
- "default_registry": null,
528
+ "default_registry": "https://deno.land",
483
529
  "examples": [
484
530
  "pkg:deno/oak@12.0.0",
485
531
  "pkg:deno/std@0.177.0#http/server"
486
532
  ],
487
533
  "registry_config": {
488
534
  "base_url": "https://deno.land/x",
489
- "route_patterns": [
490
- "https://deno.land/x/:name",
491
- "https://deno.land/x/:name@:version"
492
- ],
493
535
  "reverse_regex": "^https://deno\\.land/x/([^/?#@]+)(?:@([^/?#]+))?",
536
+ "uri_template": "https://deno.land/x/{name}",
537
+ "uri_template_with_version": "https://deno.land/x/{name}@{version}",
494
538
  "components": {
495
539
  "namespace": false,
496
540
  "version_in_url": true,
@@ -500,17 +544,15 @@
500
544
  },
501
545
  "homebrew": {
502
546
  "description": "Homebrew packages",
503
- "default_registry": null,
547
+ "default_registry": "https://formulae.brew.sh",
504
548
  "examples": [
505
549
  "pkg:homebrew/wget@1.21.3",
506
550
  "pkg:homebrew/node@19.6.0"
507
551
  ],
508
552
  "registry_config": {
509
553
  "base_url": "https://formulae.brew.sh/formula",
510
- "route_patterns": [
511
- "https://formulae.brew.sh/formula/:name"
512
- ],
513
554
  "reverse_regex": "^https://formulae\\.brew\\.sh/formula/([^/?#]+)",
555
+ "uri_template": "https://formulae.brew.sh/formula/{name}",
514
556
  "components": {
515
557
  "namespace": false,
516
558
  "version_in_url": false
@@ -519,65 +561,20 @@
519
561
  },
520
562
  "bioconductor": {
521
563
  "description": "Bioconductor packages",
522
- "default_registry": null,
564
+ "default_registry": "https://bioconductor.org",
523
565
  "examples": [
524
566
  "pkg:bioconductor/IRanges@2.28.0",
525
567
  "pkg:bioconductor/GenomicRanges@1.46.1"
526
568
  ],
527
569
  "registry_config": {
528
570
  "base_url": "https://bioconductor.org/packages",
529
- "route_patterns": [
530
- "https://bioconductor.org/packages/:name"
531
- ],
532
571
  "reverse_regex": "^https://bioconductor\\.org/packages/([^/?#]+)",
572
+ "uri_template": "https://bioconductor.org/packages/{name}",
533
573
  "components": {
534
574
  "namespace": false,
535
575
  "version_in_url": false
536
576
  }
537
577
  }
538
- },
539
- "clojars": {
540
- "description": "Clojars packages",
541
- "default_registry": null,
542
- "examples": [
543
- "pkg:clojars/org.clojure/clojure@1.11.1",
544
- "pkg:clojars/ring/ring-core@1.9.5"
545
- ],
546
- "registry_config": {
547
- "base_url": "https://clojars.org",
548
- "route_patterns": [
549
- "https://clojars.org/:namespace/:name",
550
- "https://clojars.org/:name"
551
- ],
552
- "reverse_regex": "^https://clojars\\.org/(?:([^/?#]+)/)?([^/?#]+)",
553
- "components": {
554
- "namespace": true,
555
- "namespace_required": false,
556
- "version_in_url": false
557
- }
558
- }
559
- },
560
- "elm": {
561
- "description": "Elm packages",
562
- "default_registry": null,
563
- "examples": [
564
- "pkg:elm/elm/http@2.0.0",
565
- "pkg:elm/elm-community/json-extra@4.3.0"
566
- ],
567
- "registry_config": {
568
- "base_url": "https://package.elm-lang.org/packages",
569
- "route_patterns": [
570
- "https://package.elm-lang.org/packages/:namespace/:name/latest",
571
- "https://package.elm-lang.org/packages/:namespace/:name/:version"
572
- ],
573
- "reverse_regex": "^https://package\\.elm-lang\\.org/packages/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
574
- "components": {
575
- "namespace": true,
576
- "namespace_required": true,
577
- "version_in_url": true,
578
- "default_version": "latest"
579
- }
580
- }
581
578
  }
582
579
  }
583
580
  }