importmap-package-manager 0.1.1 → 0.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/README.md +2 -1
- data/lib/importmap-package-manager/manager.rb +9 -2
- data/lib/importmap-package-manager/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 791dde6e33bec01df8818663bfb94d209c8fa02b71a40bea24312d27f5561cf6
|
4
|
+
data.tar.gz: 3f361e19c1872803ced8a0244df898400d44ba65cf376e62e580ee13d18fb504
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac524099ee91327feb693e6b204e4dd7cd1268d194dff7992b288913c7598805f1d09d073f2764ba378403d077c4e6d40ac22521d2cefe886061a47dea01962e
|
7
|
+
data.tar.gz: 1cf2c31735e802eaab2bbcfdf86a0b0bd5ce651c044e209701000fd7bb20d5871a776a1c9ddb16608a70c5e74bf7bccf261f6870b01554daf04384f073f333ee
|
data/README.md
CHANGED
@@ -60,7 +60,8 @@ In this case, the key is just a unique identifier. It isn't used at all.
|
|
60
60
|
|
61
61
|
The options that can be passed for each import are:
|
62
62
|
|
63
|
-
|
63
|
+
| Option | Description |
|
64
|
+
| ------ | ----------- |
|
64
65
|
| package | Package name, as listed in npmjs.com |
|
65
66
|
| version | Version number constraint, using [ruby syntax](https://guides.rubygems.org/patterns/#pessimistic-version-constraint) |
|
66
67
|
| subpath | A subpath within the package to pin. This will be used in both the import name, and the path. |
|
@@ -50,10 +50,13 @@ module ImportmapPackageManager
|
|
50
50
|
def resolve_package_version(package, version_requirement)
|
51
51
|
# Step 1: Query NPM registry for all versions
|
52
52
|
response = Net::HTTP.get(URI("https://registry.npmjs.org/#{package}"))
|
53
|
-
versions = JSON.parse(response)["versions"].keys
|
53
|
+
versions = JSON.parse(response)["versions"].keys
|
54
54
|
|
55
55
|
# Step 2: Find latest version that matches version_requirement
|
56
|
-
versions.
|
56
|
+
satisfying_versions = versions.select { |version| version_requirement.satisfied_by?(Gem::Version.new(version)) }
|
57
|
+
allow_prerelease = satisfying_versions.all? { |version| prerelease?(version) }
|
58
|
+
sorted = satisfying_versions.sort { |a, b| Gem::Version.new(a) <=> Gem::Version.new(b) }.reverse
|
59
|
+
sorted.find { |version| (allow_prerelease || !prerelease?(version)) }
|
57
60
|
rescue StandardError => e
|
58
61
|
raise HTTPError, "Unexpected transport error (#{e.class}: #{e.message})"
|
59
62
|
end
|
@@ -94,6 +97,10 @@ module ImportmapPackageManager
|
|
94
97
|
end
|
95
98
|
end
|
96
99
|
end
|
100
|
+
|
101
|
+
def prerelease?(version_string)
|
102
|
+
/[a-zA-Z]/.match?(version_string)
|
103
|
+
end
|
97
104
|
end
|
98
105
|
end
|
99
106
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: importmap-package-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Kniffin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|
@@ -47,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
requirements: []
|
50
|
-
rubygems_version: 3.
|
50
|
+
rubygems_version: 3.5.11
|
51
51
|
signing_key:
|
52
52
|
specification_version: 4
|
53
53
|
summary: Manages importmap package versions using ruby-like version constraints
|