typesense 0.1.0 → 0.5.1

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.
@@ -4,12 +4,19 @@ module Typesense
4
4
  class Client
5
5
  attr_reader :configuration
6
6
  attr_reader :collections
7
+ attr_reader :aliases
8
+ attr_reader :keys
7
9
  attr_reader :debug
10
+ attr_reader :health
8
11
 
9
12
  def initialize(options = {})
10
- @configuration ||= Configuration.new(options)
11
- @collections = Collections.new(@configuration)
12
- @debug = Debug.new(@configuration)
13
+ @configuration = Configuration.new(options)
14
+ @api_call = ApiCall.new(@configuration)
15
+ @collections = Collections.new(@api_call)
16
+ @aliases = Aliases.new(@api_call)
17
+ @keys = Keys.new(@api_call)
18
+ @debug = Debug.new(@api_call)
19
+ @health = Health.new(@api_call)
13
20
  end
14
21
  end
15
22
  end
@@ -3,19 +3,21 @@
3
3
  module Typesense
4
4
  class Collection
5
5
  attr_reader :documents
6
+ attr_reader :overrides
6
7
 
7
- def initialize(configuration, name)
8
- @configuration = configuration
9
- @name = name
10
- @documents = Documents.new(@configuration, @name)
8
+ def initialize(name, api_call)
9
+ @name = name
10
+ @api_call = api_call
11
+ @documents = Documents.new(@name, @api_call)
12
+ @overrides = Overrides.new(@name, @api_call)
11
13
  end
12
14
 
13
15
  def retrieve
14
- ApiCall.new(@configuration).get(endpoint_path)
16
+ @api_call.get(endpoint_path)
15
17
  end
16
18
 
17
19
  def delete
18
- ApiCall.new(@configuration).delete(endpoint_path)
20
+ @api_call.delete(endpoint_path)
19
21
  end
20
22
 
21
23
  private
@@ -4,21 +4,21 @@ module Typesense
4
4
  class Collections
5
5
  RESOURCE_PATH = '/collections'
6
6
 
7
- def initialize(configuration)
8
- @configuration = configuration
9
- @collections = {}
7
+ def initialize(api_call)
8
+ @api_call = api_call
9
+ @collections = {}
10
10
  end
11
11
 
12
12
  def create(schema)
13
- ApiCall.new(@configuration).post(RESOURCE_PATH, schema)
13
+ @api_call.post(RESOURCE_PATH, schema)
14
14
  end
15
15
 
16
16
  def retrieve
17
- ApiCall.new(@configuration).get(RESOURCE_PATH)
17
+ @api_call.get(RESOURCE_PATH)
18
18
  end
19
19
 
20
20
  def [](collection_name)
21
- @collections[collection_name] ||= Collection.new(@configuration, collection_name)
21
+ @collections[collection_name] ||= Collection.new(collection_name, @api_call)
22
22
  end
23
23
  end
24
24
  end
@@ -2,37 +2,53 @@
2
2
 
3
3
  module Typesense
4
4
  class Configuration
5
- attr_accessor :master_node
6
- attr_accessor :read_replica_nodes
7
- attr_accessor :timeout_seconds
5
+ attr_accessor :nodes
6
+ attr_accessor :nearest_node
7
+ attr_accessor :connection_timeout_seconds
8
+ attr_accessor :healthcheck_interval_seconds
9
+ attr_accessor :num_retries
10
+ attr_accessor :retry_interval_seconds
11
+ attr_accessor :api_key
12
+ attr_accessor :logger
13
+ attr_accessor :log_level
8
14
 
9
15
  def initialize(options = {})
