typesense 0.5.2 → 0.7.0.pre0
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 +4 -4
- data/.rubocop.yml +32 -12
- data/Guardfile +23 -0
- data/README.md +1 -0
- data/examples/client_initialization.rb +2 -1
- data/lib/typesense/api_call.rb +43 -40
- data/lib/typesense/client.rb +1 -7
- data/lib/typesense/collection.rb +1 -2
- data/lib/typesense/configuration.rb +4 -10
- data/lib/typesense/documents.rb +10 -3
- data/lib/typesense/error.rb +3 -0
- data/lib/typesense/overrides.rb +1 -1
- data/lib/typesense/version.rb +1 -1
- data/typesense.gemspec +8 -3
- metadata +62 -20
- data/.rubocop_todo.yml +0 -75
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 680a4251ea189d959a84665eb824d50efabdbe3359be1f787f23d9ea230ab16f
|
4
|
+
data.tar.gz: cdbb99c7ab1d32408c7100c3d1167a1ce8d1177014b80051ad4a5e2c13fbec99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b161ddf9e1d3445934c77444d0a7d4cfb2ae6efb8879dd9f15020d286f4347bcb40933c7ad201b5d9b8cc5a3848b484586984bb07d7ac584a3e325941f08ca50
|
7
|
+
data.tar.gz: 04506357d9defab42a6c85d3c06b963670050944a26e6e0378cbca06b82ad2254312de2862f1fab72d8106a0dcebdc42c3c92c96bb596da9d67de4cfd1b0295c
|
data/.rubocop.yml
CHANGED
@@ -1,19 +1,39 @@
|
|
1
|
-
inherit_from: .rubocop_todo.yml
|
2
|
-
|
3
|
-
require: rubocop-rspec
|
4
|
-
|
5
1
|
AllCops:
|
6
|
-
TargetRubyVersion: "2.4"
|
7
2
|
NewCops: enable
|
8
3
|
|
9
|
-
Metrics/BlockLength:
|
10
|
-
Exclude:
|
11
|
-
- 'spec/**/*'
|
12
|
-
- 'Gemfile'
|
13
|
-
- 'typesense.gemspec'
|
14
|
-
|
15
4
|
Style/Documentation:
|
16
5
|
Enabled: false
|
17
6
|
|
18
|
-
|
7
|
+
Metrics/AbcSize:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Metrics/CyclomaticComplexity:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
Metrics/PerceivedComplexity:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Metrics/ClassLength:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Metrics/ParameterLists:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Metrics/MethodLength:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
Metrics/BlockLength:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
Metrics/BlockNesting:
|
19
29
|
Enabled: false
|
30
|
+
|
31
|
+
Style/FrozenStringLiteralComment:
|
32
|
+
EnforcedStyle: always_true
|
33
|
+
|
34
|
+
Layout/LineLength:
|
35
|
+
Max: 300
|
36
|
+
|
37
|
+
Lint/SuppressedException:
|
38
|
+
Exclude:
|
39
|
+
- examples/**
|
data/Guardfile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# A sample Guardfile
|
4
|
+
# More info at https://github.com/guard/guard#readme
|
5
|
+
|
6
|
+
## Uncomment and set this to only include directories you want to watch
|
7
|
+
# directories %w(app lib config test spec features) \
|
8
|
+
# .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
9
|
+
|
10
|
+
## Note: if you are using the `directories` clause above and you are not
|
11
|
+
## watching the project directory ('.'), then you will want to move
|
12
|
+
## the Guardfile to a watched dir and symlink it back, e.g.
|
13
|
+
#
|
14
|
+
# $ mkdir config
|
15
|
+
# $ mv Guardfile config/
|
16
|
+
# $ ln -s config/Guardfile .
|
17
|
+
#
|
18
|
+
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
19
|
+
|
20
|
+
guard :rubocop, cli: '-a' do
|
21
|
+
watch(/.+\.rb$/)
|
22
|
+
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
23
|
+
end
|
data/README.md
CHANGED
@@ -33,6 +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.15.0 | \>= v0.7.0 |
|
36
37
|
| \>= v0.12.1 | \>= v0.5.0 |
|
37
38
|
| \>= v0.12.0 | \>= v0.4.0 |
|
38
39
|
| <= v0.11 | <= v0.3.0 |
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require_relative '../lib/typesense'
|
4
4
|
require 'awesome_print'
|
5
|
+
require 'logger'
|
5
6
|
|
6
7
|
AwesomePrint.defaults = {
|
7
8
|
indent: -2
|
@@ -62,6 +63,6 @@ AwesomePrint.defaults = {
|
|
62
63
|
healthcheck_interval_seconds: 1,
|
63
64
|
retry_interval_seconds: 0.01,
|
64
65
|
connection_timeout_seconds: 10,
|
65
|
-
logger: Logger.new(
|
66
|
+
logger: Logger.new($stdout),
|
66
67
|
log_level: Logger::DEBUG
|
67
68
|
)
|
data/lib/typesense/api_call.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'typhoeus'
|
4
|
+
require 'oj'
|
4
5
|
|
5
6
|
module Typesense
|
6
7
|
class ApiCall
|
7
|
-
include HTTParty
|
8
|
-
|
9
8
|
API_KEY_HEADER_NAME = 'X-TYPESENSE-API-KEY'
|
10
9
|
|
11
10
|
def initialize(configuration)
|
@@ -30,8 +29,8 @@ module Typesense
|
|
30
29
|
|
31
30
|
perform_request :post,
|
32
31
|
endpoint,
|
33
|
-
|
34
|
-
|
32
|
+
headers,
|
33
|
+
body: body
|
35
34
|
end
|
36
35
|
|
37
36
|
def put(endpoint, parameters = {})
|
@@ -39,8 +38,8 @@ module Typesense
|
|
39
38
|
|
40
39
|
perform_request :put,
|
41
40
|
endpoint,
|
42
|
-
|
43
|
-
|
41
|
+
headers,
|
42
|
+
body: body
|
44
43
|
end
|
45
44
|
|
46
45
|
def get(endpoint, parameters = {})
|
@@ -48,8 +47,8 @@ module Typesense
|
|
48
47
|
|
49
48
|
perform_request :get,
|
50
49
|
endpoint,
|
51
|
-
|
52
|
-
|
50
|
+
headers,
|
51
|
+
params: query
|
53
52
|
end
|
54
53
|
|
55
54
|
def delete(endpoint, parameters = {})
|
@@ -57,11 +56,11 @@ module Typesense
|
|
57
56
|
|
58
57
|
perform_request :delete,
|
59
58
|
endpoint,
|
60
|
-
|
61
|
-
|
59
|
+
headers,
|
60
|
+
params: query
|
62
61
|
end
|
63
62
|
|
64
|
-
def perform_request(method, endpoint, options = {})
|
63
|
+
def perform_request(method, endpoint, headers = {}, options = {})
|
65
64
|
@configuration.validate!
|
66
65
|
last_exception = nil
|
67
66
|
@logger.debug "Performing #{method.to_s.upcase} request: #{endpoint}"
|
@@ -71,23 +70,31 @@ module Typesense
|
|
71
70
|
@logger.debug "Attempting #{method.to_s.upcase} request Try ##{num_tries} to Node #{node[:index]}"
|
72
71
|
|
73
72
|
begin
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
73
|
+
response = Typhoeus::Request.new(uri_for(endpoint, node),
|
74
|
+
{
|
75
|
+
method: method,
|
76
|
+
headers: default_headers.merge(headers),
|
77
|
+
timeout: @connection_timeout_seconds
|
78
|
+
}.merge(options)).run
|
79
|
+
set_node_healthcheck(node, is_healthy: true) if response.code >= 1 && response.code <= 499
|
80
|
+
|
81
|
+
@logger.debug "Request to Node #{node[:index]} was successfully made (at the network layer). Response Code was #{response.code}."
|
82
|
+
|
83
|
+
parsed_response = if response.headers && (response.headers['content-type'] || '').include?('application/json')
|
84
|
+
Oj.load(response.body)
|
85
|
+
else
|
86
|
+
response.body
|
87
|
+
end
|
81
88
|
|
82
89
|
# If response is 2xx return the object, else raise the response as an exception
|
83
|
-
return
|
90
|
+
return parsed_response if response.code >= 200 && response.code <= 299
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
|
92
|
+
exception_message = (parsed_response && parsed_response['message']) || 'Error'
|
93
|
+
raise custom_exception_klass_for(response), exception_message
|
94
|
+
rescue SocketError, EOFError,
|
88
95
|
Errno::EINVAL, Errno::ENETDOWN, Errno::ENETUNREACH, Errno::ENETRESET, Errno::ECONNABORTED, Errno::ECONNRESET,
|
89
96
|
Errno::ETIMEDOUT, Errno::ECONNREFUSED, Errno::EHOSTDOWN, Errno::EHOSTUNREACH,
|
90
|
-
|
97
|
+
Typesense::Error::TimeoutError, Typesense::Error::ServerError, Typesense::Error::HTTPStatus0Error => e
|
91
98
|
# Rescue network layer exceptions and HTTP 5xx errors, so the loop can continue.
|
92
99
|
# Using loops for retries instead of rescue...retry to maintain consistency with client libraries in
|
93
100
|
# other languages that might not support the same construct.
|
@@ -107,7 +114,7 @@ module Typesense
|
|
107
114
|
def extract_headers_and_body_from(parameters)
|
108
115
|
if json_request?(parameters)
|
109
116
|
headers = { 'Content-Type' => 'application/json' }
|
110
|
-
body = sanitize_parameters(parameters)
|
117
|
+
body = Oj.dump(sanitize_parameters(parameters))
|
111
118
|
else
|
112
119
|
headers = {}
|
113
120
|
body = parameters[:body]
|
@@ -198,35 +205,31 @@ module Typesense
|
|
198
205
|
end
|
199
206
|
|
200
207
|
def custom_exception_klass_for(response)
|
201
|
-
|
202
|
-
if response_code_type <= Net::HTTPBadRequest # 400
|
208
|
+
if response.code == 400
|
203
209
|
Typesense::Error::RequestMalformed
|
204
|
-
elsif
|
210
|
+
elsif response.code == 401
|
205
211
|
Typesense::Error::RequestUnauthorized
|
206
|
-
elsif
|
212
|
+
elsif response.code == 404
|
207
213
|
Typesense::Error::ObjectNotFound
|
208
|
-
elsif
|
214
|
+
elsif response.code == 409
|
209
215
|
Typesense::Error::ObjectAlreadyExists
|
210
|
-
elsif
|
216
|
+
elsif response.code == 422
|
211
217
|
Typesense::Error::ObjectUnprocessable
|
212
|
-
elsif
|
218
|
+
elsif response.code >= 500 && response.code <= 599
|
213
219
|
Typesense::Error::ServerError
|
214
|
-
elsif response.
|
220
|
+
elsif response.timed_out?
|
221
|
+
Typesense::Error::TimeoutError
|
222
|
+
elsif response.code.zero?
|
215
223
|
Typesense::Error::HTTPStatus0Error
|
216
224
|
else
|
217
225
|
Typesense::Error::HTTPError
|
218
226
|
end
|
219
227
|
end
|
220
228
|
|
221
|
-
def default_options
|
222
|
-
{
|
223
|
-
timeout: @connection_timeout_seconds
|
224
|
-
}
|
225
|
-
end
|
226
|
-
|
227
229
|
def default_headers
|
228
230
|
{
|
229
|
-
API_KEY_HEADER_NAME.to_s => @api_key
|
231
|
+
API_KEY_HEADER_NAME.to_s => @api_key,
|
232
|
+
'User-Agent' => 'Typesense Ruby Client'
|
230
233
|
}
|
231
234
|
end
|
232
235
|
end
|
data/lib/typesense/client.rb
CHANGED
@@ -2,13 +2,7 @@
|
|
2
2
|
|
3
3
|
module Typesense
|
4
4
|
class Client
|
5
|
-
attr_reader :configuration
|
6
|
-
attr_reader :collections
|
7
|
-
attr_reader :aliases
|
8
|
-
attr_reader :keys
|
9
|
-
attr_reader :debug
|
10
|
-
attr_reader :health
|
11
|
-
attr_reader :metrics
|
5
|
+
attr_reader :configuration, :collections, :aliases, :keys, :debug, :health, :metrics
|
12
6
|
|
13
7
|
def initialize(options = {})
|
14
8
|
@configuration = Configuration.new(options)
|
data/lib/typesense/collection.rb
CHANGED
@@ -1,16 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'logger'
|
4
|
+
|
3
5
|
module Typesense
|
4
6
|
class Configuration
|
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
|
7
|
+
attr_accessor :nodes, :nearest_node, :connection_timeout_seconds, :healthcheck_interval_seconds, :num_retries, :retry_interval_seconds, :api_key, :logger, :log_level
|
14
8
|
|
15
9
|
def initialize(options = {})
|
16
10
|
@nodes = options[:nodes] || []
|
@@ -21,7 +15,7 @@ module Typesense
|
|
21
15
|
@retry_interval_seconds = options[:retry_interval_seconds] || 0.1
|
22
16
|
@api_key = options[:api_key]
|
23
17
|
|
24
|
-
@logger = options[:logger] || Logger.new(
|
18
|
+
@logger = options[:logger] || Logger.new($stdout)
|
25
19
|
@log_level = options[:log_level] || Logger::WARN
|
26
20
|
@logger.level = @log_level
|
27
21
|
|
data/lib/typesense/documents.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'oj'
|
4
|
+
|
3
5
|
module Typesense
|
4
6
|
class Documents
|
5
7
|
RESOURCE_PATH = '/documents'
|
@@ -15,12 +17,17 @@ module Typesense
|
|
15
17
|
end
|
16
18
|
|
17
19
|
def create_many(documents)
|
18
|
-
documents_in_jsonl_format = documents.map { |document|
|
20
|
+
documents_in_jsonl_format = documents.map { |document| Oj.dump(document) }.join("\n")
|
21
|
+
results_in_jsonl_format = import(documents_in_jsonl_format)
|
22
|
+
results_in_jsonl_format.split("\n").map { |r| Oj.load(r) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def import(documents_in_jsonl_format)
|
19
26
|
@api_call.post(endpoint_path('import'), as_json: false, body: documents_in_jsonl_format)
|
20
27
|
end
|
21
28
|
|
22
29
|
def export
|
23
|
-
|
30
|
+
@api_call.get(endpoint_path('export'))
|
24
31
|
end
|
25
32
|
|
26
33
|
def search(search_parameters)
|
@@ -34,7 +41,7 @@ module Typesense
|
|
34
41
|
private
|
35
42
|
|
36
43
|
def endpoint_path(operation = nil)
|
37
|
-
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Documents::RESOURCE_PATH}#{operation.nil? ? '' :
|
44
|
+
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Documents::RESOURCE_PATH}#{operation.nil? ? '' : "/#{operation}"}"
|
38
45
|
end
|
39
46
|
end
|
40
47
|
end
|
data/lib/typesense/error.rb
CHANGED
data/lib/typesense/overrides.rb
CHANGED
@@ -25,7 +25,7 @@ module Typesense
|
|
25
25
|
private
|
26
26
|
|
27
27
|
def endpoint_path(operation = nil)
|
28
|
-
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Overrides::RESOURCE_PATH}#{operation.nil? ? '' :
|
28
|
+
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Overrides::RESOURCE_PATH}#{operation.nil? ? '' : "/#{operation}"}"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
data/lib/typesense/version.rb
CHANGED
data/typesense.gemspec
CHANGED
@@ -15,6 +15,8 @@ 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'
|
19
|
+
|
18
20
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
21
|
f.match(%r{^(test|spec|features)/})
|
20
22
|
end
|
@@ -25,16 +27,19 @@ Gem::Specification.new do |spec|
|
|
25
27
|
spec.add_development_dependency 'awesome_print', '~> 1.8'
|
26
28
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
27
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'
|
28
32
|
spec.add_development_dependency 'pry-byebug', '~> 3.9'
|
29
33
|
spec.add_development_dependency 'rake', '~> 13.0'
|
30
34
|
spec.add_development_dependency 'rspec', '~> 3.9'
|
31
|
-
spec.add_development_dependency 'rspec-legacy_formatters', '~> 1.0' # For codecov formatter
|
32
35
|
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
|
33
|
-
spec.add_development_dependency '
|
36
|
+
spec.add_development_dependency 'rspec-legacy_formatters', '~> 1.0' # For codecov formatter
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.88'
|
34
38
|
spec.add_development_dependency 'rubocop-rspec', '~> 1.39'
|
35
39
|
spec.add_development_dependency 'simplecov', '~> 0.18'
|
36
40
|
spec.add_development_dependency 'timecop', '~> 0.9'
|
37
41
|
spec.add_development_dependency 'webmock', '~> 3.8'
|
38
42
|
|
39
|
-
spec.add_dependency '
|
43
|
+
spec.add_dependency 'oj', '~> 3.10'
|
44
|
+
spec.add_dependency 'typhoeus', '~> 1.4'
|
40
45
|
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.
|
4
|
+
version: 0.7.0.pre0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Typesense, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
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'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: pry-byebug
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,47 +123,47 @@ dependencies:
|
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '3.9'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: rspec_junit_formatter
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
131
|
+
version: '0.4'
|
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: '
|
138
|
+
version: '0.4'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
140
|
+
name: rspec-legacy_formatters
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - "~>"
|
116
144
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0
|
145
|
+
version: '1.0'
|
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: '0
|
152
|
+
version: '1.0'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
154
|
name: rubocop
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - "~>"
|
130
158
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0.
|
159
|
+
version: '0.88'
|
132
160
|
type: :development
|
133
161
|
prerelease: false
|
134
162
|
version_requirements: !ruby/object:Gem::Requirement
|
135
163
|
requirements:
|
136
164
|
- - "~>"
|
137
165
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0.
|
166
|
+
version: '0.88'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: rubocop-rspec
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,19 +221,33 @@ dependencies:
|
|
193
221
|
- !ruby/object:Gem::Version
|
194
222
|
version: '3.8'
|
195
223
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
224
|
+
name: oj
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
198
226
|
requirements:
|
199
227
|
- - "~>"
|
200
228
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
229
|
+
version: '3.10'
|
202
230
|
type: :runtime
|
203
231
|
prerelease: false
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
205
233
|
requirements:
|
206
234
|
- - "~>"
|
207
235
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
236
|
+
version: '3.10'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: typhoeus
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - "~>"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '1.4'
|
244
|
+
type: :runtime
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - "~>"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '1.4'
|
209
251
|
description: Typesense is an open source search engine for building a delightful search
|
210
252
|
experience.
|
211
253
|
email:
|
@@ -218,8 +260,8 @@ files:
|
|
218
260
|
- ".gitignore"
|
219
261
|
- ".rspec"
|
220
262
|
- ".rubocop.yml"
|
221
|
-
- ".rubocop_todo.yml"
|
222
263
|
- Gemfile
|
264
|
+
- Guardfile
|
223
265
|
- LICENSE
|
224
266
|
- README.md
|
225
267
|
- Rakefile
|
@@ -256,7 +298,7 @@ homepage: https://typesense.org
|
|
256
298
|
licenses:
|
257
299
|
- Apache-2.0
|
258
300
|
metadata: {}
|
259
|
-
post_install_message:
|
301
|
+
post_install_message:
|
260
302
|
rdoc_options: []
|
261
303
|
require_paths:
|
262
304
|
- lib
|
@@ -264,15 +306,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
264
306
|
requirements:
|
265
307
|
- - ">="
|
266
308
|
- !ruby/object:Gem::Version
|
267
|
-
version: '
|
309
|
+
version: '2.4'
|
268
310
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
311
|
requirements:
|
270
|
-
- - "
|
312
|
+
- - ">"
|
271
313
|
- !ruby/object:Gem::Version
|
272
|
-
version:
|
314
|
+
version: 1.3.1
|
273
315
|
requirements: []
|
274
316
|
rubygems_version: 3.0.6
|
275
|
-
signing_key:
|
317
|
+
signing_key:
|
276
318
|
specification_version: 4
|
277
319
|
summary: Ruby Library for Typesense
|
278
320
|
test_files: []
|
data/.rubocop_todo.yml
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on 2020-05-21 20:10:36 -0700 using RuboCop version 0.83.0.
|
4
|
-
# The point is for the user to remove these configuration records
|
5
|
-
# one by one as the offenses are removed from the code base.
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
8
|
-
|
9
|
-
# Offense count: 1
|
10
|
-
Lint/ShadowedException:
|
11
|
-
Exclude:
|
12
|
-
- 'lib/typesense/api_call.rb'
|
13
|
-
|
14
|
-
# Offense count: 2
|
15
|
-
# Configuration parameters: AllowComments.
|
16
|
-
Lint/SuppressedException:
|
17
|
-
Exclude:
|
18
|
-
- 'examples/collections_and_documents.rb'
|
19
|
-
- 'examples/search.rb'
|
20
|
-
- 'examples/keys.rb'
|
21
|
-
|
22
|
-
# Offense count: 3
|
23
|
-
# Configuration parameters: IgnoredMethods.
|
24
|
-
Metrics/AbcSize:
|
25
|
-
Max: 43
|
26
|
-
|
27
|
-
# Offense count: 1
|
28
|
-
# Configuration parameters: CountComments.
|
29
|
-
Metrics/ClassLength:
|
30
|
-
Max: 184
|
31
|
-
|
32
|
-
# Offense count: 3
|
33
|
-
# Configuration parameters: IgnoredMethods.
|
34
|
-
Metrics/CyclomaticComplexity:
|
35
|
-
Max: 11
|
36
|
-
|
37
|
-
# Offense count: 5
|
38
|
-
# Configuration parameters: CountComments, ExcludedMethods.
|
39
|
-
Metrics/MethodLength:
|
40
|
-
Max: 29
|
41
|
-
|
42
|
-
# Offense count: 3
|
43
|
-
# Configuration parameters: IgnoredMethods.
|
44
|
-
Metrics/PerceivedComplexity:
|
45
|
-
Max: 11
|
46
|
-
|
47
|
-
# Offense count: 10
|
48
|
-
RSpec/MultipleExpectations:
|
49
|
-
Max: 5
|
50
|
-
|
51
|
-
# Offense count: 13
|
52
|
-
Style/Documentation:
|
53
|
-
Exclude:
|
54
|
-
- 'spec/**/*'
|
55
|
-
- 'test/**/*'
|
56
|
-
- 'lib/typesense.rb'
|
57
|
-
- 'lib/typesense/alias.rb'
|
58
|
-
- 'lib/typesense/aliases.rb'
|
59
|
-
- 'lib/typesense/api_call.rb'
|
60
|
-
- 'lib/typesense/client.rb'
|
61
|
-
- 'lib/typesense/collection.rb'
|
62
|
-
- 'lib/typesense/collections.rb'
|
63
|
-
- 'lib/typesense/configuration.rb'
|
64
|
-
- 'lib/typesense/debug.rb'
|
65
|
-
- 'lib/typesense/document.rb'
|
66
|
-
- 'lib/typesense/documents.rb'
|
67
|
-
- 'lib/typesense/override.rb'
|
68
|
-
- 'lib/typesense/overrides.rb'
|
69
|
-
|
70
|
-
# Offense count: 157
|
71
|
-
# Cop supports --auto-correct.
|
72
|
-
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
73
|
-
# URISchemes: http, https
|
74
|
-
Layout/LineLength:
|
75
|
-
Max: 312
|