purl 1.1.2 → 1.2.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.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/CHANGELOG.md +24 -0
- data/README.md +19 -0
- data/lib/purl/package_url.rb +6 -5
- data/lib/purl/registry_url.rb +6 -24
- data/lib/purl/version.rb +1 -1
- data/purl-types.json +155 -117
- metadata +2 -4
- data/schemas/purl-types.schema.json +0 -154
- data/schemas/test-suite-data.schema.json +0 -134
- data/test-suite-data.json +0 -710
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 519631a904ead8452084959edb20711e684c0fc9c0b0a848ff6775f86bc31675
|
|
4
|
+
data.tar.gz: cb82893be40a50ae28651b78ed293dd0303b6cc926b81985fe256d32f0b0fea7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5ef9defb2759c124020aa5d6ba88eb281e0bd1fbf256cafdd3ba7c4e17bca09aec0286fe2851b74e12313062a5d3e38a76db85376b60d3f645e9f4720e0cb2b8
|
|
7
|
+
data.tar.gz: 6399a94cf6bd5bd92fa6e5da30f7f9c6e056982728bc5828ead26e9d8c9c17b5beedbe4bdababebc0bee701bdeaf27f4ffa7b84e54a451d45e7dea7c9575c9b7
|
data/.gitmodules
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.0] - 2025-07-27
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Default registry URLs for 10 additional package types:
|
|
14
|
+
- `golang`: https://pkg.go.dev (Go package discovery site)
|
|
15
|
+
- `luarocks`: https://luarocks.org (Lua package repository)
|
|
16
|
+
- `clojars`: https://clojars.org (Clojure package repository)
|
|
17
|
+
- `elm`: https://package.elm-lang.org (Elm package catalog)
|
|
18
|
+
- `deno`: https://deno.land (Deno module registry)
|
|
19
|
+
- `homebrew`: https://formulae.brew.sh (Homebrew package browser)
|
|
20
|
+
- `bioconductor`: https://bioconductor.org (R bioinformatics packages)
|
|
21
|
+
- `huggingface`: https://huggingface.co (Machine learning models)
|
|
22
|
+
- `swift`: https://swiftpackageindex.com (Swift package index)
|
|
23
|
+
- `conan`: https://conan.io/center (C/C++ package center)
|
|
24
|
+
|
|
25
|
+
### Enhanced
|
|
26
|
+
- Registry configuration support for newly added package types
|
|
27
|
+
- Updated test suite to validate all new default registries
|
|
28
|
+
- Improved package type coverage with comprehensive registry URL mapping
|
|
29
|
+
|
|
30
|
+
### Configuration
|
|
31
|
+
- Updated `purl-types.json` to version 1.2.0 with enhanced registry configurations
|
|
32
|
+
- Added specialized registry handling for Go's unique import path structure
|
|
33
|
+
|
|
10
34
|
## [1.1.2] - 2025-07-25
|
|
11
35
|
|
|
12
36
|
### Added
|
data/README.md
CHANGED
|
@@ -385,6 +385,25 @@ rake spec:types
|
|
|
385
385
|
rake spec:verify_types
|
|
386
386
|
```
|
|
387
387
|
|
|
388
|
+
### Testing Against Official Specification
|
|
389
|
+
|
|
390
|
+
This library includes the official [purl-spec](https://github.com/package-url/purl-spec) repository as a git submodule for testing and validation:
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
# Initialize submodule (first time only)
|
|
394
|
+
git submodule update --init --recursive
|
|
395
|
+
|
|
396
|
+
# Update submodule to latest spec
|
|
397
|
+
git submodule update --remote purl-spec
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
The tests use files from the submodule to:
|
|
401
|
+
- **Schema validation**: Validate our `purl-types.json` against the official schema in `purl-spec/schemas/`
|
|
402
|
+
- **Type compliance**: Ensure our supported types match the official types in `purl-spec/types/`
|
|
403
|
+
- **Test data**: Access official test cases and examples from `purl-spec/tests/`
|
|
404
|
+
|
|
405
|
+
The submodule is automatically updated weekly via Dependabot, ensuring tests stay current with the latest specification changes. When the submodule updates, you can review and merge the PR to adopt new spec requirements.
|
|
406
|
+
|
|
388
407
|
### Rake Tasks
|
|
389
408
|
|
|
390
409
|
- `rake spec:update` - Fetch latest test cases from official PURL spec repository
|
data/lib/purl/package_url.rb
CHANGED
|
@@ -532,14 +532,15 @@ module Purl
|
|
|
532
532
|
end
|
|
533
533
|
|
|
534
534
|
def validate_conan_specific_rules
|
|
535
|
-
# For conan packages, if a namespace is present WITHOUT any qualifiers,
|
|
536
|
-
# it's ambiguous (
|
|
537
|
-
|
|
535
|
+
# For conan packages, if a namespace is present WITHOUT any qualifiers at all,
|
|
536
|
+
# it's ambiguous. However, any qualifiers (including build settings) make it unambiguous.
|
|
537
|
+
# According to the official spec, user/channel are only required if the package was published with them.
|
|
538
|
+
if @namespace && (@qualifiers.nil? || @qualifiers.empty?)
|
|
538
539
|
raise ValidationError.new(
|
|
539
|
-
"Conan PURLs with namespace require
|
|
540
|
+
"Conan PURLs with namespace require qualifiers to be unambiguous",
|
|
540
541
|
component: :qualifiers,
|
|
541
542
|
value: @qualifiers,
|
|
542
|
-
rule: "conan packages with namespace need
|
|
543
|
+
rule: "conan packages with namespace need qualifiers for disambiguation"
|
|
543
544
|
)
|
|
544
545
|
end
|
|
545
546
|
|
data/lib/purl/registry_url.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Purl
|
|
|
5
5
|
# Load registry patterns from JSON configuration
|
|
6
6
|
def self.load_registry_patterns
|
|
7
7
|
@registry_patterns ||= begin
|
|
8
|
-
# Load
|
|
8
|
+
# Load extended registry configs
|
|
9
9
|
config_path = File.join(__dir__, "..", "..", "purl-types.json")
|
|
10
10
|
require "json"
|
|
11
11
|
config = JSON.parse(File.read(config_path))
|
|
@@ -16,37 +16,19 @@ module Purl
|
|
|
16
16
|
next unless type_config["registry_config"]
|
|
17
17
|
|
|
18
18
|
registry_config = type_config["registry_config"]
|
|
19
|
-
patterns[type] = build_pattern_config(type, registry_config)
|
|
19
|
+
patterns[type] = build_pattern_config(type, registry_config, type_config)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
patterns
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def self.build_pattern_config(type, config)
|
|
27
|
-
# Get the default registry for this type from
|
|
28
|
-
type_config = load_types_config["types"][type]
|
|
26
|
+
def self.build_pattern_config(type, config, type_config)
|
|
27
|
+
# Get the default registry for this type from the extended config
|
|
29
28
|
default_registry = type_config["default_registry"]
|
|
30
29
|
|
|
31
|
-
#
|
|
32
|
-
route_patterns = []
|
|
33
|
-
if default_registry
|
|
34
|
-
# Add all template variations
|
|
35
|
-
if config["path_template"]
|
|
36
|
-
route_patterns << default_registry + config["path_template"]
|
|
37
|
-
end
|
|
38
|
-
if config["namespace_path_template"]
|
|
39
|
-
route_patterns << default_registry + config["namespace_path_template"]
|
|
40
|
-
end
|
|
41
|
-
if config["version_path_template"]
|
|
42
|
-
route_patterns << default_registry + config["version_path_template"]
|
|
43
|
-
end
|
|
44
|
-
if config["namespace_version_path_template"]
|
|
45
|
-
route_patterns << default_registry + config["namespace_version_path_template"]
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
# Fall back to legacy route_patterns if available
|
|
49
|
-
route_patterns = config["route_patterns"] if route_patterns.empty? && config["route_patterns"]
|
|
30
|
+
# Use route_patterns directly from our extended registry config
|
|
31
|
+
route_patterns = config["route_patterns"] || []
|
|
50
32
|
|
|
51
33
|
# Build reverse regex from template or use legacy format
|
|
52
34
|
reverse_regex = nil
|
data/lib/purl/version.rb
CHANGED
data/purl-types.json
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"description": "PURL types
|
|
4
|
-
"source": "https://github.com/package-url/purl-spec
|
|
5
|
-
"last_updated": "2025-07-
|
|
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.
|
|
12
|
-
"pkg:alpm/arch/
|
|
13
|
-
"pkg:alpm/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?
|
|
21
|
-
"pkg:apk/alpine/
|
|
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":
|
|
35
|
+
"default_registry": null,
|
|
37
36
|
"examples": [
|
|
38
|
-
"pkg:bitnami/wordpress
|
|
39
|
-
"pkg:bitnami/
|
|
40
|
-
"pkg:bitnami/
|
|
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": "
|
|
44
|
+
"description": "Cargo packages for Rust",
|
|
45
45
|
"default_registry": "https://crates.io",
|
|
46
46
|
"examples": [
|
|
47
47
|
"pkg:cargo/rand@0.7.2",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
"cocoapods": {
|
|
64
|
-
"description": "CocoaPods",
|
|
64
|
+
"description": "CocoaPods pods",
|
|
65
65
|
"default_registry": "https://cdn.cocoapods.org/",
|
|
66
66
|
"examples": [
|
|
67
67
|
"pkg:cocoapods/Alamofire@5.6.4",
|
|
@@ -102,16 +102,27 @@
|
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
"conan": {
|
|
105
|
-
"description": "Conan C/C++ packages",
|
|
106
|
-
"default_registry": "https://
|
|
105
|
+
"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",
|
|
106
|
+
"default_registry": "https://conan.io/center",
|
|
107
107
|
"examples": [
|
|
108
|
-
"pkg:conan/
|
|
109
|
-
"pkg:conan/openssl@
|
|
110
|
-
"pkg:conan/
|
|
111
|
-
]
|
|
108
|
+
"pkg:conan/openssl@3.0.3",
|
|
109
|
+
"pkg:conan/openssl.org/openssl@3.0.3?user=bincrafters&channel=stable",
|
|
110
|
+
"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"
|
|
111
|
+
],
|
|
112
|
+
"registry_config": {
|
|
113
|
+
"base_url": "https://conan.io/center/recipes",
|
|
114
|
+
"route_patterns": [
|
|
115
|
+
"https://conan.io/center/recipes/:name"
|
|
116
|
+
],
|
|
117
|
+
"reverse_regex": "^https://conan\\.io/center/recipes/([^/?#]+)",
|
|
118
|
+
"components": {
|
|
119
|
+
"namespace": false,
|
|
120
|
+
"version_in_url": false
|
|
121
|
+
}
|
|
122
|
+
}
|
|
112
123
|
},
|
|
113
124
|
"conda": {
|
|
114
|
-
"description": "Conda packages",
|
|
125
|
+
"description": "conda is for Conda packages",
|
|
115
126
|
"default_registry": "https://repo.anaconda.com",
|
|
116
127
|
"examples": [
|
|
117
128
|
"pkg:conda/numpy@1.24.1",
|
|
@@ -160,16 +171,18 @@
|
|
|
160
171
|
]
|
|
161
172
|
},
|
|
162
173
|
"deb": {
|
|
163
|
-
"description": "Debian, Debian derivatives, and Ubuntu packages",
|
|
174
|
+
"description": "Debian packages, Debian derivatives, and Ubuntu packages",
|
|
164
175
|
"default_registry": null,
|
|
165
176
|
"examples": [
|
|
166
|
-
"pkg:deb/debian/curl@7.
|
|
167
|
-
"pkg:deb/
|
|
168
|
-
"pkg:deb/
|
|
177
|
+
"pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie",
|
|
178
|
+
"pkg:deb/debian/dpkg@1.19.0.4?arch=amd64&distro=stretch",
|
|
179
|
+
"pkg:deb/ubuntu/dpkg@1.19.0.4?arch=amd64",
|
|
180
|
+
"pkg:deb/debian/attr@1:2.4.47-2?arch=source",
|
|
181
|
+
"pkg:deb/debian/attr@1:2.4.47-2%2Bb1?arch=amd64"
|
|
169
182
|
]
|
|
170
183
|
},
|
|
171
184
|
"docker": {
|
|
172
|
-
"description": "Docker images",
|
|
185
|
+
"description": "for Docker images",
|
|
173
186
|
"default_registry": "https://hub.docker.com",
|
|
174
187
|
"examples": [
|
|
175
188
|
"pkg:docker/nginx@1.21.6",
|
|
@@ -200,12 +213,12 @@
|
|
|
200
213
|
}
|
|
201
214
|
},
|
|
202
215
|
"generic": {
|
|
203
|
-
"description": "
|
|
216
|
+
"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
217
|
"default_registry": null,
|
|
205
218
|
"examples": [
|
|
206
|
-
"pkg:generic/
|
|
207
|
-
"pkg:generic/
|
|
208
|
-
"pkg:generic/
|
|
219
|
+
"pkg:generic/openssl@1.1.10g",
|
|
220
|
+
"pkg:generic/openssl@1.1.10g?download_url=https://openssl.org/source/openssl-1.1.0g.tar.gz&checksum=sha256:de4d501267da",
|
|
221
|
+
"pkg:generic/bitwarderl?vcs_url=git%2Bhttps://git.fsfe.org/dxtr/bitwarderl%40cc55108da32"
|
|
209
222
|
]
|
|
210
223
|
},
|
|
211
224
|
"github": {
|
|
@@ -219,22 +232,24 @@
|
|
|
219
232
|
},
|
|
220
233
|
"golang": {
|
|
221
234
|
"description": "Go packages",
|
|
222
|
-
"default_registry":
|
|
235
|
+
"default_registry": "https://pkg.go.dev",
|
|
223
236
|
"examples": [
|
|
237
|
+
"pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c",
|
|
224
238
|
"pkg:golang/google.golang.org/genproto#googleapis/api/annotations",
|
|
225
|
-
"pkg:golang/github.com/gorilla/
|
|
239
|
+
"pkg:golang/github.com/gorilla/context@234fd47e07d1004f0aed9c#api"
|
|
226
240
|
],
|
|
227
241
|
"registry_config": {
|
|
228
242
|
"base_url": "https://pkg.go.dev",
|
|
229
243
|
"route_patterns": [
|
|
230
244
|
"https://pkg.go.dev/:namespace/:name",
|
|
231
|
-
"https://pkg.go.dev/:
|
|
245
|
+
"https://pkg.go.dev/:full_path"
|
|
232
246
|
],
|
|
233
|
-
"reverse_regex": "^https://pkg\\.go\\.dev/(
|
|
247
|
+
"reverse_regex": "^https://pkg\\.go\\.dev/(.+)",
|
|
234
248
|
"components": {
|
|
235
249
|
"namespace": true,
|
|
236
|
-
"namespace_required":
|
|
237
|
-
"version_in_url": false
|
|
250
|
+
"namespace_required": true,
|
|
251
|
+
"version_in_url": false,
|
|
252
|
+
"special_handling": "golang_import_path"
|
|
238
253
|
}
|
|
239
254
|
}
|
|
240
255
|
},
|
|
@@ -284,22 +299,47 @@
|
|
|
284
299
|
"description": "Hugging Face ML models",
|
|
285
300
|
"default_registry": "https://huggingface.co",
|
|
286
301
|
"examples": [
|
|
287
|
-
"pkg:huggingface/
|
|
288
|
-
"pkg:huggingface/
|
|
289
|
-
|
|
290
|
-
|
|
302
|
+
"pkg:huggingface/distilbert-base-uncased@043235d6088ecd3dd5fb5ca3592b6913fd516027",
|
|
303
|
+
"pkg:huggingface/microsoft/deberta-v3-base@559062ad13d311b87b2c455e67dcd5f1c8f65111?repository_url=https://hub-ci.huggingface.co"
|
|
304
|
+
],
|
|
305
|
+
"registry_config": {
|
|
306
|
+
"base_url": "https://huggingface.co",
|
|
307
|
+
"route_patterns": [
|
|
308
|
+
"https://huggingface.co/:namespace/:name",
|
|
309
|
+
"https://huggingface.co/:name"
|
|
310
|
+
],
|
|
311
|
+
"reverse_regex": "^https://huggingface\\.co/(?:([^/?#]+)/)?([^/?#]+)",
|
|
312
|
+
"components": {
|
|
313
|
+
"namespace": true,
|
|
314
|
+
"namespace_required": false,
|
|
315
|
+
"version_in_url": false
|
|
316
|
+
}
|
|
317
|
+
}
|
|
291
318
|
},
|
|
292
319
|
"luarocks": {
|
|
293
320
|
"description": "Lua packages installed with LuaRocks",
|
|
294
321
|
"default_registry": "https://luarocks.org",
|
|
295
322
|
"examples": [
|
|
296
|
-
"pkg:luarocks/luasocket@3.
|
|
297
|
-
"pkg:luarocks/
|
|
298
|
-
"pkg:luarocks/
|
|
299
|
-
]
|
|
323
|
+
"pkg:luarocks/luasocket@3.1.0-1",
|
|
324
|
+
"pkg:luarocks/hisham/luafilesystem@1.8.0-1",
|
|
325
|
+
"pkg:luarocks/username/packagename@0.1.0-1?repository_url=https://example.com/private_rocks_server/"
|
|
326
|
+
],
|
|
327
|
+
"registry_config": {
|
|
328
|
+
"base_url": "https://luarocks.org/modules",
|
|
329
|
+
"route_patterns": [
|
|
330
|
+
"https://luarocks.org/modules/:namespace/:name",
|
|
331
|
+
"https://luarocks.org/modules/:name"
|
|
332
|
+
],
|
|
333
|
+
"reverse_regex": "^https://luarocks\\.org/modules/(?:([^/?#]+)/)?([^/?#]+)",
|
|
334
|
+
"components": {
|
|
335
|
+
"namespace": true,
|
|
336
|
+
"namespace_required": false,
|
|
337
|
+
"version_in_url": false
|
|
338
|
+
}
|
|
339
|
+
}
|
|
300
340
|
},
|
|
301
341
|
"maven": {
|
|
302
|
-
"description": "Maven JARs and related artifacts",
|
|
342
|
+
"description": "PURL type for Maven JARs and related artifacts.",
|
|
303
343
|
"default_registry": "https://repo.maven.apache.org/maven2",
|
|
304
344
|
"examples": [
|
|
305
345
|
"pkg:maven/org.apache.commons/commons-lang3@3.12.0",
|
|
@@ -322,16 +362,15 @@
|
|
|
322
362
|
}
|
|
323
363
|
},
|
|
324
364
|
"mlflow": {
|
|
325
|
-
"description": "MLflow ML models",
|
|
365
|
+
"description": "MLflow ML models (Azure ML, Databricks, etc.)",
|
|
326
366
|
"default_registry": null,
|
|
327
367
|
"examples": [
|
|
328
|
-
"pkg:mlflow/
|
|
329
|
-
"pkg:mlflow/
|
|
330
|
-
"pkg:mlflow/model/tensorflow-classification@1.5.0"
|
|
368
|
+
"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",
|
|
369
|
+
"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
370
|
]
|
|
332
371
|
},
|
|
333
372
|
"npm": {
|
|
334
|
-
"description": "
|
|
373
|
+
"description": "PURL type for npm packages.",
|
|
335
374
|
"default_registry": "https://registry.npmjs.org",
|
|
336
375
|
"examples": [
|
|
337
376
|
"pkg:npm/@babel/core@7.20.0",
|
|
@@ -379,16 +418,17 @@
|
|
|
379
418
|
}
|
|
380
419
|
},
|
|
381
420
|
"oci": {
|
|
382
|
-
"description": "
|
|
421
|
+
"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
422
|
"default_registry": null,
|
|
384
423
|
"examples": [
|
|
385
|
-
"pkg:oci/
|
|
386
|
-
"pkg:oci/
|
|
387
|
-
"pkg:oci/
|
|
424
|
+
"pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=docker.io/library/debian&arch=amd64&tag=latest",
|
|
425
|
+
"pkg:oci/debian@sha256%3A244fd47e07d10?repository_url=ghcr.io/debian&tag=bullseye",
|
|
426
|
+
"pkg:oci/static@sha256%3A244fd47e07d10?repository_url=gcr.io/distroless/static&tag=latest",
|
|
427
|
+
"pkg:oci/hello-wasm@sha256%3A244fd47e07d10?tag=v1"
|
|
388
428
|
]
|
|
389
429
|
},
|
|
390
430
|
"pub": {
|
|
391
|
-
"description": "Dart and Flutter packages",
|
|
431
|
+
"description": "Dart and Flutter pub packages",
|
|
392
432
|
"default_registry": "https://pub.dartlang.org",
|
|
393
433
|
"examples": [
|
|
394
434
|
"pkg:pub/http@0.13.5",
|
|
@@ -434,32 +474,30 @@
|
|
|
434
474
|
"description": "QNX packages",
|
|
435
475
|
"default_registry": null,
|
|
436
476
|
"examples": [
|
|
437
|
-
"pkg:qpkg/qnx
|
|
438
|
-
"pkg:qpkg/qnx
|
|
439
|
-
"pkg:qpkg/qnx/ph@7.1.0"
|
|
477
|
+
"pkg:qpkg/blackberry/com.qnx.sdp@7.0.0.SGA201702151847",
|
|
478
|
+
"pkg:qpkg/blackberry/com.qnx.qnx710.foo.bar.qux@0.0.4.01449T202205040833L"
|
|
440
479
|
]
|
|
441
480
|
},
|
|
442
481
|
"rpm": {
|
|
443
|
-
"description": "
|
|
482
|
+
"description": "RPM packages",
|
|
444
483
|
"default_registry": null,
|
|
445
484
|
"examples": [
|
|
446
|
-
"pkg:rpm/fedora/curl@7.
|
|
447
|
-
"pkg:rpm/
|
|
448
|
-
"pkg:rpm/opensuse/git@2.38.1-1.1?distro=opensuse-tumbleweed"
|
|
485
|
+
"pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25",
|
|
486
|
+
"pkg:rpm/centerim@4.22.10-1.el6?arch=i686&epoch=1&distro=fedora-25"
|
|
449
487
|
]
|
|
450
488
|
},
|
|
451
489
|
"swid": {
|
|
452
|
-
"description": "Software Identification (SWID) tags",
|
|
490
|
+
"description": "PURL type for ISO-IEC 19770-2 Software Identification (SWID) tags.",
|
|
453
491
|
"default_registry": null,
|
|
454
492
|
"examples": [
|
|
455
|
-
"pkg:swid/
|
|
456
|
-
"pkg:swid/
|
|
457
|
-
"pkg:swid/
|
|
493
|
+
"pkg:swid/Acme/example.com/Enterprise+Server@1.0.0?tag_id=75b8c285-fa7b-485b-b199-4745e3004d0d",
|
|
494
|
+
"pkg:swid/Fedora@29?tag_id=org.fedoraproject.Fedora-29",
|
|
495
|
+
"pkg:swid/Adobe+Systems+Incorporated/Adobe+InDesign@CC?tag_id=CreativeCloud-CS6-Win-GM-MUL"
|
|
458
496
|
]
|
|
459
497
|
},
|
|
460
498
|
"swift": {
|
|
461
499
|
"description": "Swift packages",
|
|
462
|
-
"default_registry":
|
|
500
|
+
"default_registry": "https://swiftpackageindex.com",
|
|
463
501
|
"examples": [
|
|
464
502
|
"pkg:swift/github.com/Alamofire/Alamofire@5.6.4",
|
|
465
503
|
"pkg:swift/github.com/apple/swift-package-manager@1.7.0"
|
|
@@ -477,9 +515,52 @@
|
|
|
477
515
|
}
|
|
478
516
|
}
|
|
479
517
|
},
|
|
518
|
+
"clojars": {
|
|
519
|
+
"description": "Clojars packages",
|
|
520
|
+
"default_registry": "https://clojars.org",
|
|
521
|
+
"examples": [
|
|
522
|
+
"pkg:clojars/org.clojure/clojure@1.11.1",
|
|
523
|
+
"pkg:clojars/ring/ring-core@1.9.5"
|
|
524
|
+
],
|
|
525
|
+
"registry_config": {
|
|
526
|
+
"base_url": "https://clojars.org",
|
|
527
|
+
"route_patterns": [
|
|
528
|
+
"https://clojars.org/:namespace/:name",
|
|
529
|
+
"https://clojars.org/:name"
|
|
530
|
+
],
|
|
531
|
+
"reverse_regex": "^https://clojars\\.org/(?:([^/?#]+)/)?([^/?#]+)",
|
|
532
|
+
"components": {
|
|
533
|
+
"namespace": true,
|
|
534
|
+
"namespace_required": false,
|
|
535
|
+
"version_in_url": false
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
},
|
|
539
|
+
"elm": {
|
|
540
|
+
"description": "Elm packages",
|
|
541
|
+
"default_registry": "https://package.elm-lang.org",
|
|
542
|
+
"examples": [
|
|
543
|
+
"pkg:elm/elm/http@2.0.0",
|
|
544
|
+
"pkg:elm/elm-community/json-extra@4.3.0"
|
|
545
|
+
],
|
|
546
|
+
"registry_config": {
|
|
547
|
+
"base_url": "https://package.elm-lang.org/packages",
|
|
548
|
+
"route_patterns": [
|
|
549
|
+
"https://package.elm-lang.org/packages/:namespace/:name/latest",
|
|
550
|
+
"https://package.elm-lang.org/packages/:namespace/:name/:version"
|
|
551
|
+
],
|
|
552
|
+
"reverse_regex": "^https://package\\.elm-lang\\.org/packages/([^/?#]+)/([^/?#]+)(?:/([^/?#]+))?",
|
|
553
|
+
"components": {
|
|
554
|
+
"namespace": true,
|
|
555
|
+
"namespace_required": true,
|
|
556
|
+
"version_in_url": true,
|
|
557
|
+
"default_version": "latest"
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
},
|
|
480
561
|
"deno": {
|
|
481
562
|
"description": "Deno packages",
|
|
482
|
-
"default_registry":
|
|
563
|
+
"default_registry": "https://deno.land",
|
|
483
564
|
"examples": [
|
|
484
565
|
"pkg:deno/oak@12.0.0",
|
|
485
566
|
"pkg:deno/std@0.177.0#http/server"
|
|
@@ -500,7 +581,7 @@
|
|
|
500
581
|
},
|
|
501
582
|
"homebrew": {
|
|
502
583
|
"description": "Homebrew packages",
|
|
503
|
-
"default_registry":
|
|
584
|
+
"default_registry": "https://formulae.brew.sh",
|
|
504
585
|
"examples": [
|
|
505
586
|
"pkg:homebrew/wget@1.21.3",
|
|
506
587
|
"pkg:homebrew/node@19.6.0"
|
|
@@ -519,7 +600,7 @@
|
|
|
519
600
|
},
|
|
520
601
|
"bioconductor": {
|
|
521
602
|
"description": "Bioconductor packages",
|
|
522
|
-
"default_registry":
|
|
603
|
+
"default_registry": "https://bioconductor.org",
|
|
523
604
|
"examples": [
|
|
524
605
|
"pkg:bioconductor/IRanges@2.28.0",
|
|
525
606
|
"pkg:bioconductor/GenomicRanges@1.46.1"
|
|
@@ -535,49 +616,6 @@
|
|
|
535
616
|
"version_in_url": false
|
|
536
617
|
}
|
|
537
618
|
}
|
|
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
619
|
}
|
|
582
620
|
}
|
|
583
621
|
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: purl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Nesbitt
|
|
@@ -18,6 +18,7 @@ executables: []
|
|
|
18
18
|
extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
|
20
20
|
files:
|
|
21
|
+
- ".gitmodules"
|
|
21
22
|
- CHANGELOG.md
|
|
22
23
|
- CODE_OF_CONDUCT.md
|
|
23
24
|
- CONTRIBUTING.md
|
|
@@ -31,10 +32,7 @@ files:
|
|
|
31
32
|
- lib/purl/registry_url.rb
|
|
32
33
|
- lib/purl/version.rb
|
|
33
34
|
- purl-types.json
|
|
34
|
-
- schemas/purl-types.schema.json
|
|
35
|
-
- schemas/test-suite-data.schema.json
|
|
36
35
|
- sig/purl.rbs
|
|
37
|
-
- test-suite-data.json
|
|
38
36
|
homepage: https://github.com/andrew/purl
|
|
39
37
|
licenses: []
|
|
40
38
|
metadata:
|