typesense 0.15.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b0902a6b96d21122114a769a6d55c55cba28880ace9b116a1e3c67251148bc9
4
- data.tar.gz: 5b8bec6c747b00d61ed1028569272519d724b3262b3753753a2fea0c4b5db972
3
+ metadata.gz: '06109ee5575c2188f478655bff4795ecc880618c304b3f1c0e50211287f8f9d7'
4
+ data.tar.gz: 7771a1fa516b731a95554de2f5e9bfb168bc1eb62fb516f7475ba707a88e3826
5
5
  SHA512:
6
- metadata.gz: 298131cd62bb16c8fc26797eb06ffb09689ec98553ef77ba3bd4811aff5f46de777bd6a9a62ac13665d95800189456557e741b89fbbec3911adc0ddd1cd008d3
7
- data.tar.gz: db2215ce53918e3e37800ba596a0a7eb7a4b75127d266cf7081e94c6bfac87834ce881d6082c850041fff755ab9436f72de0f1e5f50d25b99f047f84819ed1fc
6
+ metadata.gz: eaab9b60b14196dcd217222f5e506ccec30758814e224e209c4d9df945cf8aecc94e16c1102fabd736850a714803539d294b940c0bd020ce51bf940a5ac1a95c
7
+ data.tar.gz: cf592673f925704675d79e163acd7e6ddc8319ef0a46ed2a2c9a1781da93d538e29c76432a7dd32dc1a93783b7e511bdc87ce063e77f40705346bd5d524114c4
@@ -10,7 +10,7 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  matrix:
13
- ruby-version: ['2.6', '2.7', '3.0']
13
+ ruby-version: ['2.7', '3.0', '3.2']
14
14
 
15
15
  steps:
16
16
  - uses: actions/checkout@v3
data/.rubocop.yml CHANGED
@@ -1,5 +1,8 @@
1
+ require: rubocop-rspec
2
+
1
3
  AllCops:
2
4
  NewCops: enable
5
+ TargetRubyVersion: 2.7
3
6
 
4
7
  Style/Documentation:
5
8
  Enabled: false
@@ -37,3 +40,12 @@ Layout/LineLength:
37
40
  Lint/SuppressedException:
38
41
  Exclude:
