encoded_id 1.0.0.rc3 → 1.0.0.rc5

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/sig/encoded_id.rbs CHANGED
@@ -7,6 +7,78 @@ module EncodedId
7
7
  InvalidAlphabetError: ::ArgumentError
8
8
  InvalidInputError: ::ArgumentError
9
9
 
10
+ class HashId
11
+ MIN_ALPHABET_LENGTH: ::Integer
12
+
13
+ SEP_DIV: ::Float
14
+
15
+ GUARD_DIV: ::Float
16
+
17
+ DEFAULT_SEPS: ::String
18
+
19
+ DEFAULT_ALPHABET: ::String
20
+
21
+ attr_reader salt: ::String
22
+
23
+ attr_reader min_hash_length: ::Integer
24
+
25
+ @alphabet: ::String
26
+
27
+ attr_reader alphabet: ::String
28
+
29
+ attr_reader seps: ::String | ::Array[::String]
30
+
31
+ attr_reader guards: untyped
32
+
33
+ def initialize: (?::String salt, ?::Integer min_hash_length, ?untyped alphabet) -> void
34
+
35
+ def encode: (*(Array[::Integer] | ::Integer) numbers) -> ::String
36
+
37
+ def encode_hex: (::String str) -> ::String
38
+
39
+ def decode: (::String hash) -> ::Array[::Integer]
40
+
41
+ def decode_hex: (::String hash) -> ::Array[::Integer]
42
+
43
+ # protected
44
+
45
+ def internal_encode: (untyped numbers) -> untyped
46
+
47
+ def internal_decode: (untyped hash, untyped alphabet) -> untyped
48
+
49
+ def consistent_shuffle: (::Array[::String] chars, ::String salt1, ::String ?salt2, ::Integer salt1_length) -> untyped
50
+
51
+ def hash: (untyped input, untyped alphabet) -> untyped
52
+
53
+ def unhash: (untyped input, untyped alphabet) -> untyped
54
+
55
+ private
56
+
57
+ def setup_alphabet: () -> untyped
58
+
59
+ def setup_seps: () -> untyped
60
+
61
+ def setup_guards: () -> untyped
62
+
63
+ SaltError: ArgumentError
64
+
65
+ MinLengthError: ArgumentError
66
+
67
+ AlphabetError: ArgumentError
68
+
69
+ InputError: ArgumentError
70
+
71
+ def validate_attributes: () -> untyped
72
+
73
+ def validate_alphabet: () -> (untyped | nil)
74
+
75
+ def hex_string?: (untyped string) -> untyped
76
+
77
+ def pick_characters: (untyped array, untyped index) -> untyped
78
+
79
+ def uniq_characters: (untyped string) -> untyped
80
+ end
81
+
10
82
  class Alphabet
11
83
  MIN_UNIQUE_CHARACTERS: ::Integer
12
84
 
@@ -59,7 +131,7 @@ module EncodedId
59
131
  end
60
132
 
61
133
  class ReversibleId
62
- def initialize: (salt: ::String, ?length: ::Integer, ?split_at: ::Integer, ?split_with: ::String, ?alphabet: Alphabet, ?hex_digit_encoding_group_size: ::Integer, ?max_length: ::Integer) -> void
134
+ def initialize: (salt: ::String, ?length: ::Integer, ?split_at: ::Integer, ?split_with: ::String, ?alphabet: Alphabet, ?hex_digit_encoding_group_size: ::Integer, ?max_length: ::Integer, ?max_inputs_per_id: ::Integer) -> void
63
135
 
64
136
  # Encode the input values into a hash
65
137
  def encode: (encodeableValue values) -> ::String
@@ -75,7 +147,7 @@ module EncodedId
75
147
 
76
148
  private
77
149
 
78
- @encoded_id_generator: ::Hashids
150
+ @encoded_id_generator: HashId
79
151
  @split_regex: ::Regexp
80
152
  @hex_string_separator: ::Integer
81
153
 
@@ -95,20 +167,21 @@ module EncodedId
95
167
  def validate_salt: (::String) -> ::String
96
168
  def validate_length: (::Integer) -> ::Integer
97
169
  def validate_max_length: (::Integer | nil) -> (::Integer | nil)
170
+ def validate_max_input: (::Integer) -> ::Integer
98
171
  def validate_split_at: (::Integer | nil) -> (::Integer | nil)
99
- def validate_split_with: (::String, Alphabet) -> ::String
172
+ def validate_split_with: (::String, Alphabet) -> (::String | nil)
100
173
  def validate_hex_digit_encoding_group_size: (::Integer) -> ::Integer
101
174
  def valid_integer_option?: (::Integer | nil) -> bool
102
175
 
103
176
  def prepare_input: (untyped value) -> ::Array[::Integer]
104
177
 
105
- def encoded_id_generator: () -> ::Hashids
178
+ def encoded_id_generator: () -> HashId
106
179
 
107
180
  def split_regex: () -> ::Regexp
108
181
 
109
182
  def humanize_length: (::String hash) -> ::String
110
183
 
111
- def convert_to_hash: (::String str) -> ::String
184
+ def convert_to_hash: (::String str, bool) -> ::String
112
185
 
113
186
  def map_equivalent_characters: (::String str) -> ::String
114
187
  def max_length_exceeded?: (::String str) -> bool
metadata CHANGED
@@ -1,54 +1,50 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: encoded_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc3
4
+ version: 1.0.0.rc5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Ierodiaconou
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2023-10-23 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: hashids
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
27
12
  description: Encode your numerical IDs (eg record primary keys) into obfuscated strings
