statsig 2.4.1 → 2.4.3

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: a73dff2c4255a3b901ad254824cb55a223c8129a05edd287f956e3b7abf1e71d
4
- data.tar.gz: 75ea8f14e827296e82c5df1b49107849c1629dfd91a004c6f5c4a29e006ded70
3
+ metadata.gz: 13aa0d6726504ea7bef05a61a4663426e4b1a9fe3e7c8a5c56ade788665d5e2d
4
+ data.tar.gz: bd6886c09af0b6403c288c25de15d7c5f40783656dc891518469b7da030f59b2
5
5
  SHA512:
6
- metadata.gz: 55cb1736693cdf800daa3e4f541afed79d6c27cf7b9497895779969d8c3339674baeb6cf9452227c5c851f3b0b3496782814e7e8ba85d71e7c4bcf1021652ee1
7
- data.tar.gz: 19b08ba6d365a429ac663ec5d2311d204e7386708ced8cc95e6683aa0da3d7bb822aab74b00a2ca1b87513b30b957fddf505a82d5fbe567d617077ccd03ccd68
6
+ metadata.gz: f827849b39d1c4bc2166b8c4b2477644fd24997a2e9b840e9b87db61f051f6a564e04b9e3b1779688baf8d7c128ed3ccf4f5e277a9353ee9cdc44f57afd6b8aa
7
+ data.tar.gz: 613c1a21bf021fe0b68920a102e834f03ba2e7c9816175f771526daad548ad496089fbbeae0b4abb7ad179e3fe09daaf376d6d347011bfed97a2a0e164e1780c
data/lib/hash_utils.rb CHANGED
@@ -7,9 +7,9 @@ module Statsig
7
7
  class HashUtils
8
8
  def self.djb2(input_str)
9
9
  hash = 0
10
- input_str.each_char.each do |c|
11
- hash = (hash << 5) - hash + c.ord
12
- hash &= hash
10
+ input_str.each_codepoint.each do |c|
11
+ hash = (hash << 5) - hash + c
12
+ hash &= 0xFFFFFFFF
13
13
  end
14
14
  hash &= 0xFFFFFFFF # Convert to unsigned 32-bit integer
15
15
  return hash.to_s
data/lib/statsig.rb CHANGED
@@ -370,7 +370,7 @@ module Statsig
370
370
  def self.get_statsig_metadata
371
371
  {
372
372
  'sdkType' => 'ruby-server',
373
- 'sdkVersion' => '2.4.1',
373
+ 'sdkVersion' => '2.4.3',
374
374
  'languageVersion' => RUBY_VERSION
375
375
  }
376
376
  end
@@ -65,15 +65,27 @@ module Statsig
65
65
  if user_persisted_values.nil?
66
66
  user_persisted_values = {}
67
67
  end
68
- user_persisted_values[config_name] = evaluation.to_hash
68
+ hash = evaluation.to_hash
69
+ if hash['json_value'].is_a?(Hash)
70
+ hash['json_value'] = self.class.symbolize_keys(hash['json_value'])
71
+ end
72
+ user_persisted_values[config_name] = hash
69
73
  end
70
74
 
71
75
  private
72
76
 
73
77
  def self.parse(values_string)
74
- return JSON.parse(values_string)
75
- rescue JSON::ParserError
76
- return nil
78
+ return nil if values_string.nil?
79
+
80
+ parsed = JSON.parse(values_string)
81
+ return nil if parsed.nil?
82
+
83
+ parsed.each do |config_name, config_value|
84
+ if config_value.is_a?(Hash) && config_value.key?('json_value')
85
+ config_value['json_value'] = symbolize_keys(config_value['json_value'])
86
+ end
87
+ end
88
+ parsed
77
89
  end
78
90
 
79
91
  def self.stringify(values_object)
@@ -85,5 +97,15 @@ module Statsig
85
97
  def self.get_storage_key(user, id_type)
86
98
  "#{user.get_unit_id(id_type)}:#{id_type}"
87
99
  end
100
+
101
+ def self.symbolize_keys(hash)
102
+ return hash unless hash.is_a?(Hash)
103
+
104
+ symbolized = {}
105
+ hash.each do |key, value|
106
+ symbolized[key.to_sym] = value.is_a?(Hash) ? symbolize_keys(value) : value
107
+ end
108
+ symbolized
109
+ end
88
110
  end
89
111
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsig
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Statsig, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-14 00:00:00.000000000 Z
11
+ date: 2025-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler