purl 0.1.0 → 1.1.0

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 ADDED
@@ -0,0 +1,583 @@
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",
6
+ "types": {
7
+ "alpm": {
8
+ "description": "Arch Linux and other users of the libalpm/pacman package manager",
9
+ "default_registry": null,
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"
14
+ ]
15
+ },
16
+ "apk": {
17
+ "description": "APK-based packages",
18
+ "default_registry": null,
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"
23
+ ]
24
+ },
25
+ "bitbucket": {
26
+ "description": "Bitbucket-based packages",
27
+ "default_registry": "https://bitbucket.org",
28
+ "examples": [
29
+ "pkg:bitbucket/atlassian/python-bitbucket@0.1.0",
30
+ "pkg:bitbucket/birkenfeld/pygments-main@2.13.0",
31
+ "pkg:bitbucket/pygame/pygame@2.1.2"
32
+ ]
33
+ },
34
+ "bitnami": {
35
+ "description": "Bitnami-based packages",
36
+ "default_registry": "https://downloads.bitnami.com/files/stacksmith",
37
+ "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"
41
+ ]
42
+ },
43
+ "cargo": {
44
+ "description": "Rust packages",
45
+ "default_registry": "https://crates.io",
46
+ "examples": [
47
+ "pkg:cargo/rand@0.7.2",
48
+ "pkg:cargo/clap@4.0.32",
49
+ "pkg:cargo/serde@1.0.152"
50
+ ],
51
+ "registry_config": {
52
+ "base_url": "https://crates.io/crates",
53
+ "route_patterns": [
54
+ "https://crates.io/crates/:name"
55
+ ],
56
+ "reverse_regex": "^https://crates\\.io/crates/([^/?#]+)",
57
+ "components": {
58
+ "namespace": false,
59
+ "version_in_url": false
60
+ }
61
+ }
62
+ },
63
+ "cocoapods": {
64
+ "description": "CocoaPods",
65
+ "default_registry": "https://cdn.cocoapods.org/",
66
+ "examples": [
67
+ "pkg:cocoapods/Alamofire@5.6.4",
68
+ "pkg:cocoapods/SwiftyJSON@5.0.1",
69
+ "pkg:cocoapods/AFNetworking@4.0.1"
70
+ ],
71
+ "registry_config": {
72
+ "base_url": "https://cocoapods.org/pods",
73
+ "route_patterns": [
74
+ "https://cocoapods.org/pods/:name"
75
+ ],
76
+ "reverse_regex": "^https://cocoapods\\.org/pods/([^/?#]+)",
77
+ "components": {
78
+ "namespace": false,
79
+ "version_in_url": false
80
+ }
81
+ }
82
+ },
83
+ "composer": {
84
+ "description": "Composer PHP packages",
85
+ "default_registry": "https://packagist.org",
86
+ "examples": [
87
+ "pkg:composer/symfony/console@6.1.7",
88
+ "pkg:composer/laravel/framework@9.42.2",
89
+ "pkg:composer/phpunit/phpunit@9.5.27"
90
+ ],
91
+ "registry_config": {
92
+ "base_url": "https://packagist.org/packages",
93
+ "route_patterns": [
94
+ "https://packagist.org/packages/:namespace/:name"
95
+ ],
96
+ "reverse_regex": "^https://packagist\\.org/packages/([^/?#]+)/([^/?#]+)",
97
+ "components": {
98
+ "namespace": true,
99
+ "namespace_required": true,
100
+ "version_in_url": false
101
+ }
102
+ }
103
+ },
104
+ "conan": {
105
+ "description": "Conan C/C++ packages",
106
+ "default_registry": "https://center.conan.io",
107
+ "examples": [
108
+ "pkg:conan/boost@1.80.0",
109
+ "pkg:conan/openssl@1.1.1s",
110
+ "pkg:conan/zlib@1.2.13"
111
+ ]
112
+ },
113
+ "conda": {
114
+ "description": "Conda packages",
115
+ "default_registry": "https://repo.anaconda.com",
116
+ "examples": [
117
+ "pkg:conda/numpy@1.24.1",
118
+ "pkg:conda/pandas@1.5.2",
119
+ "pkg:conda/matplotlib@3.6.2"
120
+ ],
121
+ "registry_config": {
122
+ "base_url": "https://anaconda.org/conda-forge",
123
+ "route_patterns": [
124
+ "https://anaconda.org/conda-forge/:name"
125
+ ],
126
+ "reverse_regex": "^https://anaconda\\.org/conda-forge/([^/?#]+)",
127
+ "components": {
128
+ "namespace": false,
129
+ "version_in_url": false
130
+ }
131
+ }
132
+ },
133
+ "cpan": {
134
+ "description": "CPAN Perl packages",
135
+ "default_registry": "https://www.cpan.org/",
136
+ "examples": [
137
+ "pkg:cpan/Moose@2.2014",
138
+ "pkg:cpan/DBI@1.643",
139
+ "pkg:cpan/Catalyst-Runtime@5.90128"
140
+ ],
141
+ "registry_config": {
142
+ "base_url": "https://metacpan.org/dist",
143
+ "route_patterns": [
144
+ "https://metacpan.org/dist/:name"
145
+ ],
146
+ "reverse_regex": "^https://metacpan\\.org/dist/([^/?#]+)",
147
+ "components": {
148
+ "namespace": false,
149
+ "version_in_url": false
150
+ }
151
+ }
152
+ },
153
+ "cran": {
154
+ "description": "CRAN R packages",
155
+ "default_registry": "https://cran.r-project.org",
156
+ "examples": [
157
+ "pkg:cran/ggplot2@3.4.0",
158
+ "pkg:cran/dplyr@1.0.10",
159
+ "pkg:cran/devtools@2.4.5"
160
+ ]
161
+ },
162
+ "deb": {
163
+ "description": "Debian, Debian derivatives, and Ubuntu packages",
164
+ "default_registry": null,
165
+ "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"
169
+ ]
170
+ },
171
+ "docker": {
172
+ "description": "Docker images",
173
+ "default_registry": "https://hub.docker.com",
174
+ "examples": [
175
+ "pkg:docker/nginx@1.21.6",
176
+ "pkg:docker/ubuntu@20.04",
177
+ "pkg:docker/node@18.12.1"
178
+ ]
179
+ },
180
+ "gem": {
181
+ "description": "RubyGems",
182
+ "default_registry": "https://rubygems.org",
183
+ "examples": [
184
+ "pkg:gem/ruby-advisory-db-check@0.12.4",
185
+ "pkg:gem/rails@7.0.4",
186
+ "pkg:gem/bundler@2.3.26"
187
+ ],
188
+ "registry_config": {
189
+ "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
+ "reverse_regex": "^https://rubygems\\.org/gems/([^/?#]+)(?:/versions/([^/?#]+))?",
195
+ "components": {
196
+ "namespace": false,
197
+ "version_in_url": true,
198
+ "version_path": "/versions/"
199
+ }
200
+ }
201
+ },
202
+ "generic": {
203
+ "description": "Plain packages that do not fit anywhere else",
204
+ "default_registry": null,
205
+ "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"
209
+ ]
210
+ },
211
+ "github": {
212
+ "description": "GitHub-based packages",
213
+ "default_registry": "https://github.com",
214
+ "examples": [
215
+ "pkg:github/torvalds/linux@6.1",
216
+ "pkg:github/microsoft/vscode@1.74.2",
217
+ "pkg:github/npm/cli@9.2.0"
218
+ ]
219
+ },
220
+ "golang": {
221
+ "description": "Go packages",
222
+ "default_registry": null,
223
+ "examples": [
224
+ "pkg:golang/google.golang.org/genproto#googleapis/api/annotations",
225
+ "pkg:golang/github.com/gorilla/mux@v1.8.0"
226
+ ],
227
+ "registry_config": {
228
+ "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/(?:([^/?#]+)/)?([^/?#]+)",
234
+ "components": {
235
+ "namespace": true,
236
+ "namespace_required": false,
237
+ "version_in_url": false
238
+ }
239
+ }
240
+ },
241
+ "hackage": {
242
+ "description": "Haskell packages",
243
+ "default_registry": "https://hackage.haskell.org",
244
+ "examples": [
245
+ "pkg:hackage/aeson@2.1.1.0",
246
+ "pkg:hackage/lens@5.2",
247
+ "pkg:hackage/mtl@2.2.2"
248
+ ],
249
+ "registry_config": {
250
+ "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
+ "reverse_regex": "^https://hackage\\.haskell\\.org/package/([^/?#-]+)(?:-([^/?#]+))?",
256
+ "components": {
257
+ "namespace": false,
258
+ "version_in_url": true,
259
+ "version_separator": "-"
260
+ }
261
+ }
262
+ },
263
+ "hex": {
264
+ "description": "Hex packages",
265
+ "default_registry": "https://repo.hex.pm",
266
+ "examples": [
267
+ "pkg:hex/phoenix@1.6.15",
268
+ "pkg:hex/ecto@3.9.4",
269
+ "pkg:hex/plug@1.14.0"
270
+ ],
271
+ "registry_config": {
272
+ "base_url": "https://hex.pm/packages",
273
+ "route_patterns": [
274
+ "https://hex.pm/packages/:name"
275
+ ],
276
+ "reverse_regex": "^https://hex\\.pm/packages/([^/?#]+)",
277
+ "components": {
278
+ "namespace": false,
279
+ "version_in_url": false
280
+ }
281
+ }
282
+ },
283
+ "huggingface": {
284
+ "description": "Hugging Face ML models",
285
+ "default_registry": "https://huggingface.co",
286
+ "examples": [
287
+ "pkg:huggingface/transformers@4.25.1",
288
+ "pkg:huggingface/tokenizers@0.13.2",
289
+ "pkg:huggingface/datasets@2.7.1"
290
+ ]
291
+ },
292
+ "luarocks": {
293
+ "description": "Lua packages installed with LuaRocks",
294
+ "default_registry": "https://luarocks.org",
295
+ "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
+ ]
300
+ },
301
+ "maven": {
302
+ "description": "Maven JARs and related artifacts",
303
+ "default_registry": "https://repo.maven.apache.org/maven2",
304
+ "examples": [
305
+ "pkg:maven/org.apache.commons/commons-lang3@3.12.0",
306
+ "pkg:maven/junit/junit@4.13.2",
307
+ "pkg:maven/org.springframework/spring-core@5.3.23"
308
+ ],
309
+ "registry_config": {
310
+ "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
+ "reverse_regex": "^https://mvnrepository\\.com/artifact/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
316
+ "components": {
317
+ "namespace": true,
318
+ "namespace_required": true,
319
+ "version_in_url": true,
320
+ "version_path": "/"
321
+ }
322
+ }
323
+ },
324
+ "mlflow": {
325
+ "description": "MLflow ML models",
326
+ "default_registry": null,
327
+ "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"
331
+ ]
332
+ },
333
+ "npm": {
334
+ "description": "Node NPM packages",
335
+ "default_registry": "https://registry.npmjs.org",
336
+ "examples": [
337
+ "pkg:npm/@babel/core@7.20.0",
338
+ "pkg:npm/lodash@4.17.21",
339
+ "pkg:npm/react@18.2.0"
340
+ ],
341
+ "registry_config": {
342
+ "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
+ "reverse_regex": "^https://(?:www\\.)?npmjs\\.com/package/(?:(@[^/]+)/)?([^/?#]+)(?:/v/([^/?#]+))?",
350
+ "components": {
351
+ "namespace": true,
352
+ "namespace_required": false,
353
+ "namespace_prefix": "@",
354
+ "version_in_url": true,
355
+ "version_path": "/v/"
356
+ }
357
+ }
358
+ },
359
+ "nuget": {
360
+ "description": "NuGet .NET packages",
361
+ "default_registry": "https://www.nuget.org",
362
+ "examples": [
363
+ "pkg:nuget/Newtonsoft.Json@13.0.1",
364
+ "pkg:nuget/EntityFramework@6.4.4",
365
+ "pkg:nuget/Microsoft.AspNetCore@6.0.13"
366
+ ],
367
+ "registry_config": {
368
+ "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
+ "reverse_regex": "^https://(?:www\\.)?nuget\\.org/packages/([^/?#]+)(?:/([^/?#]+))?",
374
+ "components": {
375
+ "namespace": false,
376
+ "version_in_url": true,
377
+ "version_path": "/"
378
+ }
379
+ }
380
+ },
381
+ "oci": {
382
+ "description": "Artifacts stored in registries that conform to OCI Distribution Specification",
383
+ "default_registry": null,
384
+ "examples": [
385
+ "pkg:oci/hello-world@sha256:90659bf80b44ce6be8234e6ff90a1ac34acbeb826903b02cfa0da11c82cbc042",
386
+ "pkg:oci/nginx@1.21.6",
387
+ "pkg:oci/ubuntu@20.04"
388
+ ]
389
+ },
390
+ "pub": {
391
+ "description": "Dart and Flutter packages",
392
+ "default_registry": "https://pub.dartlang.org",
393
+ "examples": [
394
+ "pkg:pub/http@0.13.5",
395
+ "pkg:pub/flutter@3.3.10",
396
+ "pkg:pub/provider@6.0.5"
397
+ ],
398
+ "registry_config": {
399
+ "base_url": "https://pub.dev/packages",
400
+ "route_patterns": [
401
+ "https://pub.dev/packages/:name"
402
+ ],
403
+ "reverse_regex": "^https://pub\\.dev/packages/([^/?#]+)",
404
+ "components": {
405
+ "namespace": false,
406
+ "version_in_url": false
407
+ }
408
+ }
409
+ },
410
+ "pypi": {
411
+ "description": "Python packages",
412
+ "default_registry": "https://pypi.org",
413
+ "examples": [
414
+ "pkg:pypi/django@4.1.4",
415
+ "pkg:pypi/requests@2.28.1",
416
+ "pkg:pypi/numpy@1.24.1"
417
+ ],
418
+ "registry_config": {
419
+ "base_url": "https://pypi.org/project",
420
+ "route_patterns": [
421
+ "https://pypi.org/project/:name/",
422
+ "https://pypi.org/project/:name/:version/"
423
+ ],
424
+ "reverse_regex": "^https://pypi\\.org/project/([^/?#]+)/?(?:([^/?#]+)/?)?",
425
+ "components": {
426
+ "namespace": false,
427
+ "version_in_url": true,
428
+ "version_path": "/",
429
+ "trailing_slash": true
430
+ }
431
+ }
432
+ },
433
+ "qpkg": {
434
+ "description": "QNX packages",
435
+ "default_registry": null,
436
+ "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"
440
+ ]
441
+ },
442
+ "rpm": {
443
+ "description": "RPMs",
444
+ "default_registry": null,
445
+ "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"
449
+ ]
450
+ },
451
+ "swid": {
452
+ "description": "Software Identification (SWID) tags",
453
+ "default_registry": null,
454
+ "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"
458
+ ]
459
+ },
460
+ "swift": {
461
+ "description": "Swift packages",
462
+ "default_registry": null,
463
+ "examples": [
464
+ "pkg:swift/github.com/Alamofire/Alamofire@5.6.4",
465
+ "pkg:swift/github.com/apple/swift-package-manager@1.7.0"
466
+ ],
467
+ "registry_config": {
468
+ "base_url": "https://swiftpackageindex.com",
469
+ "route_patterns": [
470
+ "https://swiftpackageindex.com/:namespace/:name"
471
+ ],
472
+ "reverse_regex": "^https://swiftpackageindex\\.com/([^/?#]+)/([^/?#]+)",
473
+ "components": {
474
+ "namespace": true,
475
+ "namespace_required": true,
476
+ "version_in_url": false
477
+ }
478
+ }
479
+ },
480
+ "deno": {
481
+ "description": "Deno packages",
482
+ "default_registry": null,
483
+ "examples": [
484
+ "pkg:deno/oak@12.0.0",
485
+ "pkg:deno/std@0.177.0#http/server"
486
+ ],
487
+ "registry_config": {
488
+ "base_url": "https://deno.land/x",
489
+ "route_patterns": [
490
+ "https://deno.land/x/:name",
491
+ "https://deno.land/x/:name@:version"
492
+ ],
493
+ "reverse_regex": "^https://deno\\.land/x/([^/?#@]+)(?:@([^/?#]+))?",
494
+ "components": {
495
+ "namespace": false,
496
+ "version_in_url": true,
497
+ "version_prefix": "@"
498
+ }
499
+ }
500
+ },
501
+ "homebrew": {
502
+ "description": "Homebrew packages",
503
+ "default_registry": null,
504
+ "examples": [
505
+ "pkg:homebrew/wget@1.21.3",
506
+ "pkg:homebrew/node@19.6.0"
507
+ ],
508
+ "registry_config": {
509
+ "base_url": "https://formulae.brew.sh/formula",
510
+ "route_patterns": [
511
+ "https://formulae.brew.sh/formula/:name"
512
+ ],
513
+ "reverse_regex": "^https://formulae\\.brew\\.sh/formula/([^/?#]+)",
514
+ "components": {
515
+ "namespace": false,
516
+ "version_in_url": false
517
+ }
518
+ }
519
+ },
520
+ "bioconductor": {
521
+ "description": "Bioconductor packages",
522
+ "default_registry": null,
523
+ "examples": [
524
+ "pkg:bioconductor/IRanges@2.28.0",
525
+ "pkg:bioconductor/GenomicRanges@1.46.1"
526
+ ],
527
+ "registry_config": {
528
+ "base_url": "https://bioconductor.org/packages",
529
+ "route_patterns": [
530
+ "https://bioconductor.org/packages/:name"
531
+ ],
532
+ "reverse_regex": "^https://bioconductor\\.org/packages/([^/?#]+)",
533
+ "components": {
534
+ "namespace": false,
535
+ "version_in_url": false
536
+ }
537
+ }
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
+ }
582
+ }
583
+ }