grumlin 1.0.0.rc5 → 1.0.0.rc7

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: d8a926f7ceafbe22e613403079a0b5dc220b606b999481bc7971cb02ba629363
4
- data.tar.gz: dd2f10b273622c6a19c989e67b6d99c33b0cebd928dacfa57cef681f489570a8
3
+ metadata.gz: cf656a485be79f0ce06a1a091d3fb5421712ef05251150ff02ff5d12d867c777
4
+ data.tar.gz: 4ad9b95cfc61a9c41cdd0cb43ddd7ecc6686a1797a1162709b1c86cf512fb820
5
5
  SHA512:
6
- metadata.gz: 6249760bd49fe1bdafed248b087d1361fce5781246c8ac87b3b3be4844fa80b8b44628c01cbcfe16c35c5b89d17d987eba338877ec8a4c14451d0f31b015c30c
7
- data.tar.gz: a67cd4edbf4b6a0e442534657a10412851024f571ea262a6a62b49debac3406177f3679a525f39d63fd7316335e8bec4d40715a040f834116dd7427181f8111e
6
+ metadata.gz: '091041ce7819097c45dbf14c8ed50a3dc620f9a4be929d615934e0f131ed49f1684ecc3bdaf281f77a018c7c4db71e79e8fdb55039f447089e5700f6d5214edb'
7
+ data.tar.gz: 00067b1313025fb03bbbf336b5a7258a1ce7de33ab4756f697c916ee7610c54c8a8e28b804af2acf4c766a5de9e4e1188ecea13ba4af7a6b96cf34fcad1884f8
data/Gemfile.lock CHANGED
@@ -1,18 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- grumlin (1.0.0.rc5)
5
- async-pool (~> 0.3)
6
- async-websocket (>= 0.19, < 0.20)
4
+ grumlin (1.0.0.rc7)
5
+ async-pool (~> 0.3.0)
6
+ async-websocket (~> 0.22.0)
7
7
  ibsciss-middleware (~> 0.4.0)
8
- oj (~> 3.13)
9
- retryable (~> 3.0)
10
- zeitwerk (~> 2.6)
8
+ oj (~> 3.13.0)
9
+ retryable (~> 3.0.0)
10
+ zeitwerk (~> 2.6.0)
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (7.0.3.1)
15
+ activesupport (7.0.4)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
17
  i18n (>= 1.6, < 2)
18
18
  minitest (>= 5.1)
@@ -22,14 +22,14 @@ GEM
22
22
  console (~> 1.10)
23
23
  nio4r (~> 2.3)
24
24
  timers (~> 4.1)
25
- async-http (0.59.2)
25
+ async-http (0.59.3)
26
26
  async (>= 1.25)
27
27
  async-io (>= 1.28)
28
28
  async-pool (>= 0.2)
29
29
  protocol-http (~> 0.23.1)
30
30
  protocol-http1 (~> 0.14.0)
31
31
  protocol-http2 (~> 0.14.0)
32
- traces (>= 0.4.0)
32
+ traces (>= 0.8.0)
33
33
  async-io (1.34.0)
34
34
  async
35
35
  async-pool (0.3.12)
@@ -38,16 +38,17 @@ GEM
38
38
  rspec (~> 3.0)
39
39
  rspec-files (~> 1.0)
40
40
  rspec-memory (~> 1.0)
41
- async-websocket (0.19.2)
41
+ async-websocket (0.22.1)
42
42
  async-http (~> 0.54)
43
43
  async-io (~> 1.23)
44
- protocol-websocket (~> 0.7.0)
44
+ protocol-rack (~> 0.1)
45
+ protocol-websocket (~> 0.9.1)
45
46
  backport (1.2.0)
46
47
  benchmark (0.2.0)
47
48
  benchmark-ips (2.10.0)
48
49
  childprocess (4.1.0)
49
50
  concurrent-ruby (1.1.10)
50
- console (1.15.3)
51
+ console (1.16.2)
51
52
  fiber-local
52
53
  dead_end (4.0.0)
53
54
  diff-lcs (1.5.0)
@@ -66,12 +67,16 @@ GEM
66
67
  rexml