10
- @master_node = options[:master_node] || {
11
- host: 'localhost',
12
- port: '8108',
13
- protocol: 'http'
14
- }
15
-
16
- @read_replica_nodes = options[:read_replica_nodes] || []
17
- @timeout_seconds = options[:timeout_seconds] || 10
16
+ @nodes = options[:nodes] || []
17
+ @nearest_node = options[:nearest_node]
18
+ @connection_timeout_seconds = options[:connection_timeout_seconds] || options[:timeout_seconds] || 10
19
+ @healthcheck_interval_seconds = options[:healthcheck_interval_seconds] || 15
20
+ @num_retries = options[:num_retries] || @nodes.length + (@nearest_node.nil? ? 0 : 1) || 3
21
+ @retry_interval_seconds = options[:retry_interval_seconds] || 0.1
22
+ @api_key = options[:api_key]
23
+
24
+ @logger = options[:logger] || Logger.new(STDOUT)
25
+ @log_level = options[:log_level] || Logger::WARN
26
+ @logger.level = @log_level
27
+
28
+ show_deprecation_warnings(options)
29
+ validate!
18
30
  end
19
31
 
20
32
  def validate!
21
- if @master_node.nil? ||
22
- node_missing_parameters?(@master_node)
23
- raise Error::MissingConfiguration, 'Missing required configuration. Ensure that master_node[:protocol], master_node[:host], master_node[:port] and master_node[:api_key] are set.'
33
+ if @nodes.nil? ||
34
+ @nodes.empty? ||
35
+ @nodes.any? { |node| node_missing_parameters?(node) }
36
+ raise Error::MissingConfiguration, 'Missing required configuration. Ensure that nodes[][:protocol], nodes[][:host] and nodes[][:port] are set.'
24
37
  end
25
38
 
26
- if !@read_replica_nodes.nil? &&
27
- @read_replica_nodes.any? { |node| node_missing_parameters?(node) }
28
- raise Error::MissingConfiguration, 'Missing required configuration for read_replica_nodes. Ensure that read_replica_nodes[][:protocol], read_replica_nodes[][:host], read_replica_nodes[][:port] and read_replica_nodes[][:api_key] are set.'
29
- end
39
+ raise Error::MissingConfiguration, 'Missing required configuration. Ensure that api_key is set.' if @api_key.nil?
30
40
  end
31
41
 
32
42
  private
33
43
 
34
44
  def node_missing_parameters?(node)
35
- %i[protocol host port api_key].any? { |attr| node.send(:[], attr).nil? }
45
+ %i[protocol host port].any? { |attr| node.send(:[], attr).nil? }
46
+ end
47
+
48
+ def show_deprecation_warnings(options)
49
+ @logger.warn 'Deprecation warning: timeout_seconds is now renamed to connection_timeout_seconds' unless options[:timeout_seconds].nil?
50
+ @logger.warn 'Deprecation warning: master_node is now consolidated to nodes, starting with Typesense Server v0.12' unless options[:master_node].nil?
51
+ @logger.warn 'Deprecation warning: read_replica_nodes is now consolidated to nodes, starting with Typesense Server v0.12' unless options[:read_replica_nodes].nil?
36
52
  end
37
53
  end
38
54
  end
@@ -4,12 +4,12 @@ module Typesense
4
4
  class Debug
5
5
  RESOURCE_PATH = '/debug'
6
6
 
7
- def initialize(configuration)
8
- @configuration = configuration
7
+ def initialize(api_call)
8
+ @api_call = api_call
9
9
  end
10
10
 
11
11
  def retrieve
12
- ApiCall.new(@configuration).get(RESOURCE_PATH)
12
+ @api_call.get(RESOURCE_PATH)
13
13
  end
14
14
  end
15
15
  end
@@ -2,18 +2,18 @@
2
2
 
3
3
  module Typesense
4
4
  class Document
5
- def initialize(configuration, collection_name, document_id)
6
- @configuration = configuration
5
+ def initialize(collection_name, document_id, api_call)
7
6
  @collection_name = collection_name
8
7
  @document_id = document_id
8
+ @api_call = api_call
9
9
  end
10
10
 
11
11
  def retrieve
12
- ApiCall.new(@configuration).get(endpoint_path)
12
+ @api_call.get(endpoint_path)
13
13
  end
14
14
 
15
15
  def delete
16
- ApiCall.new(@configuration).delete(endpoint_path)
16
+ @api_call.delete(endpoint_path)
17
17
  end
18
18
 
19
19
  private
@@ -4,26 +4,31 @@ module Typesense
4
4
  class Documents
5
5
  RESOURCE_PATH = '/documents'
6
6
 
7
- def initialize(configuration, collection_name)
8
- @configuration = configuration
7
+ def initialize(collection_name, api_call)
9
8
  @collection_name = collection_name
9
+ @api_call = api_call
10
10
  @documents = {}
11
11
  end
12
12
 
13
13
  def create(document)
14
- ApiCall.new(@configuration).post(endpoint_path, document)
14
+ @api_call.post(endpoint_path, document)
15
+ end
16
+
17
+ def create_many(documents)
18
+ documents_in_jsonl_format = documents.map { |document| JSON.dump(document) }.join("\n")
19
+ @api_call.post(endpoint_path('import'), as_json: false, body: documents_in_jsonl_format)
15
20
  end
16
21
 
17
22
  def export
18
- ApiCall.new(@configuration).get_unparsed_response(endpoint_path('export')).split("\n")
23
+ (@api_call.get(endpoint_path('export')) || '').split("\n")
19
24
  end
20
25
 
21
26
  def search(search_parameters)
22
- ApiCall.new(@configuration).get(endpoint_path('search'), search_parameters)
27
+ @api_call.get(endpoint_path('search'), search_parameters)
23
28
  end
24
29
 
25
30
  def [](document_id)
26
- @documents[document_id] ||= Document.new(@configuration, @collection_name, document_id)
31
+ @documents[document_id] ||= Document.new(@collection_name, document_id, @api_call)
27
32
  end
28
33
 
29
34
  private
@@ -23,7 +23,13 @@ module Typesense
23
23
  class ServerError < Error
24
24
  end
25
25
 
26
+ class HTTPStatus0Error < Error
27
+ end
28
+
26
29
  class NoMethodError < ::NoMethodError
27
30
  end
31
+
32
+ class HTTPError < Error
33
+ end
28
34
  end
29
35
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Health
5
+ RESOURCE_PATH = '/health'
6
+
7
+ def initialize(api_call)
8
+ @api_call = api_call
9
+ end
10
+
11
+ def retrieve
12
+ @api_call.get(RESOURCE_PATH)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Key
5
+ def initialize(id, api_call)
6
+ @id = id
7
+ @api_call = api_call
8
+ end
9
+
10
+ def retrieve
11
+ @api_call.get(endpoint_path)
12
+ end
13
+
14
+ def delete
15
+ @api_call.delete(endpoint_path)
16
+ end
17
+
18
+ private
19
+
20
+ def endpoint_path
21
+ "#{Keys::RESOURCE_PATH}/#{@id}"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'base64'
4
+
5
+ module Typesense
6
+ class Keys
7
+ RESOURCE_PATH = '/keys'
8
+
9
+ def initialize(api_call)
10
+ @api_call = api_call
11
+ @keys = {}
12
+ end
13
+
14
+ def create(parameters)
15
+ @api_call.post(RESOURCE_PATH, parameters)
16
+ end
17
+
18
+ def retrieve
19
+ @api_call.get(RESOURCE_PATH)
20
+ end
21
+
22
+ def generate_scoped_search_key(search_key, parameters)
23
+ parameters_json = JSON.dump(parameters)
24
+ digest = Base64.encode64(OpenSSL::HMAC.digest('sha256', search_key, parameters_json)).gsub("\n", '')
25
+ key_prefix = search_key[0...4]
26
+ raw_scoped_key = "#{digest}#{key_prefix}#{parameters_json}"
27
+ Base64.encode64(raw_scoped_key).gsub("\n", '')
28
+ end
29
+
30
+ def [](id)
31
+ @keys[id] ||= Key.new(id, @api_call)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Override
5
+ def initialize(collection_name, override_id, api_call)
6
+ @collection_name = collection_name
7
+ @override_id = override_id
8
+ @api_call = api_call
9
+ end
10
+
11
+ def retrieve
12
+ @api_call.get(endpoint_path)
13
+ end
14
+
15
+ def delete
16
+ @api_call.delete(endpoint_path)
17
+ end
18
+
19
+ private
20
+
21
+ def endpoint_path
22
+ "#{Collections::RESOURCE_PATH}/#{@collection_name}#{Overrides::RESOURCE_PATH}/#{@override_id}"
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Overrides
5
+ RESOURCE_PATH = '/overrides'
6
+
7
+ def initialize(collection_name, api_call)
8
+ @collection_name = collection_name
9
+ @api_call = api_call
10
+ @overrides = {}
11
+ end
12
+
13
+ def create(params)
14
+ @api_call.put(endpoint_path, params)
15
+ end
16
+
17
+ def retrieve
18
+ @api_call.get(endpoint_path)
19
+ end
20
+
21
+ def [](override_id)
22
+ @overrides[override_id] ||= Override.new(@collection_name, override_id, @api_call)
23
+ end
24
+
25
+ private
26
+
27
+ def endpoint_path(operation = nil)
28
+ "#{Collections::RESOURCE_PATH}/#{@collection_name}#{Overrides::RESOURCE_PATH}#{operation.nil? ? '' : '/' + operation}"
29
+ end
30
+ end
31
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Typesense
4
- VERSION = '0.1.0'
4
+ VERSION = '0.5.1'
5
5
  end
@@ -7,12 +7,12 @@ require 'typesense/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'typesense'
9
9
  spec.version = Typesense::VERSION
10
- spec.authors = ['Wreally Studios']
10
+ spec.authors = ['Typesense, Inc.']
11
11
  spec.email = ['contact@typesense.org']
12
12
 
13
13
  spec.summary = 'Ruby Library for Typesense'
14
14
  spec.description = 'Typesense is an open source search engine for building a delightful search experience.'
15
- spec.homepage = 'https://github.com/typesense/typesense-ruby'
15
+ spec.homepage = 'https://typesense.org'
16
16
  spec.license = 'Apache-2.0'
17
17
 
18
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -23,15 +23,18 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ['lib']
24
24
 
25
25
  spec.add_development_dependency 'awesome_print', '~> 1.8'
26
- spec.add_development_dependency 'bundler', '~> 1.16'
27
- spec.add_development_dependency 'pry-byebug', '~> 3.5'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
30
- spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3'
31
- spec.add_development_dependency 'rubocop', '~> 0.53.0'
32
- spec.add_development_dependency 'rubocop-rspec', '~> 1.24'
33
- spec.add_development_dependency 'simplecov', '~> 0.15'
34
- spec.add_development_dependency 'webmock', '~> 3.2'
26
+ spec.add_development_dependency 'bundler', '~> 2.0'
27
+ spec.add_development_dependency 'codecov', '~> 0.1'
28
+ spec.add_development_dependency 'pry-byebug', '~> 3.9'
29
+ spec.add_development_dependency 'rake', '~> 13.0'
30
+ spec.add_development_dependency 'rspec', '~> 3.9'
31
+ spec.add_development_dependency 'rspec-legacy_formatters', '~> 1.0' # For codecov formatter
32
+ spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
33
+ spec.add_development_dependency 'rubocop', '~> 0.83'
34
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.39'
35
+ spec.add_development_dependency 'simplecov', '~> 0.18'
36
+ spec.add_development_dependency 'timecop', '~> 0.9'
37
+ spec.add_development_dependency 'webmock', '~> 3.8'
35
38
 
36
- spec.add_dependency 'httparty', '~> 0.15'
39
+ spec.add_dependency 'httparty', '~> 0.18'
37
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typesense
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
- - Wreally Studios
7
+ - Typesense, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-04 00:00:00.000000000 Z
11
+ date: 2020-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -30,140 +30,182 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.16'
33
+ version: '2.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.16'
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'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry-byebug
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '3.5'
61
+ version: '3.9'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '3.5'
68
+ version: '3.9'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '10.0'
75
+ version: '13.0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '10.0'
82
+ version: '13.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '3.0'
89
+ version: '3.9'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '3.0'
96
+ version: '3.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-legacy_formatters
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: rspec_junit_formatter
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '0.3'
117
+ version: '0.4'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: '0.3'
124
+ version: '0.4'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: rubocop
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - "~>"
102
130
  - !ruby/object:Gem::Version
