lite-uxid 1.5.1 → 1.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/lite/uxid/base/irreversible.rb +0 -4
- data/lib/lite/uxid/nanoid.rb +27 -2
- data/lib/lite/uxid/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d000996f6e79fc0122e86a88c034391d9853146de2af1e44a1da19234ad538b1
|
4
|
+
data.tar.gz: 932aa03aeb3f62c58cb96328d38d9bc97ca09cc15f5f9a617147464448a45856
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1241d664904c1db3b9008bbd70bfb509070dc7adab95313ab5cac6a859fafeb6254f902ab0664086163bfa6d5998643d7f74f059525206d9354214f5595767ac
|
7
|
+
data.tar.gz: 51df74a8df875bbe8e67179960953d6ab54f8f49c11ab5783e90e5c31f6b8e8022ecf1074439083341cbdf9c40dce070c102d29bb947dd148b362f1dabdfc6a6
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.5.2] - 2024-09-20
|
10
|
+
### Changed
|
11
|
+
- Fixed nanoid of differing length error
|
12
|
+
|
9
13
|
## [1.5.1] - 2024-09-20
|
10
14
|
### Changed
|
11
15
|
- Use after commit on create instead of after create
|
data/Gemfile.lock
CHANGED
data/lib/lite/uxid/nanoid.rb
CHANGED
@@ -5,13 +5,38 @@ module Lite
|
|
5
5
|
class Nanoid < Base::Irreversible
|
6
6
|
|
7
7
|
def encode
|
8
|
-
uxid =
|
9
|
-
|
8
|
+
uxid = +""
|
9
|
+
|
10
|
+
loop do
|
11
|
+
cached_bytes = bytes
|
12
|
+
|
13
|
+
(0...step).each do |idx|
|
14
|
+
byte = cached_bytes[idx] & mask
|
15
|
+
char = byte && coder_charset[byte]
|
16
|
+
next unless char
|
17
|
+
|
18
|
+
uxid << char
|
19
|
+
return uxid if uxid.size == coder_size
|
20
|
+
end
|
10
21
|
end
|
11
22
|
|
12
23
|
"#{coder_prefix}#{uxid}"
|
13
24
|
end
|
14
25
|
|
26
|
+
private
|
27
|
+
|
28
|
+
def bytes
|
29
|
+
SecureRandom.random_bytes(coder_size).bytes
|
30
|
+
end
|
31
|
+
|
32
|
+
def mask
|
33
|
+
@mask ||= (2 << (Math.log(coder_length - 1) / Math.log(2))) - 1
|
34
|
+
end
|
35
|
+
|
36
|
+
def step
|
37
|
+
@step = (1.6 * mask * coder_size / coder_length).ceil
|
38
|
+
end
|
39
|
+
|
15
40
|
end
|
16
41
|
end
|
17
42
|
end
|
data/lib/lite/uxid/version.rb
CHANGED