67
68
  kramdown-parser-gfm (1.1.0)
68
69
  kramdown (~> 2.0)
69
- memory_profiler (1.0.0)
70
+ memory_profiler (1.0.1)
71
+ mini_portile2 (2.8.0)
70
72
  minitest (5.16.3)
71
73
  nio4r (2.5.8)
72
- nokogiri (1.13.8-x86_64-linux)
74
+ nokogiri (1.13.9)
75
+ mini_portile2 (~> 2.8.0)
73
76
  racc (~> 1.4)
74
- oj (3.13.21)
77
+ nokogiri (1.13.9-x86_64-linux)
78
+ racc (~> 1.4)
79
+ oj (3.13.23)
75
80
  overcommit (0.59.1)
76
81
  childprocess (>= 0.6.3, < 5)
77
82
  iniparse (~> 1.4)
@@ -86,51 +91,55 @@ GEM
86
91
  protocol-http2 (0.14.2)
87
92
  protocol-hpack (~> 1.4)
88
93
  protocol-http (~> 0.18)
89
- protocol-websocket (0.7.5)
94
+ protocol-rack (0.2.4)
95
+ protocol-http (~> 0.23)
96
+ rack (>= 1.0)
97
+ protocol-websocket (0.9.1)
90
98
  protocol-http (~> 0.2)
91
99
  protocol-http1 (~> 0.2)
92
100
  racc (1.6.0)
101
+ rack (3.0.0)
93
102
  rainbow (3.1.1)
94
103
  rake (13.0.6)
95
- regexp_parser (2.5.0)
104
+ regexp_parser (2.6.0)
96
105
  retryable (3.0.5)
97
106
  reverse_markdown (2.1.1)
98
107
  nokogiri
99
108
  rexml (3.2.5)
100
- rspec (3.11.0)
101
- rspec-core (~> 3.11.0)
102
- rspec-expectations (~> 3.11.0)
103
- rspec-mocks (~> 3.11.0)
104
- rspec-core (3.11.0)
105
- rspec-support (~> 3.11.0)
106
- rspec-expectations (3.11.0)
109
+ rspec (3.12.0)
110
+ rspec-core (~> 3.12.0)
111
+ rspec-expectations (~> 3.12.0)
112
+ rspec-mocks (~> 3.12.0)
113
+ rspec-core (3.12.0)
114
+ rspec-support (~> 3.12.0)
115
+ rspec-expectations (3.12.0)
107
116
  diff-lcs (>= 1.2.0, < 2.0)
108
- rspec-support (~> 3.11.0)
109
- rspec-files (1.1.2)
117
+ rspec-support (~> 3.12.0)
118
+ rspec-files (1.1.3)
110
119
  rspec (~> 3.0)
111
120
  rspec-memory (1.0.3)
112
121
  rspec (~> 3.0)
113
- rspec-mocks (3.11.1)
122
+ rspec-mocks (3.12.0)
114
123
  diff-lcs (>= 1.2.0, < 2.0)
115
- rspec-support (~> 3.11.0)
116
- rspec-support (3.11.0)
117
- rubocop (1.35.1)
124
+ rspec-support (~> 3.12.0)
125
+ rspec-support (3.12.0)
126
+ rubocop (1.38.0)
118
127
  json (~> 2.3)
119
128
  parallel (~> 1.10)
120
129
  parser (>= 3.1.2.1)
121
130
  rainbow (>= 2.2.2, < 4.0)
122
131
  regexp_parser (>= 1.8, < 3.0)
123
132
  rexml (>= 3.2.5, < 4.0)
124
- rubocop-ast (>= 1.20.1, < 2.0)
133
+ rubocop-ast (>= 1.23.0, < 2.0)
125
134
  ruby-progressbar (~> 1.7)
126
135
  unicode-display_width (>= 1.4.0, < 3.0)
127
- rubocop-ast (1.21.0)
136
+ rubocop-ast (1.23.0)
128
137
  parser (>= 3.1.1.0)
129
- rubocop-performance (1.14.3)
138
+ rubocop-performance (1.15.0)
130
139
  rubocop (>= 1.7.0, < 2.0)