39
42
  - examples/**
43
+
44
+ RSpec/ExampleLength:
45
+ Enabled: false
46
+
47
+ RSpec/MultipleExpectations:
48
+ Enabled: false
49
+
50
+ Style/HashSyntax:
51
+ Enabled: false # We still want to support older versions of Ruby
data/Gemfile CHANGED
@@ -4,5 +4,21 @@ source 'https://rubygems.org'
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
+ # Dev dependencies
8
+ gem 'awesome_print', '~> 1.8'
9
+ gem 'bundler', '~> 2.0'
10
+ gem 'codecov', '~> 0.1'
11
+ gem 'guard', '~> 2.16'
12
+ gem 'guard-rubocop', '~> 1.3'
13
+ gem 'rake', '~> 13.0'
14
+ gem 'rspec', '~> 3.9'
15
+ gem 'rspec_junit_formatter', '~> 0.4'
16
+ gem 'rspec-legacy_formatters', '~> 1.0' # For codecov formatter
17
+ gem 'rubocop', '~> 1.12'
18
+ gem 'rubocop-rspec', '~> 2.4', require: false
19
+ gem 'simplecov', '~> 0.18'
20
+ gem 'timecop', '~> 0.9'
21
+ gem 'webmock', '~> 3.8'
22
+
7
23
  # Specify your gem's dependencies in typesense.gemspec
8
24
  gemspec
data/README.md CHANGED
@@ -33,7 +33,7 @@ Tests are also a good place to know how the the library works internally: [spec]
33
33
 
34
34
  | Typesense Server | typesense-ruby |
35
35
  |------------------|----------------|
36
- | \>= v0.25.0 | \>= v0.15.0 |
36
+ | \>= v0.25.0 | \>= v1.0.0 |
37
37
  | \>= v0.23.0 | \>= v0.14.0 |
38
38
  | \>= v0.21.0 | \>= v0.13.0 |
39
39
  | \>= v0.20.0 | \>= v0.12.0 |
@@ -50,7 +50,11 @@ Tests are also a good place to know how the the library works internally: [spec]
50
50
 
51
51
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
52
52
 
53
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
53
+ To install this gem onto your local machine, run `bundle exec rake install`.
54
+
55
+ ### Releasing
56
+
57
+ To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
54
58
 
55
59
  ## Contributing
56
60
 
data/examples/aliases.rb CHANGED
@@ -3,47 +3,47 @@
3
3
  ##
4
4
  # These examples walk you through operations specifically related to aliases
5
5
 
6
- require_relative './client_initialization'
6
+ require_relative 'client_initialization'
7
7
 
8
8
  # Create a collection
9
9
  create_response = @typesense.collections.create(
10
- "name": 'books_january',
11
- "fields": [
12
- { "name": 'title', "type": 'string' },
13
- { "name": 'authors', "type": 'string[]' },
14
- { "name": 'authors_facet', "type": 'string[]', "facet": true },
15
- { "name": 'publication_year', "type": 'int32' },
16
- { "name": 'publication_year_facet', "type": 'string', "facet": true },
17
- { "name": 'ratings_count', "type": 'int32' },
18
- { "name": 'average_rating', "type": 'float' },
19
- { "name": 'image_url', "type": 'string' }
10
+ name: 'books_january',
11
+ fields: [
12
+ { name: 'title', type: 'string' },
13
+ { name: 'authors', type: 'string[]' },
14
+ { name: 'authors_facet', type: 'string[]', facet: true },
15
+ { name: 'publication_year', type: 'int32' },
16
+ { name: 'publication_year_facet', type: 'string', facet: true },
17
+ { name: 'ratings_count', type: 'int32' },
18
+ { name: 'average_rating', type: 'float' },
19
+ { name: 'image_url', type: 'string' }
20
20
  ],
21
- "default_sorting_field": 'ratings_count'
21
+ default_sorting_field: 'ratings_count'
22
22
  )
23
23
 
24
24
  ap create_response
25
25
 
26
26
  # Create or update an existing alias
27
27
  create_alias_response = @typesense.aliases.upsert('books',
28
- "collection_name": 'books_january')
28
+ collection_name: 'books_january')
29
29
  ap create_alias_response
30
30
 
31
31
  # Add a book using the alias name `books`
32
32
  hunger_games_book = {
33
- 'id': '1', 'original_publication_year': 2008, 'authors': ['Suzanne Collins'], 'average_rating': 4.34,
34
- 'publication_year': 2008, 'publication_year_facet': '2008', 'authors_facet': ['Suzanne Collins'],
35
- 'title': 'The Hunger Games',
36
- 'image_url': 'https://images.gr-assets.com/books/1447303603m/2767052.jpg',
37
- 'ratings_count': 4_780_653
33
+ id: '1', original_publication_year: 2008, authors: ['Suzanne Collins'], average_rating: 4.34,
34
+ publication_year: 2008, publication_year_facet: '2008', authors_facet: ['Suzanne Collins'],
35
+ title: 'The Hunger Games',
36
+ image_url: 'https://images.gr-assets.com/books/1447303603m/2767052.jpg',
37
+ ratings_count: 4_780_653
38
38
  }
39
39
 
40
40
  @typesense.collections['books'].documents.create(hunger_games_book)
41
41
 
42
42
  # Search using the alias
43
43
  ap @typesense.collections['books'].documents.search(
44
- 'q': 'hunger',
45
- 'query_by': 'title',
46
- 'sort_by': 'ratings_count:desc'
44
+ q: 'hunger',
45
+ query_by: 'title',
46
+ sort_by: 'ratings_count:desc'
47
47
  )
48
48
 
49
49
  # List all aliases
@@ -4,7 +4,7 @@
4
4
  # These examples walk you through all the operations you can do on a collection and a document
5
5
  # Search is specifically covered in another file in the examples folder
6
6
 
7
- require_relative './client_initialization'
7
+ require_relative 'client_initialization'
8
8
 
9
9
  ##
10
10
  # Create a collection
data/examples/keys.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  ##
4
4
  # These examples walk you through operations to manage API Keys
5
5
 
6
- require_relative './client_initialization'
6
+ require_relative 'client_initialization'
7
7
 
8
8
  # Let's setup some test data for this example
9
9
  schema = {
@@ -95,18 +95,18 @@ ap unscoped_search_only_api_key_response
95
95
  # This is useful when you store multi-tenant data in a single Typesense server, but you only want
96
96
  # a particular tenant to access their own data. You'd generate one scoped search key per tenant.
97
97
  # IMPORTANT: scoped search keys should only be generated *server-side*, so as to not leak the unscoped main search key to clients
98
- scoped_search_only_api_key = @typesense.keys.generate_scoped_search_key(unscoped_search_only_api_key, { 'filter_by': 'company_id:124' })
98
+ scoped_search_only_api_key = @typesense.keys.generate_scoped_search_key(unscoped_search_only_api_key, { filter_by: 'company_id:124' })
99
99
  ap "scoped_search_only_api_key: #{scoped_search_only_api_key}"
100
100
 
101
101
  # Now let's search the data using the scoped API Key for company_id:124
102
102
  # You can do searches with this scoped_search_only_api_key from the server-side or client-side
103
103
  scoped_typesense_client = Typesense::Client.new({
104
- 'nodes': [{
105
- 'host': 'localhost',
106
- 'port': '8108',
107
- 'protocol': 'http'
104
+ nodes: [{
105
+ host: 'localhost',
106
+ port: '8108',
107
+ protocol: 'http'
108
108
  }],
109
- 'api_key': scoped_search_only_api_key
109
+ api_key: scoped_search_only_api_key
110
110
  })
111
111
 
112
112
  search_results = scoped_typesense_client.collections['users'].documents.search({
@@ -117,8 +117,8 @@ ap search_results
117
117
 
118
118
  # Search for a user that exists, but is outside the current key's scope
119
119
  search_results = scoped_typesense_client.collections['users'].documents.search({
120
- 'q': 'Maxwell',
121
- 'query_by': 'user_name'
120
+ q: 'Maxwell',
121
+ query_by: 'user_name'
122
122
  })
123
123
  ap search_results # Will return empty result set
124
124
 
@@ -3,7 +3,7 @@
3
3
  ##
4
4
  # These examples walk you through operations specifically related to result overrides / curation
5
5
 
6
- require_relative './client_initialization'
6
+ require_relative 'client_initialization'
7
7
 
8
8
  # Delete the collection if it already exists
9
9
  begin
@@ -69,19 +69,19 @@ schema = {
69
69
 
70
70
  @typesense.collections['companies'].overrides.upsert(
71
71
  'promote-doofenshmirtz',
72
- "rule": {
73
- "query": 'doofen',
74
- "match": 'exact'
72
+ rule: {
73
+ query: 'doofen',
74
+ match: 'exact'
75
75
  },
76
- "includes": [{ 'id' => '126', 'position' => 1 }]
76
+ includes: [{ 'id' => '126', 'position' => 1 }]
77
77
  )
78
78
  @typesense.collections['companies'].overrides.upsert(
79
79
  'promote-acme',
80
- "rule": {
81
- "query": 'stark',
82
- "match": 'exact'
80
+ rule: {
81
+ query: 'stark',
82
+ match: 'exact'
83
83
  },
84
- "includes": [{ 'id' => '125', 'position' => 1 }]
84
+ includes: [{ 'id' => '125', 'position' => 1 }]
85
85
  )
86
86
 
87
87
  ##
data/examples/search.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  ##
4
4
  # These examples walk you through operations specifically related to search
5
5
 
6
- require_relative './client_initialization'
6
+ require_relative 'client_initialization'
7
7
 
8
8
  ##
9
9
  # Create a collection
data/examples/synonyms.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  ##
4
4
  # These examples walk you through operations specifically related to synonyms
5
5
 
6
- require_relative './client_initialization'
6
+ require_relative 'client_initialization'
7
7
 
8
8
  # Delete the collection if it already exists
9
9
  begin
@@ -88,7 +88,7 @@ module Typesense
88
88
  @logger.debug "Request #{method}:#{uri_for(endpoint, node)} to Node #{node[:index]} was successfully made (at the network layer). Response Code was #{response.code}."
89
89
 
90
90
  parsed_response = if response.headers && (response.headers['content-type'] || '').include?('application/json')
91
- Oj.load(response.body)
91
+ Oj.load(response.body, mode: :compat)
92
92
  else
93
93
  response.body
94
94
  end
@@ -11,7 +11,7 @@ module Typesense
11
11
  @nearest_node = options[:nearest_node]
12
12
  @connection_timeout_seconds = options[:connection_timeout_seconds] || options[:timeout_seconds] || 10
13
13
  @healthcheck_interval_seconds = options[:healthcheck_interval_seconds] || 15
14
- @num_retries = options[:num_retries] || @nodes.length + (@nearest_node.nil? ? 0 : 1) || 3
14
+ @num_retries = options[:num_retries] || (@nodes.length + (@nearest_node.nil? ? 0 : 1)) || 3
15
15
  @retry_interval_seconds = options[:retry_interval_seconds] || 0.1
16
16
  @api_key = options[:api_key]
17
17
 
@@ -21,7 +21,11 @@ module Typesense
21
21
  end
22
22
 
23
23
  def update(document, options = {})
24
- @api_call.post(endpoint_path, document, options.merge(action: :update))
24
+ if options['filter_by'] || options[:filter_by]
25
+ @api_call.patch(endpoint_path, document, options)
26
+ else
27
+ @api_call.post(endpoint_path, document, options.merge(action: :update))
28
+ end
25
29
  end
26
30
 
27
31
  def create_many(documents, options = {})
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Typesense
4
- VERSION = '0.15.0'
4
+ VERSION = '1.0.0'
5
5
  end
data/typesense.gemspec CHANGED
@@ -15,7 +15,9 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = 'https://typesense.org'
16
16
  spec.license = 'Apache-2.0'
17
17
 
18
- spec.required_ruby_version = '>= 2.4'
18
+ # rubocop:disable Gemspec/RequiredRubyVersion, Lint/RedundantCopDisableDirective
19
+ spec.required_ruby_version = '>= 2.7'
20
+ # rubocop:enable Gemspec/RequiredRubyVersion, Lint/RedundantCopDisableDirective
19
21
 
20
22
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
21
23
  f.match(%r{^(test|spec|features)/})
@@ -24,22 +26,7 @@ Gem::Specification.new do |spec|
24
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
27
  spec.require_paths = ['lib']
26
28
 
27
- spec.add_development_dependency 'awesome_print', '~> 1.8'
28
- spec.add_development_dependency 'bundler', '~> 2.0'
29
- spec.add_development_dependency 'codecov', '~> 0.1'
30
- spec.add_development_dependency 'guard', '~> 2.16'
31
- spec.add_development_dependency 'guard-rubocop', '~> 1.3'
32
- spec.add_development_dependency 'pry-byebug', '~> 3.9'
33
- spec.add_development_dependency 'rake', '~> 13.0'
34
- spec.add_development_dependency 'rspec', '~> 3.9'
35
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
36
- spec.add_development_dependency 'rspec-legacy_formatters', '~> 1.0' # For codecov formatter
37
- spec.add_development_dependency 'rubocop', '~> 0.88'
38
- spec.add_development_dependency 'rubocop-rspec', '~> 1.39'
39
- spec.add_development_dependency 'simplecov', '~> 0.18'
40
- spec.add_development_dependency 'timecop', '~> 0.9'
41
- spec.add_development_dependency 'webmock', '~> 3.8'
42
-
43
- spec.add_dependency 'oj', '~> 3.11'
29
+ spec.add_dependency 'oj', '~> 3.16'
44
30
  spec.add_dependency 'typhoeus', '~> 1.4'
31
+ spec.metadata['rubygems_mfa_required'] = 'true'
45
32
  end
metadata CHANGED
@@ -1,239 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typesense
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Typesense, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-07 00:00:00.000000000 Z
11
+ date: 2023-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: awesome_print
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.8'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.8'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.0'
41
- - !ruby/object:Gem::Dependency
42
- name: codecov
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.1'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.1'
55
- - !ruby/object:Gem::Dependency
56
- name: guard
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.16'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.16'
69
- - !ruby/object:Gem::Dependency
70
- name: guard-rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.3'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.3'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-byebug
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.9'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.9'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '13.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '13.0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '3.9'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '3.9'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec_junit_formatter
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '0.4'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '0.4'
139
- - !ruby/object:Gem::Dependency
140
- name: rspec-legacy_formatters
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '1.0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '1.0'
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '0.88'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '0.88'
167
- - !ruby/object:Gem::Dependency
168
- name: rubocop-rspec
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '1.39'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '1.39'
181
- - !ruby/object:Gem::Dependency
182
- name: simplecov
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: '0.18'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: '0.18'
195
- - !ruby/object:Gem::Dependency
196
- name: timecop
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: '0.9'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - "~>"
207
- - !ruby/object:Gem::Version
208
- version: '0.9'
209
- - !ruby/object:Gem::Dependency
210
- name: webmock
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '3.8'
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '3.8'
223
13
  - !ruby/object:Gem::Dependency
224
14
  name: oj
225
15
  requirement: !ruby/object:Gem::Requirement
226
16
  requirements:
227
17
  - - "~>"
228
18
  - !ruby/object:Gem::Version
229
- version: '3.11'
19
+ version: '3.16'
230
20
  type: :runtime
231
21
  prerelease: false
232
22
  version_requirements: !ruby/object:Gem::Requirement
233
23
  requirements:
234
24
  - - "~>"
235
25
  - !ruby/object:Gem::Version
236
- version: '3.11'
26
+ version: '3.16'
237
27
  - !ruby/object:Gem::Dependency
238
28
  name: typhoeus
239
29
  requirement: !ruby/object:Gem::Requirement
@@ -307,7 +97,8 @@ files:
307
97
  homepage: https://typesense.org
308
98
  licenses:
309
99
  - Apache-2.0
310
- metadata: {}
100
+ metadata:
101
+ rubygems_mfa_required: 'true'
311
102
  post_install_message:
312
103
  rdoc_options: []
313
104
  require_paths:
@@ -316,14 +107,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
316
107
  requirements:
317
108
  - - ">="
318
109
  - !ruby/object:Gem::Version
319
- version: '2.4'
110
+ version: '2.7'
320
111
  required_rubygems_version: !ruby/object:Gem::Requirement
321
112
  requirements:
322
113
  - - ">="
323
114
  - !ruby/object:Gem::Version
324
115
  version: '0'
325
116
  requirements: []
326
- rubygems_version: 3.0.9
117
+ rubygems_version: 3.4.10
327
118
  signing_key:
328
119
  specification_version: 4
329
120
  summary: Ruby Library for Typesense