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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 681327cf8b27471c587cc33868b19b2665ed34f56ab5410b1f1a34babc245147
4
- data.tar.gz: d7df595eefc373e14f424dfb5a9ae9de266ca2c7c35e1088d58e359de839820b
3
+ metadata.gz: 791dde6e33bec01df8818663bfb94d209c8fa02b71a40bea24312d27f5561cf6
4
+ data.tar.gz: 3f361e19c1872803ced8a0244df898400d44ba65cf376e62e580ee13d18fb504
5
5
  SHA512:
6
- metadata.gz: baf1bbf8cdb38acad848e8105f7b5f39d19648130d87488b628ea1bc70a3eec1c7530f799070ce839736e126fde549277573bab34c8d0c2b306811790a1196c3
7
- data.tar.gz: a95716ef3d76e0c7ea821c5e8ab1dacd612edf053fb1eb45ad38c1f9c0ff21d350270abf6d730e6db6705628b3ac8db11dc2210d0b6c53b3801043b4b6a7c318
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
- || Option || Description ||
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.map { |version_string| Gem::Version.new(version_string) }
53
+ versions = JSON.parse(response)["versions"].keys
54
54
 
55
55
  # Step 2: Find latest version that matches version_requirement
56
- versions.sort.reverse.find { |version| version_requirement.satisfied_by?(version) && !version.prerelease? }
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
@@ -1,3 +1,3 @@
1
1
  module ImportmapPackageManager
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.2.0".freeze
3
3
  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.1.1
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: 2024-01-15 00:00:00.000000000 Z
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.3.26
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