131
140
  rubocop-ast (>= 0.4.0)
132
- rubocop-rspec (2.12.1)
133
- rubocop (~> 1.31)
141
+ rubocop-rspec (2.15.0)
142
+ rubocop (~> 1.33)
134
143
  ruby-prof (1.4.3)
135
144
  ruby-progressbar (1.11.0)
136
145
  simplecov (0.21.2)
@@ -139,7 +148,7 @@ GEM
139
148
  simplecov_json_formatter (~> 0.1)
140
149
  simplecov-html (0.12.3)
141
150
  simplecov_json_formatter (0.1.4)
142
- solargraph (0.46.0)
151
+ solargraph (0.47.2)
143
152
  backport (~> 1.2)
144
153
  benchmark
145
154
  bundler (>= 1.17.2)
@@ -156,17 +165,18 @@ GEM
156
165
  yard (~> 0.9, >= 0.9.24)
157
166
  thor (1.2.1)
158
167
  tilt (2.0.11)
159
- timers (4.3.4)
160
- traces (0.7.0)
168
+ timers (4.3.5)
169
+ traces (0.8.0)
161
170
  tzinfo (2.0.5)
162
171
  concurrent-ruby (~> 1.0)
163
- unicode-display_width (2.2.0)
172
+ unicode-display_width (2.3.0)
164
173
  webrick (1.7.0)
165
174
  yard (0.9.28)
166
175
  webrick (~> 1.7.0)
167
- zeitwerk (2.6.0)
176
+ zeitwerk (2.6.6)
168
177
 
169
178
  PLATFORMS
179
+ ruby
170
180
  x86_64-linux
171
181
 
172
182
  DEPENDENCIES