103
- version: 0.53.0
131
+ version: '0.83'
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: 0.53.0
138
+ version: '0.83'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: rubocop-rspec
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
143
  - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: '1.24'
145
+ version: '1.39'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: '1.24'
152
+ version: '1.39'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: simplecov
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - "~>"
130
158
  - !ruby/object:Gem::Version
131
- version: '0.15'
159
+ version: '0.18'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.18'
167
+ - !ruby/object:Gem::Dependency
168
+ name: timecop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.9'
132
174
  type: :development
133
175
  prerelease: false
134
176
  version_requirements: !ruby/object:Gem::Requirement
135
177
  requirements:
136
178
  - - "~>"
137
179
  - !ruby/object:Gem::Version
138
- version: '0.15'
180
+ version: '0.9'
139
181
  - !ruby/object:Gem::Dependency
140
182
  name: webmock
141
183
  requirement: !ruby/object:Gem::Requirement
142
184
  requirements:
143
185
  - - "~>"
144
186
  - !ruby/object:Gem::Version
145
- version: '3.2'
187
+ version: '3.8'
146
188
  type: :development
147
189
  prerelease: false
148
190
  version_requirements: !ruby/object:Gem::Requirement
149
191
  requirements:
150
192
  - - "~>"
151
193
  - !ruby/object:Gem::Version
152
- version: '3.2'
194
+ version: '3.8'
153
195
  - !ruby/object:Gem::Dependency
154
196
  name: httparty
155
197
  requirement: !ruby/object:Gem::Requirement
156
198
  requirements:
157
199
  - - "~>"
158
200
  - !ruby/object:Gem::Version
159
- version: '0.15'
201
+ version: '0.18'
160
202
  type: :runtime
161
203
  prerelease: false
162
204
  version_requirements: !ruby/object:Gem::Requirement
163
205
  requirements:
164
206
  - - "~>"
165
207
  - !ruby/object:Gem::Version
166
- version: '0.15'
208
+ version: '0.18'
167
209
  description: Typesense is an open source search engine for building a delightful search
168
210
  experience.
169
211
  email:
@@ -183,9 +225,16 @@ files:
183
225
  - Rakefile
184
226
  - bin/console
185
227
  - bin/setup
228
+ - codecov.yml
229
+ - examples/aliases.rb
230
+ - examples/client_initialization.rb
186
231
  - examples/collections_and_documents.rb
232
+ - examples/keys.rb
233
+ - examples/overrides.rb
187
234
  - examples/search.rb
188
235
  - lib/typesense.rb
236
+ - lib/typesense/alias.rb
237
+ - lib/typesense/aliases.rb
189
238
  - lib/typesense/api_call.rb
190
239
  - lib/typesense/client.rb
191
240
  - lib/typesense/collection.rb
@@ -195,9 +244,14 @@ files:
195
244
  - lib/typesense/document.rb
196
245
  - lib/typesense/documents.rb
197
246
  - lib/typesense/error.rb
247
+ - lib/typesense/health.rb
248
+ - lib/typesense/key.rb
249
+ - lib/typesense/keys.rb
250
+ - lib/typesense/override.rb
251
+ - lib/typesense/overrides.rb
198
252
  - lib/typesense/version.rb
199
253
  - typesense.gemspec
200
- homepage: https://github.com/typesense/typesense-ruby
254
+ homepage: https://typesense.org
201
255
  licenses:
202
256
  - Apache-2.0
203
257
  metadata: {}
@@ -216,8 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
270
  - !ruby/object:Gem::Version
217
271
  version: '0'
218
272
  requirements: []
219
- rubyforge_project:
220
- rubygems_version: 2.7.6
273
+ rubygems_version: 3.0.6
221
274
  signing_key:
222
275
  specification_version: 4
223
276
  summary: Ruby Library for Typesense