28
13
  that can be used in URLs. The obfuscated strings are reversible, so you can decode
29
14
  them back into the original numerical IDs. Supports encoding multiple IDs at once,
30
15
  and generating IDs with custom alphabets and separators to make the IDs easier to
31
- read or share.
16
+ read or share. Dependency free.
32
17
  email:
33
18
  - stevegeek@gmail.com
34
19
  executables: []
35
20
  extensions: []
36
21
  extra_rdoc_files: []
37
22
  files:
23
+ - ".devcontainer/Dockerfile"
24
+ - ".devcontainer/compose.yml"
25
+ - ".devcontainer/devcontainer.json"
26
+ - ".standard.yml"
38
27
  - CHANGELOG.md
39
28
  - Gemfile
40
29
  - LICENSE.txt
41
30
  - README.md
42
31
  - Rakefile
43
32
  - Steepfile
33
+ - ext/encoded_id/extconf.rb
34
+ - ext/encoded_id/extension.c
35
+ - ext/encoded_id/hashids.c
36
+ - ext/encoded_id/hashids.h
44
37
  - lib/encoded_id.rb
45
38
  - lib/encoded_id/alphabet.rb
39
+ - lib/encoded_id/hash_id.rb
40
+ - lib/encoded_id/hash_id_consistent_shuffle.rb
41
+ - lib/encoded_id/hash_id_salt.rb
46
42
  - lib/encoded_id/hex_representation.rb
43
+ - lib/encoded_id/ordinal_alphabet_separator_guards.rb
47
44
  - lib/encoded_id/reversible_id.rb
48
45
  - lib/encoded_id/version.rb
49
46
  - rbs_collection.yaml
50
47
  - sig/encoded_id.rbs
51
- - sig/hash_ids.rbs
52
48
  homepage: https://github.com/stevegeek/encoded_id
53
49
  licenses:
54
50
  - MIT
@@ -56,10 +52,10 @@ metadata:
56
52
  homepage_uri: https://github.com/stevegeek/encoded_id
57
53
  source_code_uri: https://github.com/stevegeek/encoded_id
58
54
  changelog_uri: https://github.com/stevegeek/encoded_id/blob/master/CHANGELOG.md
59
- post_install_message:
60
55
  rdoc_options: []
61
56
  require_paths:
62
57
  - lib
58
+ - ext
63
59
  required_ruby_version: !ruby/object:Gem::Requirement
64
60
  requirements:
65
61
  - - ">="
@@ -67,13 +63,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
63
  version: 2.7.0
68
64
  required_rubygems_version: !ruby/object:Gem::Requirement
69
65
  requirements:
70
- - - ">"
66
+ - - ">="
71
67
  - !ruby/object:Gem::Version
72
- version: 1.3.1
68
+ version: '0'
73
69
  requirements: []
74
- rubygems_version: 3.4.20
75
- signing_key:
70
+ rubygems_version: 3.6.7
76
71
  specification_version: 4
77
72
  summary: EncodedId is a gem for creating reversible obfuscated IDs from numerical
78
- IDs. It uses Hash IDs under the hood.
73
+ IDs. It uses an implementation of Hash IDs under the hood.
79
74
  test_files: []
data/sig/hash_ids.rbs DELETED
@@ -1,70 +0,0 @@
1
- class Hashids
2
- MIN_ALPHABET_LENGTH: ::Integer
3
-
4
- SEP_DIV: ::Float
5
-
6
- GUARD_DIV: ::Float
7
-
8
- DEFAULT_SEPS: ::String
9
-
10
- DEFAULT_ALPHABET: ::String
11
-
12
- attr_reader salt: ::String
13
-
14
- attr_reader min_hash_length: ::Integer
15
-
16
- attr_reader alphabet: ::String
17
-
18
- attr_reader seps: ::String
19
-
20
- attr_reader guards: untyped
21
-
22
- def initialize: (?::String salt, ?::Integer min_hash_length, ?untyped alphabet) -> void
23
-
24
- def encode: (*(Array[::Integer] | ::Integer) numbers) -> ::String
25
-
26
- def encode_hex: (::String str) -> ::String
27
-
28
- def decode: (::String hash) -> ::Array[::Integer]
29
-
30
- def decode_hex: (::String hash) -> ::Array[::Integer]
31
-
32
- # protected
33
-
34
- def internal_encode: (untyped numbers) -> untyped
35
-
36
- def internal_decode: (untyped hash, untyped alphabet) -> untyped
37
-
38
- def consistent_shuffle: (untyped alphabet, untyped salt) -> untyped
39
-
40
- def hash: (untyped input, untyped alphabet) -> untyped
41
-
42
- def unhash: (untyped input, untyped alphabet) -> untyped
43
-
44
- private
45
-
46
- def setup_alphabet: () -> untyped
47
-
48
- def setup_seps: () -> untyped
49
-
50
- def setup_guards: () -> untyped
51
-
52
- SaltError: ArgumentError
53
-
54
- MinLengthError: ArgumentError
55
-
56
- AlphabetError: ArgumentError
57
-
58
- InputError: ArgumentError
59
-
60
- def validate_attributes: () -> untyped
61
-
62
- def validate_alphabet: () -> (untyped | nil)
63
-
64
- def hex_string?: (untyped string) -> untyped
65
-
66
- def pick_characters: (untyped array, untyped index) -> untyped
67
-
68
- def uniq_characters: (untyped string) -> untyped
69
- end
70
-