data/README.md CHANGED
@@ -24,6 +24,11 @@ event loop.
24
24
  - [License](#license)
25
25
  - [Code Of Conduct](#code-of-conduct)
26
26
 
27
+
28
+ ## Dependencies
29
+
30
+ Grumlin works with ruby >= 2.7, but it's recommended to use 3.1 due to [zlib warnings](https://github.com/socketry/async-websocket/issues/42).
31
+
27
32
  ## Install
28
33
 
29
34
  Add this line to your application's Gemfile:
data/grumlin.gemspec CHANGED
@@ -28,10 +28,10 @@ Gem::Specification.new do |spec|
28
28
  end
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- spec.add_dependency "async-pool", "~> 0.3"
32
- spec.add_dependency "async-websocket", ">= 0.19", "< 0.20"
31
+ spec.add_dependency "async-pool", "~> 0.3.0"
32
+ spec.add_dependency "async-websocket", "~> 0.22.0"
33
33
  spec.add_dependency "ibsciss-middleware", "~> 0.4.0"
34
- spec.add_dependency "oj", "~> 3.13"
35
- spec.add_dependency "retryable", "~> 3.0"
36
- spec.add_dependency "zeitwerk", "~> 2.6"
34
+ spec.add_dependency "oj", "~> 3.13.0"
35
+ spec.add_dependency "retryable", "~> 3.0.0"
36
+ spec.add_dependency "zeitwerk", "~> 2.6.0"
37
37
  end
@@ -83,7 +83,7 @@ class Grumlin::Client
83
83
 
84
84
  @request_dispatcher.clear unless check_requests
85
85
 
86
- raise ResourceLeakError, "Request list is not empty: #{@request_dispatcher.requests}" if check_requests
86
+ raise Grumlin::ResourceLeakError, "Request list is not empty: #{@request_dispatcher.requests}" if check_requests
87
87
  ensure
88
88
  logger.debug(self, "Closed")
89
89
  end
@@ -70,7 +70,7 @@ class Grumlin::Transport
70
70
  def run_response_task
71
71
  with_guard do
72
72
  loop do
73
- data = @connection.read
73
+ data = Oj.load(@connection.read.to_str, symbolize_names: true)
74
74
  @response_channel << data
75
75
  end
76
76
  end
@@ -79,7 +79,7 @@ class Grumlin::Transport
79
79
  def run_request_task
80
80
  with_guard do
81
81
  @request_channel.each do |message|
82
- @connection.write(message)
82
+ @connection.write(Oj.dump(message, mode: :compat))
83
83
  @connection.flush
84
84
  end
85
85
  end
@@ -20,12 +20,14 @@ module Grumlin::Typing
20
20
  "g:T" => ->(value) { Grumlin::Expressions::T.public_send(value) }
21
21
  }.freeze
22
22
 
23
- CASTABLE_TYPES = [Hash, String, Integer, TrueClass, FalseClass, NilClass].freeze
23
+ CASTABLE_TYPES = [Hash, String, Integer, TrueClass, FalseClass, NilClass, Array].freeze
24
24
 
25
25
  class << self
26
26
  def cast(value)
27
27
  verify_type!(value)
28
28
 
29
+ return value.map { |v| cast(v) } if value.is_a?(Array)
30
+
29
31
  return value unless value.is_a?(Hash)
30
32
 
31
33
  type = TYPES[value[:@type]]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grumlin
4
- VERSION = "1.0.0.rc5"
4
+ VERSION = "1.0.0.rc7"
5
5
  end
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Grumlin::Vertex
4
- attr_reader :label, :id
4
+ attr_reader :label, :id, :properties
5
5
 
6
- def initialize(label:, id:)
6
+ def initialize(label:, id:, properties: nil)
7
7
  @label = label
8
8
  @id = Grumlin::Typing.cast(id)
9
+ @properties = properties&.transform_values { |v| Grumlin::Typing.cast(v) }
9
10
  end
10
11
 
11
12
  def ==(other)
data/lib/grumlin.rb CHANGED
@@ -4,10 +4,6 @@ require "securerandom"
4
4
  require "oj"
5
5
  require "yaml"
6
6
 
7
- # TODO: use Oj directly
8
- Oj.mimic_JSON
9
- Oj.add_to_json
10
-
11
7
  require "async"
12
8
  require "async/pool"
13
9
  require "async/pool/resource"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grumlin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc5
4
+ version: 1.0.0.rc7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gleb Sinyavskiy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-20 00:00:00.000000000 Z
11
+ date: 2022-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-pool
@@ -16,34 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.3'
19
+ version: 0.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.3'
26
+ version: 0.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-websocket
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0.19'
34
- - - "<"
31
+ - - "~>"
35
32
  - !ruby/object:Gem::Version
36
- version: '0.20'
33
+ version: 0.22.0
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: '0.19'
44
- - - "<"
38
+ - - "~>"
45
39
  - !ruby/object:Gem::Version
46
- version: '0.20'
40
+ version: 0.22.0
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: ibsciss-middleware
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -64,42 +58,42 @@ dependencies:
64
58
  requirements:
65
59
  - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: '3.13'
61
+ version: 3.13.0
68
62
  type: :runtime
69
63
  prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
66
  - - "~>"
73
67
  - !ruby/object:Gem::Version
74
- version: '3.13'
68
+ version: 3.13.0
75
69
  - !ruby/object:Gem::Dependency
76
70
  name: retryable
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
73
  - - "~>"
80
74
  - !ruby/object:Gem::Version
81
- version: '3.0'
75
+ version: 3.0.0
82
76
  type: :runtime
83
77
  prerelease: false
84
78
  version_requirements: !ruby/object:Gem::Requirement
85
79
  requirements:
86
80
  - - "~>"
87
81
  - !ruby/object:Gem::Version
88
- version: '3.0'
82
+ version: 3.0.0
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: zeitwerk
91
85
  requirement: !ruby/object:Gem::Requirement
92
86
  requirements:
93
87
  - - "~>"
94
88
  - !ruby/object:Gem::Version
95
- version: '2.6'
89
+ version: 2.6.0
96
90
  type: :runtime
97
91
  prerelease: false
98
92
  version_requirements: !ruby/object:Gem::Requirement
99
93
  requirements:
100
94
  - - "~>"
101
95
  - !ruby/object:Gem::Version
102
- version: '2.6'
96
+ version: 2.6.0
103
97
  description: 'Gremlin graph traversal language DSL and client for Ruby. Suitable and
104
98
  tested with gremlin-server and AWS Neptune.
105
99